Start The World's Best Introduction to TDD... free!

Tutorials Comments

The Saff Squeeze seems like an underused technique, possibly because people want to see more examples before they try it for themselves. Here is an example of using the Saff Squeeze for jq code.

Read on →

Programming Without Blame Comments

Programmers routinely become stuck in the Advanced Beginner stage of refactoring because they are trained to worry about overdoing it, so they underdo it and don’t build the skill they need to progress. They might benefit from some rules to help them break through.

Read on →

Programming Without Blame, Not Just Coding Comments

Many programmers struggle to adopt TDD because they put pressure on themselves or because some commentators try to shame them for their imperfections or because someone else is forcing them to do it. This causes needless stress, even suffering. Let’s try to reverse that trend.

Read on →

Simple Design, Refactoring, Evolutionary Design, Programming Without Blame Comments

TDD is for those who don’t know how to design software, which doesn’t have to mean that we’re all dopes who are doomed to perpetual failure. Let’s explore this idea through the lens of an experienced practitioner suddenly confronted with some sharp words from a luminary in our field.

Read on →

Read on →

Programming Without Blame Comments

“TDD or BDD?” or “Functional Tests or Unit Tests?” Write any tests! The more clearly you understand the purpose of those tests, the more these apparent dilemmas will fade into the background.

Read on →

Simple Design Comments

It’s easy to give the instruction to reveal intent, but harder to provide helpful examples. I’d like to provide a tiny one that illustrates the point quite clearly—at least to me.

Read on →

Simple Design, Mock Objects, Refactoring Comments

When you notice that you need “too many” stubs (mocks for querying data), you have at least two helpful options for refactoring. Here is an example of using the more-aggressive of the two options: replacing a stub with the stubbed value.

Read on →

Refactoring, Improving Names, Simple Design Comments

Let’s look at a simple example of a name. Let’s judge the name (kindly!), then imagine some likely next steps in refactoring. We can learn and do quite a lot from only a single name!

Read on →

Refactoring Comments

No, tests aren’t supposed to make refactoring easier; they make refactoring safer. Sometimes, by accident, they do both.

Read on →

Simple Design, Refactoring Comments

The stronger your refactoring skill, the more easily you can use architecture advice as guidelines instead of as rules to enforce. This makes it significantly more likely that you’ll invest wisely in architecture, rather than over- or under-​engineer.

Read on →

Read on →