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!