There seems to be much interest in steering software development away from rigid planning and engineering methods as it was tried in the past and more towards a craft and discipline that is not that much precise and predictable and is more indirectly controlled. This year in Chicago we will have a conference on Software Craftsmanship, with Robert Martin as leading speaker. There is a manifesto . And my immediate excuse to write this post is article by Jeff Atwood at Coding Horror:’Software Engineering: Dead?’, which in turn references this article by Tom DeMarco.
It seems that we came to a point to realize that software development process even though it does look like engineering, it is more similar to some other disciplines and that current metaphors we use are not adequate to describe it. I am not sure how far software craftsmanship will go, it is certainly a valuable concept and idea. It moves process of creating software away from McDonalds analogy where every little step will be well defined and even if you are dumb, you just have to follow steps and you would be good. This never worked well with software and failure and exorbitant price of outsourcing projects to far-away places like India are proof of that.
So one trend is moving away from well defined practices in development of software. On the other hand, new practices, that are represented by agile methods of development are coming into view. They require that developers who work, even though they have to follow very specific and well defined process and steps, they need to be well versed in development of the software, semi-educated, copy and paste developers just can’t do this (or didn’t figure out how to do this at the moment).
I think it is good that we are rethinking how to develop software and what are optimal ways. Generally I am all for agile practices, I think they are liberating in many ways and bring quality to software development. They also are not without craziness, like when it is expected that project sponsors start and finance project without any idea about time and cost. Unfortunately this is one of the agile ‘values’. But another time about crazy side.
I am happy to see software development maturing into profession, that can be distinguished by tools, techniques and methods people are using, which has still long way to go. But then, if it was a well defined profession like medicine, who knows if it would be this fun to work, if you already have rigid set of rules and procedures.