This week I met up with some old colleagues. While talking about what we were all doing now, one person who still worked at the place we worked together mentioned that there had been a change in software architecture. Thus all my old code would be rewritten. This news got me thinking. I’ve been writing software commercially for nearly 12 years and most of my code is no longer used. Three years of work is gone due to my employers going bust. Another 3 and a half years worth was (or will be) rewritten after changes in platform architecture. Two more years of work was retired after completing the purpose for which it was written. One employer from years ago still uses 2 years of coding work – just last month I crossed paths with one of the users who did acceptance testing (he remembered me after 5 years, although neither of us could remember the other’s name) and he said they were still very happy with it. So about 70% of my work, measured by time, is gone and no longer of any use. Is that normal?
I’m not sure what is the appropriate comparison. Engineers and architects build structures that last for many years. I have known people who assisted building houses, power stations, and gas pumping stations. All of which still stand and should for decades to come. However, these are physical things, so are obviously physically harder to construct. Creating software is a thought driven logical process. Perhaps a better comparison is with other professionals dealing with abstract concepts like accountants, lawyers, analysts, etc. Much of their output is transactional in nature: calculating this year’s corporate accounts; writing or checking a contract; or, producing a report. While such work may exist for some time, its utility drops greatly once the reason for its creation has passed. I suppose this is analogous to code still existing in sourcecode repositories long after it no longer runs. In which case still having 30% of my work useful is probably a good record.
However, I don’t find the comparison to other abstract workers wholly compelling. Software developers seem to fall in between them and engineers. We think abstractly for a living, but produce something, even if it is just logic, that has utility beyond the point of its creation. Some computer programs have been running for decades – otherwise there couldn’t have been such an issue around Y2K. Even in the faster moving consumer software world code can hang around. Just today I used a DOS command window – probably some very old code hanging around there.
Perhaps the best way to think about my profession is that it is a discipline of engineering which works with logic and thus allows the perception that its artefacts are easily replaced (even if in reality that often is not the case). Also it is a fairly new profession and as such it is developing and changing rapidly, which also encourages code to be replaced with updated, more modern, versions. As for my record, when I mentioned the figures to my old colleagues they didn’t think it was strange or exceptional in any way. That is probably just modern commercial software development.