Does TDD really lead to good design?

Does TDD really lead to good design?

Recently I tweeted that TDD can’t lead to a good design if we don’t know what good design looks like. I was also saying that we probably should teach design before TDD (or at least, at the same time). This tweet led to a discussions...


Q&A about The Software Craftsman

Q&A about The Software Craftsman

Our co-founder Sandro Mancuso was interviewed by Ben Linders from InfoQ. Below is the full transcript. In the book The Software Craftsman, Professionalism, Pragmatism, Pride Sandro Mancuso explores how craftmanship plays a role in agile software development. The book contains stories, examples and practical advice...


User Story Guidelines

User Story Guidelines

Disclaimer: This post was extracted from an internal Codurance document used to help our apprentices to learn how we work. We all understand that each project is different and that by no means we can apply exactly the same techniques and practices everywhere. However, the...


Rethinking Pair Programming

Rethinking Pair Programming

By default, we always do our work in pairs. We strongly believe that the quality achieved by two people working on the same task is superior to when done by a single person. However, there are times where pairing is not very efficient. Pair programming...


Balanced Abstraction Principle

Balanced Abstraction Principle

One of the things that make code complicated to read and understand is when the instructions inside a method are at different levels of abstraction. Let's assume that our application only allows the logged-in user to see trips from her friends. If users are not...


Code quality cannot be measured

Code quality cannot be measured

We cannot effectively measure what we can't precisely define. And this is definitely true when it comes to software quality. What is software quality? What does quality mean? Quality for whom? Compared to what? In which context? Are we talking about quality from a developer's...