Software Development

How to Build Maintainable Software

One of my favourite podcasts is Maintainable by Robby Russell. I’ve just caught up with the episode with Professor John Ousterhout called “It’s Not You, It’s The Codebase”.

A really good listen if you have the time, but if not I’ve summarised below:

  • Reverse engineering – it’s hard, and you can’t really teach it
  • Software design and decomposition – build the smallest useful pieces.
  • Always write documentation in addition to writing ‘good code’. Coming back 3-6 months later and you will have forgotten how it works no matter how good your code.
  • Definition of Done is nonsensical – there is no definition of done.
  • On technical debt – I didn’t agree with the comment about “going to your boss to ask for time to work on refactoring/technical debt”. My advice is, if your boss doesn’t know, then they are an idiot.

The learning for us is this – to make sure your code is maintainable:

  • Build in small increments
  • Refactor to remove debt regularly
  • Set an example for others to follow – lead through good coding practice

Aside: I love the sound of John Ousterhout’s course at Stanford, where he claims to teach the only undergraduate course on software design. I’m not sure this is a credible claim or if I understood it right, but I love hearing the chutzpah!



Related articles