An interesting overview by Paul Ford into the world of software development in general – spoken from someone in the trenches – and much of what he rights rings true with me. A very long read, but if you skim or jump around, you are likely to glean some interesting thoughts and ideas out of it:
http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/
His open about what a new Chief Technology Officer (CTO) says when joining a company is a paraphrase of what I have heard all new CTO’s say when they come to an organization:
All of the computer code that keeps the website running must be replaced. At one time, it was very valuable and was keeping the company running, but the new CTO thinks it’s garbage. She tells you the old code is spaghetti and your systems are straining as a result.
And in most cases the statement has some truth to it. Every company has legacy code issues – since business rules change and technologies change. The term “technical debt” refers to a way to estimate the size of your legacy code issues, which is a great analogy, because who is to say when you have too much debt – or how much effort do you want to take to ‘pay down’ your debt. It’s ultimately a decision that business has to make.
In addition, the issues of legacy / outdated code is getting worse – primarily because of technological advances. With all the advances of broadband, new devices and internet infrastructure, new languages and frameworks rise and fall in what seems like 2-3 year cycles. The rise of new javascript frameworks like AngularJS and React in the last couple years, most traditional websites and web applications could be considered ‘garbage’ by a new CTO. Even if you started writing your enterprise application in AngularJS (1.x) today – it will likely be out of date by the time you complete it – because AngularJS 2.0 is soon to be out – which is a huge rewrite of the language. Right now there is a huge explosion of new languages and frameworks, and many people will write applications using a language or framework that will not survive. Once a language dies, programmers no longer ‘speak’ the language, and the application eventually has to be re-written. I have applications that I wrote in the 90’s that I have rewritten at least 4 times as languages progress and the internet has evolved.
One last thought on this article – midway thru the article is a piece titled ‘The Time You Attended the E-mail Address Validation Meeting’. If you have ever wondered about what goes in on meetings amongst software developers, this gives great insight into how a typical technical discussion goes. I have been in many meetings (even email validation meetings..) where the development process goes something like that.
After reading this article, perhaps you will have a better appreciation for the world of coding, the issues of today, and why so much legacy code exists. The software development process and explosion of languages has gotten pretty crazy over the last several years. But software development is still an entertaining and mentally stimulating process for us developers; and every time I rewrite one of my applications… I still learn something and find myself enjoying the challenge.