I have another metaphor for you. This time, it’s the comparison of people behavior and unit testing.

In the book, I talk a lot about the necessity to focus your unit tests on the system’s observable behavior and disregard implementation details. Doing so increases the tests' accuracy in pointing out errors in code. This is one of the primary drivers of value in unit testing: you want your tests to turn red only when the application’s behavior no longer matches the customer’s expectations, not when you change implementation details.

In the book, I define observable behavior as behavior that has a connection to the goals of the application’s end user.

It’s interesting that you can apply the same approach when evaluating people’s behavior.

If a person spends half a day on Facebook and then does 2 days worth of tasks in the remaining half, does it really matter how they allocated their time for that? Those are implementation details that aren’t meaningful for the employer and thus, arguably, should be disregarded. The only thing that matters is the work itself — it has a connection to the employer’s bottom line; it’s the observable behavior.

You can go even further and bring this principle to an extreme by saying that, in any undertaking, intentions don’t matter. The only thing that matters is the end result.

Did someone in your community try to do good by feeding squirrels but instead attracted a rat infestation? Doesn’t matter what the intentions of that person were — those are implementation details. The end result (the observable behavior) is clearly bad for the community.

Similarly, if someone’s greed propels them to start a business and uplift the whole community, do the intentions really matter as long as everyone is better off?

The analogy is good for professional relationships but breaks down at the personal level. You definitely don’t want to be harsh on your nephew who tried to help out with the dishes but broke all plates as a result :)



Enjoy this message? Here are more things you might like:

Workshops — I offer a 2-day workshop for organizations on Domain-Driven Design and Unit Testing. Reply to this email to discuss.

Unit Testing Principles, Patterns and Practices — A book for people who already have some experience with unit testing and want to bring their skills to the next level.
Learn more »

My Pluralsight courses — The topics include Unit Testing, Domain-Driven Design, and more.
Learn more »