If I were to state that software industry is in crisis, I would be guilty of stating the obvious. The field of software development has been in crisis ever since the early ‘90s, if not even earlier than that.
But what’s important is to realize that nowadays, this crisis has reached major proportions. I know I sound like yet another ‘the sky is falling’ FUD protagonist, but there simply isn’t any other way to look at the problem. A significant number of mid sized and large corporations worldwide have been ‘once bitten, twice shy’ when it comes to making any significant investment in their software practices. Thus, the status quo situation is growing stale at a breakneck pace.
So why am I bringing this up? Simply because I am sensing an impeding tension building up between the proposed practices of software industrialization as opposed to staying with the tried-and-true practices of crafting software by hand.
Software industrialization (you can read more about it here) proponents insist that, in order to get out of the software development slump, we must make a transition from the hand crafted way of developing software to a full blown industrial assembly line model.
Fine. Automate as much as possible, rendering the whole process much more affordable. What could be wrong with that?
But not so fast. At the same time, while we’re getting caught in endless deliberation over whether Microsoft or Java or Oracle or SAP or LAMP or…? should be the worldwide software ‘industrializator’, another light at the end of the tunnel is becoming more and more visible. This light is what I would call the ‘smart servant’ approach.
So, instead of the proposed ‘dumb workforce’ mass industrialization model, an alternative model is being proposed whereby a handful of smart servants should be deployed to accomplish the workload of huge army of faceless, nameless drones.
In other words, instead of generating faceless, nameless reams of cheap software code, the alternative approach offers the possibility of hand crafting very high quality software code that will bring additional power to its users.
The ‘smart servant’ principle claims that it is better to employ a smart person or device, who will be able to accomplish complex tasks upon hearing just a handful of simple commands, than to employ an army of dumb devices who will have to be fed large lists of aggregated complex instructions, to be followed blindly.
The question, of course, is why should a smart servant be a better model?
Before I offer my views on why this should be so, I’d like to pause for a minute, and see if anyone would like to tackle this little challenge?
And so, without further ado, I’d like to now open the floor for a brief discussion on this topic…