Blog

Writing

Notes on engineering craft, eXtreme Programming, teams, and the practice of building software well.

Jun 26, 2026

Trust Is the Real AI Skill

The journey from questioning every word AI says to trusting it enough to delegate — and what that shift actually means for how we work.

Mar 10, 2026

Layers That Matter: A Gentle Introduction to System Architecture

Good software is more than working software. In this post, I walk through the three layers every system should have — domain, application, and infrastructure — why keeping them separate matters, and what happens when you don't. Plus a word on what this means when you're building with AI.

Mar 6, 2026

The Guru Is Dead. Long Live the Thinking Engineer.

The archetype of the coding guru is dying, and that is a good thing. As AI transforms our industry, the ability to think critically and delegate effectively becomes more valuable than pure coding expertise.

Dec 12, 2025

Stopping for now

A brief note on pausing my weekly blog posts to reflect on future content and connection with my audience.

Dec 7, 2025

Learning to lead: thoughts on the path to grow as an individual contributor

Reflections on stepping into a leadership role as an individual contributor, embracing new challenges, and personal growth.

Nov 28, 2025

3 Principles to Keep your Quality Bar High

Keeping a high-quality bar in your codebase is essential to deliver value consistently over time. Here are three principles that can help you achieve that.

Nov 21, 2025

Being Skeptical in the Age of AI

How critical thinking helps me navigate the flood of AI-generated content

Nov 1, 2025

When TDD doesn’t work (and how to make it work)

Test-Driven Development (TDD) is a powerful methodology, but it can present challenges in certain scenarios. This post explores common pitfalls and strategies to navigate them effectively.

Oct 24, 2025

Technical Debt: A Framework for Prioritization When Everything is 'Critical'

A framework to prioritise technical debt in your software projects, balancing the need for speed and long-term maintainability.

Oct 17, 2025

Simplicity improves your work now — and pays even more for the future.

Learn why simplicity in software development improves code quality, reduces cognitive load, and prepares your codebase for AI integration. Master the KISS principle.

Oct 10, 2025

What I would have loved to know when I was a junior developer

Essential advice for junior developers on simplicity, testing strategies, and growth mindset. Learn the KISS principle, TDD benefits, and how to overcome imposter syndrome from a senior engineer with 15+ years experience.

Oct 3, 2025

On the Importance of Mentoring as a Senior Engineer for Developing Your Team.

Master the art of technical mentoring with the 70-20-10 learning model. Learn how senior engineers can balance active guidance with independent learning to accelerate junior developer growth and build stronger teams.

Sep 26, 2025

3 Ways Rally Racing Can Improve Your Pair Programming

Discover 3 powerful lessons from rally racing reconnaissance to transform your pair programming. Learn how predictability, peer collaboration, and continuous reflection can boost team performance and code quality.

Sep 19, 2025

What Most System Design Interviews Get Wrong

Why system design interviews fail candidates and companies. Learn how evolutionary design and incremental thinking create better technical assessments that evaluate real engineering skills instead of snapshots under pressure.

Sep 12, 2025

What Pull Requests are for – and What They Are Not.

Stop using Pull Requests wrong. Learn the true purpose of PRs for team alignment and quality assurance, common anti-patterns to avoid, and an ideal PR workflow combining pair programming with trunk-based development.

Sep 5, 2025

Why Pair Programming really works for me.

5 reasons why pair programming transforms software development. Master driver-navigator roles, continuous feedback loops, and communication frameworks that boost code quality and reduce interview anxiety.

Aug 24, 2025

TDD will change the way you see software development.

Transform your software development approach with Test-Driven Development (TDD). Discover how incremental thinking, proactive testing, and fast feedback loops can enhance productivity, reduce complexity, and improve code quality.

Cookies & analytics

I use Google Analytics to understand aggregate site usage. Accept to allow analytics cookies. Decline to keep only essential cookies.