or how the whole IT industry gets it wrong
I was baking this post in the back of my head for about half a year. Two events finally forced to convert it into writing - google admitting a breakin and my discovery of a particular FAA site.
I remember myself as a kid, playing with legos and wanting to build thing with them that legos physically werent capable of. Even back then I wanted to do more with my toys than what they were meant to handle. I carried this over to computers, which soon lead me to linux & BSD world of free unices, where one has all the chance to use the computer in a way he sees fit instead of bowing your head and using it in a way someone else (like Microsoft and more recently Google) intended. This path surely involves lots of experimentations, some failures and some successes, lots of thinking, analyzing, more or less correct presumptions, causes and effects, etc. In general, I developed my own sistematic approach to a problem. Each new solution always consists of past expiriences and here is where my gripe lies.
Expiriences in every area of human knowledge tend to be collected in a form of a knowledge that is collected through a process of learning. This knowledge is then passed on through the process of teaching. This should also include IT scene and it does, but from my experience teachings of IT knowledge include only very rudimentary and basic stuff. All common real world experiences and lessons are missing. So when time comes and a team has to design something reliable in for them new and unexplored area, the result ends with a not-good-enoug products in the best case or a disaster in the worst case.
Why is it so?
Usually such team has no access to previous art in the same area, even if it actually exists. They cannot learn from mistakes others already made and are bound to repeat them. This leads to duplicate wasted resources and combined with "time to market" pressure, inferior products that only cause pain and suffering, are usually optimized for only one or two use cases and are compatible only with some subset of poorly implemented standards. Want some examples? Just look around you and see if there's any gizmo there that does everything it is advertised to do and does it well.
Does it have to be that way?
No. It can be much, much better.
One example of an industry that got it right is aviation industry. Every incident that happens is logged, examined, thoroughly analyzed, conclusions are drawn and recommendations are made what to do in order to avoid similar events in the future. The whole process is somewhat public, but what's most important is that end result is nicely cataloged and available for everyone to learn from. Nobody wants new airplanes to carry the same design mistakes as the older ones, right?
IT industry, on the other side, sweeps almost every negative experience under the rug. Writings about breakins, product development that went wrong, products that failed to deliver are rare. Analyses of what went wrong and how it was taken care of even more so. Most of the stories are shared unofficially, over the beer, among people that know each other and so almost never reach the wide audience they really should be intended for.
It would be nice if we could get a nonprofit organization that would stand behind the formal process of collecting, organizing and presenting such knowledge from the IT scene. Afterall, world should be about collaboration, not competition.