Archive for June, 2013

Software development has changed a lot in just a few years. I remember not very long ago that it was common and expected to work long hours, even pull all nighters just to be able to meet a deadline or worse because the deadline was the following day and there were still dozens of defects to be fixed so the deliverable would barely work. Those days, fortunately, seem to be long gone. I have not been in a project where I have had to do those kind of stupid things, of course there have been times that I have worked a little overtime but those have been the exception rather than the rule.

Unfortunately there are a lot of managers who were developers in those days who still think that we live in those days and expect their development teams to work in that fashion. Not only expect it, but demand it.

Quite recently I was assigned to a project for one of the major credit card companies and we were having our planning game for the upcoming iteration. One of the stories was particularly large so we suggested to break it down in more manageable pieces and gave our estimates to which one of the customer’s managers said, and I quote, “I can lock down a couple of guys in a room and they will have this feature ready in a couple of days”. Needless to say every single one of the members in the team was quite upset about this remark. This was not a matter of challenging our estimate but to question our professionalism. Besides, it is widely known these days that this is the worst way of developing software since it is completely counterproductive and error prone, by the twelfth hour both guys would be making careless mistakes which would generate several very hard to debug defects and the readability of the code would be questionable to say the least.

Anyway, putting aside the fact that we were quite offended by his comment, you can probably imagine how this manager visualized how his team of a couple of guys could deliver his feature. In the end there is absolutely no doubt in my mind that these two guys would pull it off, I have seen it many times before, some brilliant hero style developer getting a required feature to work in record time just before the deadline and he saves the day.

Of course as time goes by this feature will have to be maintained, defects will have to be fixed and requirements will change and guess what, the only person capable of doing that maintenance would be the hero developer who wrote the code because it is so tightly coupled and so tangled up that he is the only one who can understand what it is doing. Of course there would be no tests whatsoever so every time the code would get changed there would definitely be regressions all over the place. Every developer in the organization would dread the idea of working on that piece of code. Not to mention the huge expense these maintenance efforts would be.

I find it hard to believe, and really sad, that there are people, managers and developers alike, who think that we can and should develop software in this fashion. It almost seems as if these people have been living under a rock and have not heard anything about the trends of how to increase the quality of a software product. These people truly believe that the effort put on properly engineering the code and covering it with tests is a waste of time.

To be honest, sometimes I feel I am on the losing end of the battle and the vision of seeing software being developed with discipline and sound engineering practices is but a dream. But you know what, I do not care. I will keep pushing for building software with all the quality characteristics that so much literature, both off an online, is talking about. I will keep fighting against the idea that software development is somewhat of an art; that has got to stop. I will keep trying to evangelize as many people as I can and someday, maybe, we will see that software is built the same way as buildings, bridges, cars, or airplanes, with repeatable practices and solid discipline. I know I am not alone, there are lots of people who are striving for this, and we really hope you will be on our side.