Saturday, June 27, 2009

Building software systems

Ok, so the art of software architecture is relatively new compared to building architecture, vehicle architecture and other sciences that have been around for a while. They have matured such that there are a set of best practices that govern them so that its very difficult to go wrong. After all how many times do we hear of building collapses and a vehicle construction gone horribly wrong? Very rarely right?

So the good thing here is that software architecture can learn from these other disciplines. We don't have to make the same mistakes the ancient building and vehicle architects made while they learnt their trade. Of course I'm talking from a principle point of view.

Unfortunately, most software development teams seem to forget this. There are plenty of real world success story examples out there that we can draw from, but unfortunately we seem to have blinders on. The most significant example I think is this,

- Before building anything (a large sky scraper for instance, or even our little two storied house) the first thing thats done is that a solid foundation is laid - for a vehicle its the chassis. Once the foundation is complete, only then do they construct each layer, and its a layered approach, one floor at a time.
SW: We do have similar qualities here, but how often have teams forgotten the importance of laying the right foundation. How often have teams started construction of a huge project on work in progress framework code? And what does this result in? several iterations cause there are soo many flaws in the system - while the framework is being refined the final product is also being adjusted and re-adjusted. Project managers may think that starting early will be advantegous, but instead the net result is that there are soo many defects and overall instability resulting in many more iterations to fix them resulting in the project taking even longer. Too many moving parts in my opinion does not constitute to a stable release.

The well established software giants do this right, but soo many of the smaller software houses keep making the same mistake. By making this mistake once, they learn the invaluable lesson of how NOT to do things in the future right? :) but alas I've seen the same people making the same mistakes over and over again.

Search This Blog