qntm:
A few weeks ago at work we had a talk where senior developers (including me) were invited to spend around five minutes each talking about our personal software development philosophies. The idea was for us to share our years of experience with our more junior developers.
After the session, I felt that it might be valuable to write my own thoughts up, and add a little more detail. So here we are.
Avoid ground-up rewrites:
By the time the ground-up rewrite starts to seem like a good idea, avoidable mistakes have already been made. This is a scenario which you can see coming from a long way out and you can, and must, actively steer away from.
Warning signs to watch for: compounding technical debt. Increasing difficulty in making seemingly simple changes to code. Difficulty in documenting/commenting code. Difficulty in onboarding new developers. Dwindling numbers of people who know how particular areas of the codebase actually work. Bugs nobody understands.
Compounding complexity must be fought at every turn. Alternate between phases of expansion (new features) and consolidation.
Simplicity:
If you budgeted your time properly (see above), you have time to go back and see if you can do better. C.f. the old chess adage, “When you see a good move, look for a better one.” And another difficult-to-source quote, “I apologise for writing such a long letter, but I didn’t have time to write a short one.”
And perhaps my favorite topic: automating good practice — which I’ll invite you to read on the original post.
Kent Beck says, “Make the change easy, then make the easy change.” I think about that a lot.
Go read qntm’s wisdom and then go read his science fiction.
Leave a Reply