Source code control, change management, modeling, testing and project planning are skills that distinguish professional programmers from “coders.” When the PC revolution displaced the entrenched bureaucracy of the mainframe and mini computer of the “Data Processing Department,” there were lots of babies thrown out with the bathwater. Every Tom, Jane or Mary who could code a macro in 1-2-3 then worked out hex codes for 132-column print, batch files, then created dBASE tables. One day they were brave enough to try to change the printer ribbon, the next they are writing multi-tier, distributed, transactional, multilingual applications. So, many folks didn’t have the advantage of computer science training that teaches methodical software development. The last twenty years has been a thrashing attempt to bring back the reliability (without the cost and time delay) of committee-driven waterfall development methodologies in a Rapid Application Development, Extreme Programming, Cyclic Development or another Personal Software Process.
One of the many ugly truths that IT doesn’t like to admit is that most of the folks out there delivering applications are amateurs. It’s why, in 1997, I presented “It’s the Process, Stupid!.” Because there is not one “generally accepted practice” of software development, there are huge variations in the amount of care, professionalism and engineering that’s brought to bear on software development tasks. In many of the shops I consult with, the line workers often know there ought to be a better way, but getting middle- and upper-management buy-in to invest in tools and training is difficult. Solo practitioners are on their own to work it all out. Some fly by the seat of their pants and get away with it; others dive in too deep and get bogged down with complexities of managing the tools. Another bunch decide against anything Not Invented Here and whip up their own source code control techniques, making daily ZIP files and hoping to add the right arguments to their copy commands. Rarely do these tools support branching, labeling, rollback, point-at-time images, reporting or the other key SCC features.
SCC may be part of Programming 101 now, but when did your client take the course?