But anyone in the IT business (like myself) also knows that implementing IT security is expensive (especially in development time).
I think these costs are exaggerated most of the time. When building software with security in mind from the beginning, the required extra development time is almost negligible. The problem lies in many existing libraries and framework which are insecure by design, or where security was not considered during development. When these are used, securing the whole system becomes prohibitively expensive.
When thinking somewhat about that issue, it seems to be an instance of the same problem we're discussing here. Let me explain.
If Zhoutong and his friends had been "old style" coders, they'd picked a general purpose language and just some very basic libraries and built the whole distributed Bitcoinica application from ground up. And when considering the use of some additional framework, the'd spend days to weeks to understand that framework in and out. For example, they'd probably dissected the source code of the standard bitcoin daemon and replaced the Berkely DB by another database fitting better into the general picture. As an by-product the resulting system would have a reasonable amount of security built right into the core. Just brilliant -- now we're talking rather about several man months of work.
But that's probably not what they did. (note,
the following is just a guess. I might be wrong here!) They happened to know how to apply some web application toolkit set plus they happened to know how to use some cloud hosting service. So this was just a perfetly suitably skill set, allowing them to concentrate on coding up the finance mathematical part of the business. Thus, while the "proper coding craftsman" would still be dissecting other people's framework code and bothering about possible sublte concurrency and security issues, they where allready making money.
This is exactly the equivalent to trading on leverage. You achieve an impressively amplified effect by relying on borrowed knowledge and skills (living in the toolkits and services you use to code up your App). And according to the predominant opinion in the open source culture, that is actually
the right thing to do. You know, the cathedral and the bazar.
And now something nasty happened and some script kiddy used a blatant security weakness to hack Bitcoinica. And all of a sudden, everyone yells and points with fingers upon both Zhoutong and the Bitcoin Consultancy, calling them unprofessional, sketchy and harmful for the Bitcoin idea.
So what are the criteria, and who judges?
--Ichthyo
At first, we should probably define what you mean by "old style coders". Does it mean that they refuse to use libraries in order to avoid duplicating effort? If so, I'd rather call these people "students", because that's what the typical student will do: Re-implementing something just for the sake of learning how it works. Not a bad decision for personal progress, but (as you stated correctly) not useful on a competitive market as it will take many extra months.
But this is not what I was talking about. A good coder who is serious about security does not refuse to use libraries. But he will choose secure libraries (also, secure programming languages, secure frameworks etc.) in order to get his stuff done. This may mean a little bit of extra time
once in your life (at the point where you have to research what tool to use the first time), but when it comes to actually implementing a project, the extra time needed becomes negligible.
I think it is dangerous to spread the rumour that security is expensive or time-intensive because it leads to a "don't care" mentality in executives which would not be necessary if they were working with the right people.
However, I will not engage in speculations about how this relates to bitcoinica. It might well be that the developers used perfectly secure programming frameworks, and wrote their code diligently, having security breached by a mistake from their hosting platform, for example.