The Clean Code Blog

by Robert C. Martin (Uncle Bob)

The Tragedy of Craftsmanship.

28 August 2018

You look pensive.

Yes. I just read a transcript of Martin Fowler’s keynote at Agile Australia, 2018. He called it The State of Agile in 2018.

Ah, yes, a great talk.

  • Beware the Agile-Industrial-Complex.
  • Maintain Technical Excellence.
  • Products over Projects.
    Great stuff! So what bothers you?

In that talk he said that the formation of the Software Craftsmanship movement was tragic.

Yes. He’s right.

He is? How could that be? I thought Software Craftsmanship was a good thing.

Oh, it is. It’s a very good thing.

But then why…?

The tragedy is that the Agile movement was supposed to promote the ideals of Craftsmanship; and it failed. Horribly.

I don’t understand.

The Agile movement got so involved with promoting conferences and with certifying Scrum Masters and Project Managers that they abandoned the programmers, and the values and disciplines of Craftsmanship.

But I thought it was programmers who started the Agile movement.

Yes. It was. That’s the grand irony. It was programmers who started the Agile movement as a way to say: “Hey look! Teams matter. Code should be clean. We want to collaborate with the customer. And we want to deliver early and often.”

The Agile movement was started by programmers, and software professionals, who held the ideals of Craftsmanship dear. But then the project managers rushed in and said: “Wow! Agile is a cool new variation on how to manage projects.”

There’s an old song, by Alan Sherman, called J. C. Cohen. It’s about a subway conductor who did such a great job at pushing people into the train cars, that he pushed the engineer out. This is what happened to the Agile movement. They pushed so many project managers in, they pushed the programmers out.

That’s not quite the way Martin Fowler described it. He said that the Craftsmanship movement started because a bunch of programmers said: “Oh, we need to create a whole new world for ourselves […] where we can go away, get away from all of these business experts and project managers and business analysts, and just talk about our technical stuff.”

Oh, no. Martin got that completely wrong. It’s very clear from the Software Craftsmanship Manifesto that the goal of Craftsmanship is to continue and expand the Agile message. Software Craftsmanship is not some kind of Techie Nocturnal Emission. Software Craftsmanship is simply a continuation of the original goals of Agile.

Craftsmanship is the Agile, that the Agile movement left behind.

Left behind? Left behind to do what?

To promote conferences, certifications, and fancy new project management strategies.

What’s wrong with certifications?

Let me put it this way: Anyone who suggested a two-day course to certify Craftsmanship would be laughed out of the room, laughed out of the town, and laughed out of the state. The very idea is absurd.

OK, but how can you have a movement without hype, certifications, the training, the conferences? Don’t you need that stuff to get people’s attention?

Perhaps. But I hope the Craftsmanship movement doesn’t leave it’s original purpose behind the way the Agile Movement did.

What purpose is that?

The original Agile purpose. You see, Craftsmanship is not about new stuff. Craftsmanship is about old stuff. It’s about working well, adding value, and doing a good job. It’s about interacting, communicating, and collaborating. It’s about productively adapting and responding to change. It’s about professionalism and ethics. It’s about the goal that Kent Beck had for Agile.

What goal was that?

At the Snowbird conference, in 2001, where the Agile Manifesto was written, Kent Beck said that one of our goals was to heal the divide between programmers and management.

The Agile movement abandoned that goal by turning Agile into a business that promotes “new-and-better” ways to manage. Instead of bringing managers and programmers closer together, the Agile movement focussed almost entirely on project management, and virtually excluded the programmers.

And so that’s why the programmers split away?

No! The programmers did not split away. The programmers stayed the course! The programmers continued to pursue Agile as it was originally conceived. Read the opening line of the Agile Manifesto: “We are uncovering better ways of developing software by doing it and helping others do it.” It is Software Crafts-men and -women who are continuing that work. It’s not the project managers in the Agile movement. They’re off pursuing something else?

What is it that they are pursuing?

Newness and Novelty. Nowadays the Agile movement is about “The Next Big Thing” and “The Bold New Idea”. They need novelty to keep the enthusiasm and energy high. They need that so that people sign up for conferences and certifications. They need to be seen as making – “progress”. Agile has become a business; and businesses need to grow.

It looks to me like they are succeeding.

They are. They just aren’t succeeding at the original goals of Agile. They split away from those goals in order to feed the need for Novelty and Newness. The result, unfortunately, has been what Fowler and Jeffries have called: “Faux Agile”, “Dark Scrum” and “Flaccid SCRUM”.

This is all a little hard for me to believe.

Let me prove it to you. What was Fowler’s first point in that talk of his – the point about the Agile-Industrial Complex?

He said something to the effect that people work best when they choose how they want to work.

Right! On a software development team, who does most of the work?

Well, programmers of course.

How many programmers were attending Fowler’s talk?

Well, he said it was “a smattering”, “very few”, “very much a minority”.

QED. Who goes to Agile Conferences? Not programmers. Not the people who do the bulk of the work. Programmers started those conferences. Programmers started the movement. Programmers don’t go anymore. It’s not the programmers who have changed. It is the conferences, and therefore the movement, that has changed. The Agile movement moved away from the programmers – from Agile. QED

But…

Look. Agile was never about project management; but that’s what they’ve turned it into. Agile and project management are utterly orthogonal things. Agile is not a better way to manage a project. Agile has nothing to do with managing a project. Agile is a set of values and disciplines that can help a relatively small team of software crafts-men and -women build small to medium sized products.

But isn’t that management?

No! God No! Project Management is about dates, and budgets, and deadlines, and milestones. It’s about personnel management and motivation. Good management is absolutely necessary; but it has nothing whatever to do with Agile.

Here. Look at the Agile Manifesto. Notice those four statements, and how they are divided between left and right. What divides the things on the left and right from each other? The stuff on the right is management. The stuff on the left is Agile. Managers invoke processes and tools. Individuals on Agile teams interact. Managers drive comprehensive documentation. Agile teams build working software. Managers negotiate and manage contracts. Agile teams collaborate with customers. Managers make sure plans are followed. Agile teams respond to change.

But aren’t Scrum Masters kind of like project managers?

Heavens no! Scrum Masters are coaches, not managers. Their role is to defend the values and disciplines. Their role is to remind the team of how they promised themselves they would work. The role was supposed to be shared by the team, not usurped by managers. Every few weeks a new team member would volunteer to act as coach – if needed. The role was supposed to be temporary. A mature team doesn’t need a permanent coach.

Wow, that’s sure not what they teach now. So I guess you think Agile is just ruined then.

No! Agile is alive and well, and thriving in the Craftsmanship mindset. That’s where Agile relocated when the project managers invaded and took the Agile movement over.

So then, what is the Agile movement?

Nowadays, the Agile movement might as well be an unofficial branch of the PMI. It’s a business that promotes conferences, training, and certifications for project managers. As such, it has become antithetical to Beck’s original goal. The Agile movement does not heal the divide between programmers and managers; it exacerbates it.

It seems like you are saying that the Agile movement isn’t Agile.

It’s not. It gave that up long ago. Nowadays the Agile movement is about the horribly flawed idea that project management is what makes a team Agile.

Well, isn’t it?

No, no, not at all. You see, an Agile team is a group of crafts-men and -women who hold the values and disciplines of Agile dear. An Agile team will be Agile no matter how the project is managed. On the other hand, a team that is not Agile will not become Agile simply by virtue of a new and fancy project management strategy. Such a team will be Faux Agile.

Are you saying that a good manager can’t lead a team to be Agile?

It is a rare manager who can inculcate the values and disciplines of Craftsmanship. It’s not impossible; but it’s not common. Agile teams are most often composed of people who already share the values and disciplines of Agile – of Craftsmanship. Thinking that a team can become Agile simply because a Certified Scrum Master is the project manager is a pipe dream.

So then what’s the future?

The future is what it has always been. The values and disciplines of Agile will continue to help relatively small software teams build small to medium sized products, and will help to heal the divide between programmers and management. Today, those values and disciplines are held by people who, whether they know it or not, align with the ideals of Software Craftsmanship.

I don’t think we need an organization to promote Craftsmanship. I don’t think we need a “Craftsmanship Alliance”. I think all we need are people of good will – individuals who interact and collaborate – communities of professionals who work to promote change by steadily adding value. I think the ideas of Agile – the ideas of Craftsmanship – are robust enough to grow and spread without an organization to drive them.

So then Software Craftsmanship was not a tragedy?

How could the ideals of Craftsmanship ever be considered tragic? They are eternal ideals that humans have aspired to for as long as their have been humans. The tragedy was that the Agile movement became a business that left the original values and disciplines of Agile behind.