Practising Best Practises in Your Software Development Process - Why a Learning Organisation is Not Enough (Page 4 of 7 )
It would be easy for me to stop here and say “If you already have a process, well done, you’re on the right track. If you don’t have a process, go and get one, otherwise you’re doomed.” The truth is, most developers already know the mantra, so I wouldn’t be saying anything new if I stopped there. So this really begs the following question:
If developers already know the importance of a process, why do so many of them develop software so chaotically?
By ‘chaotically’, I simply mean in an ad hoc fashion, without following a process. If we think about this a little more, we realise that developers fall into the following three categories:
those that operate without a process;
those that subscribe (and adhere) to a process;
those that know their process but do not implement it, or only partially implement it.
Which of those categories are you in? Given the mountain of available literature on programming best practices and how to manage a successful software project, yet simultaneously the number of stories of software projects that have overrun and failed, I conjecture that most developers fall into the last of the three categories. That is:
Software professionals know what is best to do to develop software, but they don’t (always) do it!
Let’s think of some examples. Do you always comment your code so that the next programmer can understand it? Do you document your program designs? Do you document all the decisions that you make, with justifications as to why you made the decision that you did? Do you build your project’s latest source code frequently to uncover bugs early? Do you analyse what went wrong when aspects of the project were not successful? Do you communicate lessons learned to other members of the team, group, department, or organisation? Do you document surprises that occurred during the project, and feed your ideas of how to prepare for such surprises back into the process? Do you fix errors in your code when you discover them or do you sometimes ‘bury them under the carpet’ in the hope that they do not recur?
OK, so none of us is perfect. But I believe that developers (and others involved in software projects) consistently underachieve because they don’t do what they know to be the best practice.