Essays & Blog

This is a collection of the best writing to appear on my blog. I've marked my most popular with a star ⭐. You might also be interested in:

Categories

  1. Top Ten
  1. Adopting Agile
  2. Coding
  3. Collaboration
  4. Design
  5. Geekery
  6. Iteration Planning
  7. Large-Scale Agile
  8. Leadership
  9. Metrics
  10. Quality
  11. Release Planning
  12. Requirements
  13. Tools
  14. Writing

Top Ten

Dependency Injection Demystified22 Mar, 2006
A 25-dollar term for a 5-cent concept.
Testing Without Mocks: A Pattern Language16 Feb, 2023
How to write fast, reliable tests without mocks or spies.
The Agile Fluency® Model: A Brief Guide to Success with Agile6 Mar, 2018
A model for getting the most out of agile ideas. (Coauthored with Diana Larsen; hosted at martinfowler.com.)
Continuous Integration on a Dollar a Day27 Feb, 2006
An easier, cheaper (and better) way to do continuous integration.
Don’t Measure Unit Test Code Coverage31 Jan, 2019
If you’re leading software teams, don’t measure unit test code coverage. It’s worse than useless; it will actively lead your teams astray.
Bjorn Freeman-Benson: Three Challenges of Distributed Teams19 Feb, 2019
An experienced software leader describes his experiences with distributed teams.
Red-Green-Refactor30 Nov, 2005
Test-driven development in a nutshell.
Cargo Cult Agile14 May, 2008
Following the rituals of agile development without understanding the underlying ideas.
Large-Scale Agile: Where Do You Want Your Complexity?18 Jan, 2019
How do we manage the complexity of coordinating many engineering teams?
Continuous Integration is an Attitude, Not a Tool18 Aug, 2005
CI tools make it easy... to do the wrong thing.

Adopting Agile

Kaizen and Kaikaku8 Feb, 2009
Where agile adoptions go wrong.
The Decline and Fall of Agile14 Nov, 2008
It's human nature to only do the stuff that's familiar and fun, and that's what has happened with Agile.
Watch Out For These Common Problems5 Jun, 2008
The most common issues I see new teams struggle with.
Cargo Cult Agile14 May, 2008
Following the rituals of agile development without understanding the underlying ideas.
Should We Adopt Scrum or XP?26 Apr, 2008
A thoughtful look at two methodology choices.
Marick's Missing Manifesto20 Feb, 2008
Real success takes real work. It's worth it.
Practices or Principles?15 Feb, 2008
What's more important, using agile practices or understanding agile principles and values?
Your Brain on Agile6 Feb, 2008
A story cut from The Art of Agile Development. With a monkey.
Opinionated and Antisocial16 Jan, 2008
The right method for your team is customized to the needs of your team. The question is, how do you get there?
Shu-Ha-Ri and The Art of Agile2 Jan, 2008
In order to do agile development your way, you have to do it some way first.
Scrum and XP Practices: Cross Reference13 Dec 2007
A comparison of Scrum, both editions of XP, and The Art of Agile Development.
It's the Software, Stupid!21 Oct, 2007
We keep forgetting that we're here to develop software.
Change Your Organization: A Diary10 Mar, 2006
Six months of changing an organization from within.
An Extreme Stake in the Ground21 Aug, 2005
A fresh look at XP, sans humility, maturity, and wisdom.

Coding

Testing Private Methods19 Aug, 2008
What to do when you want to test a private method.
Forces Affecting Continuous Integration13 Aug, 2008
Warning: this brain dump is long, aimed at advanced readers, and not particularly well written.
Living in the Punch-Card Era30 Jul, 2008
Good builds are game-changing.
Études for Excellence22 Jan, 2008
Exercises for improving coding skills.
Gopher Holes30 Dec 2007
How is it possible for codebases to get easier to modify over time? This is how.
Continuous Integration on a Dollar a Day27 Feb, 2006
An easier, cheaper (and better) way to do continuous integration.
Red-Green-Refactor30 Nov, 2005
Test-driven development in a nutshell.
Microsoft Gets TDD Completely Wrong19 Nov, 2005
Boy, do they ever.
Rubik the Refactorer23 Dec, 2002
A bedtime story.

Collaboration

The Documentation Myth3 Sep, 2008
What are we really looking for when we turn to documentation?
The Crucible of Great Teams27 Aug, 2008
Collective ownership doesn't have the flash or controversy of other practices, but it's part of what makes an agile team "agile."
Get a Life!21 May, 2008
People get really worked up over coding standards, and I mean really worked up.
The Importance of Personal Success23 Apr, 2008
It's so damned personal.
An Exercise About Trust9 Apr, 2008
Split into pairs, and use the worksheet to take turns interviewing each other.
Who's in Charge Here?17 Jan, 2008
If the customer isn't in charge, then who is?
Two Kinds of Documentation29 Jan, 2006
What you didn't know about agile documentation.
Trust1 Mar, 2004
Produce more valuable software by replacing process with collaboration.

Design

Testing Without Mocks: A Pattern Language16 Feb, 2023
How to write fast, reliable tests without mocks or spies.
The Problem with Dependency Injection Frameworks6 Jan, 2023
The problem isn’t with dependency injection. It’s with dependency injection frameworks.
How Does TDD Affect Design?17 May, 2014
Does test-driven development make your software design better or worse?
That Funky Metaphor Stuff30 Apr, 2008
Ubiquitous Language, System Metaphor, and a bit of history.
A Simple, Effective Design Question13 Jul, 2007
When I decide to change this design decision, how hard will it be?
Quality With a Name5 Apr, 2006
What is good design?
Dependency Injection Demystified22 Mar, 2006
A 25-dollar term for a 5-cent concept.
That Damned Construction Analogy17 Dec, 2005
An instructive building is built outside my window.
The Other Side of Design14 Oct, 2005
A taxonomy of design.
Five Design Skills Every Programmer Should Have6 Sep, 2005
Fundamental design skills.
Primitive Obsession4 Jun, 2005
Don't get seduced by the Dark Side.
Drawing the Line on Continuous Design5 May, 2005
Use risk-based assessments to guide agile architecture.
Design Mindsets8 Mar, 2005
Skills needed for continuous design.
Fail Fast1 Sep, 2004
Fail immediately and visibly when an error occurs.
Design Debt1 Feb, 2004
Why we trash seven-figure software investments.
Continuous Design1 Jan, 2004
Experiences with hard problems in agile design.

Geekery

I Want Subtext17 Apr, 2008
An experimental programming language from Jonathan Edwards.
Colophon15 Apr, 2008
How I produce this website.
HTML and the Innovator's Dilemma30 Jul, 2007
The inevitable rise of HTML+Javascript.

Iteration Planning

Kanban Systems15 Oct, 2008
How, when, and why to use Kanban systems to eliminate iterations.
The Cornerstone of Agile Planning9 Jul, 2008
If you have trouble making and meeting commitments, start here.
It's a Trap!4 Jun, 2008
Two reasons teams can't make and meet iteration commitments.
Slack and Scheduling in XP18 Mar, 2005
How to use slack in XP's planning game.

Large-Scale Agile

Bjorn Freeman-Benson: Three Challenges of Distributed Teams19 Feb, 2019
An experienced software leader describes his experiences with distributed teams.
Large-Scale Agile: Where Do You Want Your Complexity?18 Jan, 2019
How do we manage the complexity of coordinating many engineering teams?
Large-Scale Agile25 Feb, 2010
Some early thoughts on scaling Agile.
Stumbling Through Mediocrity25 Mar, 2009
Does Agile scale?

Leadership

A Useful Productivity Measure?5 May, 2024
In my new role as VP of Engineering, there was one question I was dreading more than any other: “How are you measuring productivity?”
A Software Engineering Career Ladder27 Apr, 2024
What I’m really doing is changing the engineering culture.
The Talent Pump31 Oct, 2022
Average distribution in, best people out.
Don’t Measure Unit Test Code Coverage31 Jan, 2019
If you’re leading software teams, don’t measure unit test code coverage. It’s worse than useless; it will actively lead your teams astray.
Alternatives to Certifications: How to Hire the Agile Way18 Apr, 2010
One team's approach to staffing.
Change is Hard, Even for Service Organizations12 Apr, 2008
Notes from the field... far afield.
How to Turn Smart People Into Ordinary People12 Mar, 2008
When shit rolls downhill, expect crappy results.
Why Not?9 Jan, 2008
I can't convince anybody to do anything.
Change Your Organization: A Diary10 Mar, 2006
Six months of changing an organization from within.
Hustle21 Oct, 2005
Generate goodwill for your agile team.
Crunch Mode24 Feb, 2005
The overtime trap.
Our Professional Responsibility8 Jan, 2008
Look them straight in the eye and say "No."
Beyond Defects1 Sep, 2004
Use defect lists to troubleshoot organizational problems.
Task Switching1 Jun, 2004
Improve productivity by reducing task switching.

Metrics

An Approximate Measure of Technical Debt19 Nov, 2008
Introducing: The Spag.
Work In Progress11 Jun, 2008
The challenges of measuring performance.
The Stunning Truth at the Center of the Pigeon Story6 Apr, 2008
How do we get people to do what we want?
Value Velocity: A Better Productivity Metric?18 Dec 2007
Another approach to measuring productivity.
The Productivity Metric10 Feb, 2006
Avoid common productivity measurement mistakes.

Quality

What Does a Good Test Suite Look Like?1 Mar, 2012
Five key features of a good test suite, with links to further reading.
The Problems With Acceptance Testing27 Feb, 2010
Why I don't use acceptance testing tools.
Alternatives to Acceptance Testing1 Mar, 2010
A very thorough discussion of how to create quality software.
Mistakes4 Apr, 2008
"Failures, repeated failures, are finger posts on the road to achievement."
In the Privacy of Your Own Thoughts26 Mar, 2008
Keep your brain switched on at all times.
Does It Work? Are We Done? Is It Right? (Keep It Light!)18 Nov, 2007
Exploring the alternatives to functional testing.
An Interesting Retrospective Idea11 Mar, 2005
Painlessly gather retrospective information.
Research Time1 Apr, 2004
A simple, valuable technique you can start using immediately.

Release Planning

Estimation and Fluency25 Feb, 2013
The relationship between a team's fluency with agile ideas and their approach to estimation.
Do You Need Iteration Zero? A Case Study14 Apr, 2010
How to start writing code in the first week of a new project.
Estimate Inflation: A Cautionary Tale9 Oct, 2008
An example of What Not To Do, featuring scope creep, pushy stakeholders, and poor decisions.
Use Risk Management to Make Solid Commitments8 Oct, 2008
How to use risk multipliers and risk-adjusted burn-up charts to make solid commitments to your executives.
Coulda, Shoulda, Woulda1 Oct, 2008
In MoSCoW, plans prioritize you!
TANSTAAFL30 Jan, 2008
When you're buying something expensive and valuable that's meant to last a long time, you put real effort into it.
A Project Planning Pop Quiz4 Jan, 2008
When will the project finish?
Do We Need Projects?19 Aug, 2007
Projects... or products?
How to Survive a Software Rewrite16 Feb, 2006
It's only funny if you're not living it.
A Tale of Two Vacations20 Sep, 2005
Vacation planning instructs us about agile planning.

Requirements

The Case of the Missing Visionary17 Sep, 2008
Beth was smart and capable, but everyone knew she wasn't Charlie.
Five Ways to Misuse Fit8 Oct, 2007
Doctor, doctor, it hurts when I do this!
Product Managers Are Critical to Success14 Feb, 2006
Without the vision of a good product manager, the team is likely to flounder.
"Ideas," not "Requirements"30 Jun, 2005
By the time an idea is a requirement, the most interesting part of its life is over.
Up-Front Requirements15 Jun, 2005
What really happens when users read requirements documents.
Beyond Story Cards: Agile Requirements Collaboration21 Mar, 2005
Agile requirements, in-depth.

Tools

AlphaCode and the Future of Programming2 Feb, 2022
DeepMind researchers have released AlphaCode, an AI tool that has the ability to solve programming competition problems.
JavaScript Colors and the Corruption of Buy vs. Build9 Jan, 2022
The pendulum has swung too far in favor of “buy” over “build.”
Paranoia, Control, and $30,000 of Tooling23 Jul, 2008
Software configuration management is important, but the tools aren't up to the task.
We ❤️ Tools19 Mar, 2008
Stop being a slave to the software.
Cards, Table, and Whiteboard: The Ultimate Planning Tool22 Dec, 2005
Discover planning problems early by planning as a group.
Continuous Integration is an Attitude, Not a Tool18 Aug, 2005
CI tools make it easy... to do the wrong thing.

Writing

A Nifty Workshop Technique5 Apr, 2017
A little trick for workshops that participants love.
Singed Egos16 Jul, 2008
The evolution of the "No Bugs" text in The Art of Agile Development.
Time-Lapse Author16 Apr, 2008
A screencast showing how I wrote the first draft of the "Sit Together" practice in The Art of Agile Development.
Iterative Writing5 Mar, 2008
The evolution of the "Pair Programming" outline in The Art of Agile Development.
Truth or Clarity?13 Feb, 2008
Sometimes, truth isn't clear, and clarity isn't truthful.