Real life coding

Tag Archives: brownfield development

When we learn software development for the first time most of us assume that we will be working on new and exciting applications using all the latest sparkly technology and a blank canvas to fill with our sophisticated architectural solutions. The truth is that most development work is brownfield development; maintenance and additions to existing software that was originally written by someone who no longer works there.

If we’re honest, brownfield development is nowhere near as much fun as starting afresh but, especially in business systems, it’s a developer’s day-to-day bread and butter and we just have to get on with it and work within the constraints. We can’t all be rockstars.

To borrow an analogy from Richard Dawkins: we’re given an old bi-plane made of wood and canvas and expected to turn it into a jet fighter. The problem is that we can’t afford to just start afresh. After every small change we make the plane must still be able to fly; if the plane doesn’t fly we can’t keep paying for improvements.

Brownfield development is harder than blue-sky projects and it less fun. If you’re lucky and you stick with it long enough you may get a chance for a rewrite to take advantage of new languages or technologies, but these only happen once in a blue moon. Once the rewrite is done, it’s back to maintenance again.

So it’s harder and less fun – you’re a professional, not a hobbyist, and this is what you get paid for, this is what you do. Take pride in your ability to do the hard work and take pride in the improvements that no-one else will notice (people notice errors, they don’t notice the lack of errors). Introduce better techniques and technologies piecemeal and take pleasure in the fact that you’re slowly making life easier for your future self by improving the code quality.