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.