In the rapidly evolving landscape of software programming and engineering, methodologies like Agile development drive us to focus on the best performing code.
This approach is understandable, but the downside is that lesser elements of the project are sometimes left by the wayside. Not only is data that might be useful in the future forgotten, developers run the risk of building on previous ‘genetic’ mistakes, which in turn leads to wasted time and cost, the antithesis of what Agile is all about.
In the same way that species evolve in the real world, software development is as complex and multifarious as our own evolutionary path, so the value of documenting every stage of our growth cannot be underestimated if we want to remain fit, profitable and ready for change.
This is almost like answering the question, “how did we get here?” While we can arguably never know for sure as human beings, as software engineers and project managers we can answer this question in comprehensive detail right from the big bang, or let’s say the start of the project. The argument surely is that if we can, then we have a responsibility to see that we should.
One way to create this historical record of software evolution is through software configuration management (SCM), which provides a much-needed chronological perspective and allows us to never have to reinvent applications when we don’t want to.
Just as a project manager can examine the source code repository to help debug and fix a problem, so a naturalist would examine the history books and population data if a species were seen to rapidly mutate or show signs of ill health in some way.
Governing the upper level of this argument is the suggestion that everyone and everything is important. This means that SCM also allows us to pick up elements of a software project that were not initially implemented, but were later found to be useful as the product and its use cases naturally evolved.
Arguably, all development of IP may be of value – if not immediately, then perhaps in the future.
Is there a danger of not taking this approach? Well, if the evolutionary process is not documented it may be lost forever, meaning that future developers miss out or compound old errors.
After all, many IT vendors patent almost everything they produce in a ‘just in case’ manner. SCM allows you to have this control on the total lifecycle and ecosystem inside an individual project.
Pushing Agile systems forward in 21st Century development teams without a code management directory and reference point is a haphazard approach.
It also risks bypassing the value of a data ‘gene’ pool, where initially rejected software modules and components can be housed in the event they become relevant at a later date. In life, as in software application development, evolution and revolution both require substantiation.
Dave Robertson is VP, International for Perforce Software, a leading supplier of software development tools.