Automation and the Art of Software Maintenance
Editorial Note: I originally wrote this post for the SubMain blog. You can check out the original here, at their site. While you’re there, check out CodeIt.Right for automating your code review process.
I have long since cast my lot with the software industry. But, if I were going to make a commercial to convince others to follow suit, I can imagine what it would look like. I’d probably feature cool-looking, clear whiteboards, engaged people, and frenetic design of the future. And a robot or two. Come help us build the technology of tomorrow.
Of course, you might later accuse me of bait and switch. You entered a bootcamp, ready to build the technology of tomorrow. Three years later, you found yourself on safari in a legacy code jungle, trying to wrangle some Sharepoint plugin. Erik, you lied to me.
So, let me inoculate myself against that particular accusation. With a career in software, you will certainly get to work on some cool things. But you will also find yourself doing the decidedly less glamorous task of software maintenance. You may as well prepare yourself for that now.
The Conceptual Difference: Build vs Maintain
From the software developer’s perspective, this distinction might evoke various contrasts. Fun versus boring. Satisfying versus annoying. New problem versus solved problem. My stuff versus that of some guy named Steve that apparently worked here 8 years ago. You get the idea.
But let’s zoom out a bit. For a broader perspective, consider the difference as it pertains to a business.
Build mode (green field) means a push toward new capability. Usually, the business will regard construction of this capability as a project with a calculated return on investment (ROI). To put it more plainly, “we’re going to spend $500,000 building this thing that we expect to make/save us $1.5 million by next year.”
Maintenance mode, on the other hand, presents the business with a cost center. They’ve now made their investment and (at least partially) realized return on it. The maintenance team just hangs around to prevent backslides. For instance, should maintenance problems crop up, you may lose customers or efficiency.