The last two developers I onboarded both asked about test driven development. They were shocked when I said TDD is unnecessary for most work. I've tried writing tests first, but over the past 25 years I've found it's very rarely the best approach. And have watched developers on my team struggle with productivity and extra cognitive load trying to make it work. **Development should drive the tests,…
AI coding agents are fast, but they don't know what you know. Without upfront planning, an agent will confidently scaffold an entire architecture around the wrong assumptions. And you won't notice until you're 50 files deep and untangling a mess that takes longer to fix than it would have taken to write. I've been using AI coding agents everyday since mid 2025. The single biggest improvement to my…
As software engineers, we have to go beyond building robust systems. Instead of working on a project for weeks, maintaining merge conflicts, then putting out fires after the feature goes live. An antifragile approach is weekly deployments behind a feature flag. Instead of only focusing on who is making the bugs and mistakes, use them as information to improve the system. **Title:** Antifragile:…
Why this matters for engineers, we negotiate more than you think. Salary conversations, scope discussions, pushing back on unrealistic deadlines, convincing your team to adopt a tool, getting buy-in for a refactor, code review disagreements. Most engineers default to logic and data when trying to win these, but people don't make decisions that way. This book is the cheat sheet for the other 90% of…
Antifragility is my goal for developer experience. When something breaks, I want the fix to make it harder for that same thing to happen again. > *"Wind extinguishes a candle and energises fire."* - Nassim Nicholas Taleb, *Antifragile* (2012) ## The King's stone In the book [Antifragile by Taleb](/books/antifragile-for-engineering-leads), there's a story of a King who wants to crush his son with a…
**What is claude insights:** The `/insights` command in Claude Code generates an HTML report analysing your usage patterns across all your Claude Code sessions. It's designed to help us understand how we interact with Claude, what's working well, and how to improve our workflows. Claude insights uses local cache data from your machine, not your entire Claude account history. Since I created a new…
Covers how to stay honest without torching relationships when everyone's heated and the stakes are real. I picked this up because communication is my main growth edge right now. I'm good at staying calm and thinking clearly under pressure, but my delivery doesn't always land the way I intend. This book gave me frameworks for the conversations where it actually matters. **Title:** Crucial…
Cascade failures happen when small problems trigger chain reactions that take down far more than the original fault. The habit is to stop asking "will this work?", and start tracing what the fault is connected to. > *"A normal accident is where everyone tries very hard to play safe, but unexpected interaction of two or more failures causes a cascade of failures."* - Charles Perrow, *Normal…
A friend of mine recently attended an open forum panel about how engineering orgs can better support their engineers. The themes that came up were not surprising: > Sacrificing quality makes it hard to feel proud of the work. No acknowledgement of current velocity. If we sprint to deliver, the expectation becomes to keep sprinting, forever. I've been hearing variations of this for a while now, but…
The original egoless programming principles are about mindset. Be kind. Don't take it personally. Critique the code, not the coder. Good advice, but mindset strains under pressure, fatigue, and deadlines. At 4pm on a Friday with a production bug, nobody's thinking about Weinberg's commandments. Systems hold when willpower won't. Structure drives behaviour. ## 1. Make the right way the easy way.…
My first experience with "critique the code, not the coder" was from a tech lead who had a printout of the ten commandments of egoless programming pinned on our office wall. They would say we are not our code, but still savagely roasted both coder and code. I didn't really get it until years later when I did a spit-take at some horrendous code. After wiping my monitor, I checked to see who wrote…
A new starter, second week on the job, pushed a change with an undefined variable. It passed testing and passed code review. Then the service team's phones started ringing because users couldn't log in. It's easy to blame the new starter or code reviewer, but an undefined variable in a 500 line PR is easy to miss and trivial to catch with static code analysis. We were asking humans to do what CI…
When the reviewer isn't spending cognitive load on things the coder or CI should have caught, they can go deeper on the things that need human judgment. It's hard to get the right balance between the extremes of spending too much time going line by line vs giving it a quick skim and seeing if CI tests pass. Code review should be a collaboration. The question we should ask ourselves is "how can we…
With chatbots and coding agents we've all experienced those moments that make us stop trusting the first answer. From cheerleading to making stuff up to drifting off course. That's why sometimes we need to bring in a second AI (or more) and start using AI as an investigation partner instead of solution provider. **Politeness bias:** I was showing a colleague how to use a chatbot help with a MySQL…
At work someone asked how to rank higher. I said wrong question, first check if you're sabotaging yourself. The most common problem is people make it harder for Google to find and/or understand what their site is about. I tried some SEO score sites, but they gave too much information. I just wanted to see the factors that were hurting the most. That's when I thought this might be a fun project to…
When I was a kid, adults kept telling me things were impossible. They were usually right, candy is not the cornerstone of any nutritious breakfast. But some impossible mission claims were worth testing. ## Counting to a Million Without Saying a Word > "It's impossible for someone to count to one million, that takes too long." I remember trying to calculate how long it would take me to say each…
When I was a kid I wanted to be a doctor because my name is MD Hansen and I wanted MD Hansen MD on my office door. My passion for coding was too strong for that path, but somehow by fate or destiny from 2007 onwards my main focus has been on health tech. My wife and I moved to Melbourne in 2013 after the Christchurch earthquakes. We weren't planning to stay, just a year then somewhere else, maybe…