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
- Adopting Agile
 - Coding
 - Collaboration
 - Design
 - Geekery
 - Iteration Planning
 - Large-Scale Agile
 - Leadership
 - Metrics
 - Quality
 - Release Planning
 - Requirements
 - Tools
 - 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.
 

