Is My Developer Career JUST Maintenance?!
Dev Leader Weekly 116
TL; DR:
You’ll spend a lot of time on existing systems
Existing != Only Bug Fixes
Check out the livestream (or watch the recording) on Monday, November 17th at 7:00 PM Pacific!
Greenfield Dreams
Every developer, at some point in their career, has imagined the thrill of starting something brand new.
A clean slate.
No legacy code.
No half-baked patterns from someone long gone.
Just you, your keyboard, maybe your favorite LLM and agent tools.
... And infinite potential.
Then reality hits.
You join a company, and instead of greenfield projects, you’re working in a massive, existing codebase. You’re reading other people’s code. You’re patching bugs, writing migrations, and adding features to systems you didn’t design.
Suddenly, you’re asking yourself: “Am I just maintaining and extending this existing system? Is this what software engineering really is?”
Spoiler: yes. For most of us, this is what our careers look like. And that’s not a bad thing.
Let’s break down why most of software engineering is working in such systems, what makes it challenging in its own right, and how you can thrive when your job isn’t starting from scratch. You can check out my take on this on Code Commute:
Why Existing Systems are the Default, Not the Exception
If a company can afford to hire you as a software engineer, it’s probably because they already have paying customers. That revenue comes from existing products and services -- which means your role often revolves around maintaining, improving, and extending what already works.
Greenfield projects happen, but they’re less common. Starting new things may have a higher “risk” for the business because it’s potentially an investment into something new vs bolstering an existing offering. Most companies don’t have teams that spin up brand-new applications every quarter. They’re focused on evolving their core products, fixing pain points, and staying competitive.
Software that earns money needs to evolve, grow, and adapt. That means adding features, improving architecture, cleaning up old decisions, guiding migrations, and shaping the product’s future.
You might want the thrill of “new,” but the world runs on the systems that keep businesses alive. Every deployment, every fix, every new feature that improves reliability or user experience is part of that story.
... If that sounds bleak, I promise that it’s not.
The Myth: Greenfield Means Innovation
Many people view greenfield projects as the pinnacle of creativity. And sure, they’re fun. You might get to choose your stack, patterns, architecture, and tools with total freedom. Or, well, more freedom 😃
But freedom is not the same thing as innovation. Greenfield gives you space, but constraints give you clarity.
When you build inside an existing system, innovation looks different:
You design systems that won’t break for thousands or millions of users.
You rethink flawed patterns and evolve them slowly and safely.
You introduce new architecture while supporting old APIs.
You reduce operational load through automation and tooling.
You solve performance problems rooted in real usage.
You modernize parts of the stack without disrupting the business.
That’s not “just maintenance.” That’s high‑leverage engineering. Operating within constraints is where we have some of the most creative solutions.
Let’s go through an example:
Let’s say you’re working on a customer management system. You’d prefer C# (obviously!) and SQL Server, but the team uses Node.js with MongoDB. You don’t get to pick the stack. The service already has 10,000 monthly active users, and your new feature requires adding new data fields.
If this were greenfield, you’d just tweak the schema and deploy. No big deal -- you aren’t breaking anyone, since there aren’t any users.
But in production with thousands of users? Now you have to think about:
Backward compatibility
Data migration strategies
Rollout schedules and feature flags
Deployment windows and rollback plans
Downtime risk and monitoring
That’s not boring. That’s complex. It’s real-world engineering.
Greenfield is creative freedom. Maintenance is creative constraint. Both require skill -- but the latter teaches you how to operate inside reality, not fantasy.
When You Crave More Variety
Some developers thrive on the stability and depth of long-lived systems. Others crave new challenges, new stacks, new beginnings. If you’re the latter, there are a few paths to explore:
Join a prototyping or innovation team.
Big tech companies (like Microsoft or Google) often have internal teams focused on rapid prototyping or R&D. These roles feel closer to greenfield work. BUT there is a trade-off that people don’t often consider: you might be throwing away most of the things you build. Get comfortable with that.Do contract or freelance projects.
Freelancers often start new projects every few months and work with different clients. Depending on your appetite, that can mean new domains and new tech stacks. That might help scratch that “new project” itch.Build personal side projects.
You can keep your curiosity alive by creating small apps, tools, or experiments on your own time. They don’t have to make money -- they just have to stretch your skills. For me, this is something that I’ve always relied on when I want to do exploratory work (but I realize not everyone wants to make time for this outside of their working hours).
Turning Maintenance Into Mastery
If you’re going to spend most of your career maintaining and extending systems (and you probably will), the goal isn’t to fight it. It’s to master it.
Here’s how to do that:
Treat systems like living organisms. Observe how it behaves under load, during deploys, and across releases. Study its quirks.
Learn how to read code deeply. Reading existing systems is one of the most underrated developer skills. It’s how you learn patterns, anti-patterns, and history.
Document what you discover. Don’t just add features -- add understanding. Write notes, update READMEs, capture lessons learned. Build this skill up and you’ll help others along the way.
Automate the boring stuff. If you find yourself making repetitive maintenance changes, script them. This is how maintainers become force multipliers.
Improve the developer experience. Help make it easier for the next person to work on the same system. Good maintainers leave codebases in better shape than they found them.
Some food for thought: Now that we have so much more AI tooling coming to the forefront, how might you use AI to make some of this more streamlined for you?
The Big Picture -- Maintenance Powers Innovation
Without stable systems, there’s nothing to innovate on. Greenfield projects depend on existing platforms, APIs, and infrastructure built and maintained by others. Maintenance isn’t the opposite of innovation -- it’s what enables it.
Even the most exciting new features, frameworks, or apps eventually become legacy systems that someone has to maintain. Every “greenfield” becomes “brownfield” eventually. And when that happens, the developers who’ve learned how to navigate and evolve complex systems are the ones who thrive.
Final Thoughts
Feeling like “just a maintainer” is a common early‑career worry, but it’s built on a misunderstanding. A great deal of VERY real engineering challenges live inside existing systems, not outside them.
You’re learning the skills that make professional engineers valuable: operating within constraints, respecting existing systems, and improving reliability at scale.
And if you ever miss the thrill of greenfield work? You can always chase it through side projects, freelancing, or prototyping roles. But never underestimate the value of being the person who can take something complex, imperfect, and:
Keep it running
Make it more performant
Make it more reliable
Extend it with more capabilities
That’s where the real craft of software engineering lives.
Join me and other software engineers in the private Discord community!
Remember to check out my courses, including this awesome discounted bundle for C# developers:
As always, thanks so much for your support! I hope you enjoyed this issue, and I’ll see you next week.
Nick “Dev Leader” Cosentino
social@devleader.ca
Socials:
– Blog
– Dev Leader YouTube
– Follow on LinkedIn
– Dev Leader Instagram
P.S. If you enjoyed this newsletter, consider sharing it with your fellow developers!



