There is a condition known as "Shiny Object Syndrome". It’s when people are distracted by anything new, usually at the cost of what they are currently doing. It’s that urge to try a new tool, buy a new phone, follow a new trend.
Programmers are not immune to this syndrome. New frameworks, new versions, new IDEs. In beginners, it is often the belief that a different language will be easier to learn or lead to more jobs.
This may be part of why many programmers want to work on a new system. I found a wonderful blog post by Greg Jorgensen about the joys of maintenance programming. It’s old, but well-written. Here are some of the advantages he describes:
Better debugging skills
It takes more effort to debug somebody else’s code than your own. You actually have to work through the code step by step. With your own code, it’s easy to assume you know what’s wrong and how to fix it. So you will learn better debugging skills.
Better programming skills
Good code is easier to debug and extend than bad code. When you work lots of code written by different programmers, you learn to tell the difference. And you can apply that knowledge when you write your own code.
Better optimization skills
You have to tackle real performance issues, not hypothetical ones. The original developers may have done some optimization, so you need to go deeper. That’s a great skill to develop.
Learn new skills
Yes, you won’t be working with the newest tools. But you’ll get to learn languages and tools that you would not have tried otherwise. And your SQL skills will improve, because most systems use databases.
Better specs and real agile development
Every new system suffers from changing specs and priorities. When it comes to bugs and enhancements, tasks are smaller and better defined. You and the client are more likely to have the same understanding. You can make incremental releases. And you work with real users and get immediate feedback.
Better business skills
Production software addresses a real business need. You’ll learn how it affects business, and why it does or does not work for the users. Understanding business is great for your career.
Better people skills
You will work more with real users and less with other programmers. So you’ll learn to listen to and talk to people who don’t think like programmers.
Happier clients
On new projects, every spec change leads to a cost or delay, which clients hate. But when you fix a real problem on a system people already use, you make the users happy.
What do you think? Have you enjoyed the benefits of maintaining existing systems, or would you rather work on developing a new system with cutting-edge technology? I’d love to hear your thoughts.