Skip to main content

Building Software is much like buying a house

10/20/20202 min read

Warning: This is a stream of consiousness. It is a hot-take that is not meant to fit every case.

When buying a house, if you've got time, you'll shop around to get a good rate on your mortgage, if you're in a rush, you'll take a bad mortgage rate that gets the deal done quickly thinking you might switch to a better rate later.

When you're building software, if you've got time you'll implement it in a way that considers future maintenance and extensibility. But if you don't, you'll build it in a way that gets the job done quickly.

But the similarities don't end there.

When you don't pay off your bad-rate mortgage on the house, the interest kicks in and makes it harder to pay off which increases your overall debt. This can be an overwhelming situation to be in, it can start to feel like a runaway freight train.

Similarly when you have taken the quick route in software, but don't go back and add in the bits that would make it maintainable and extensible, it gets harder and harder to do that as more areas of the codebase rely on that code and more features are built on top of it. As time passes, you get further away from the headspace you were in when you wrote it.

Back in the house scenario, you can start paying off monthly mortgage bill and even paying a little extra but because you've incurred so much interest over the last few years, the total is still going in the wrong direction.

In the codebase you can introduce new standards which all new code will be written in, this is the equivalent of starting to pay off that loan but it won't help pay down the debt that is ever increasing as the app gets more and more complex.

To get back to a manageable situation with your house, you need to pay off a big chunk of the mortgage in one go then continue to pay monthly instalments to this debt so you can eventually get your head above water.

Similarly, you also have to pay off a large chunk of your technical debt to get your codebase into a manageable state then your need to continue paying that debt down by changing the way you work to deliver quality, not quantity.

© 2021 by Madole.
GitHub Repository
Last build: 1662286611335