Eric Florenzano’s Blog

An Object Lesson in How to Respond to Criticism

Oct 10, 2010

In the moments leading up to my DjangoCon keynote this year (called Why Django Sucks, and How We Can Fix It), I pictured the room an hour in the future and imagined what things would be like. I envisioned all kinds of scenarios: one where people were literally booing, or another where I needed to sneak back to my hotel room to avoid embarassment. I imagined all of these scenarios because I was about to level some harsh criticism at a technology that everyone in the room was enthusiastic about.

And then I went on stage and gave the talk.

When it was finished, I braced myself for one of these scenarios to unfold. Instead, what happened in the following moments, the following days, and indeed the following month since then has been what I consider to be the most gracious and useful response to criticism that I've ever seen. And I think it deserves to be highlighted, because I believe that reacting well to criticism is vital for any successful community.

So what happened in the moments directly following the talk? Russell Keith-Magee, arguably the most active core developer at the time, made a special point to march up to the front of the stage and publicly shake my hand. This gesture not only legitimized some of the things that I said (some of which were quite extreme), but it also set the tone for the discourse around my talk; civility.

Afterwards, privately, I apologized to several of the Django core developers. These are people I respect and admire, and I wanted to make sure that they knew that, at least on my end, it wasn't personal. I was expecting forgiveness, but instead I received thanks. Thanking me for criticising their project? Not what I was expecting.

One of the things that I suggested was to make Alex Gaynor a core developer. A few people at the conference made comments wondering how many days it would take before that would happen. Days went by, and the conference ended without this happening. A week went by. A few more. But I knew better, because the Django core committers don't do anything brashly. They took their time, let all dust and emotions settle down, and listened to the discussion.

And then Jacob Kaplan-Moss issued an official announcement. I particularly agreed with one of the top comments on hackernews:

"I don't know enough about the specifics of the case to
assess the new policy on the merits, but I will say that
as a piece of writing this is a model of how to change
policy gracefully: clear, forthright, and non-defensive."

Clear. Forthright. Non-defensive.

Some people saw this as an opening to change even more about Django, and even when some of the discussion was phrased rudely or accusatory, the Django team's responses were thoughtful and calm. Now, over a week later (again demonstrating that things aren't done brashly), we see that a half-dozen new people have been added to the core team. Yes, that includes Alex Gaynor. So not only was the new policy clear, forthright, and non-defensive, but there was concrete follow-through so that everyone can see that it wasn't just words.

And even in that short time since the new committers were added, Django's code is already reaping the benefits--we've seen a flurry of bugs fixed and tickets closed. Django's future has never looked so promising!

Why do I think this is so important? Because a community which welcomes constructive criticism is one in which people feel they can make a difference. And it's because they can make a difference. It's a community that's never satisfied with the status quo. It's a community that can grow and change and adapt, when the world around it changes. It's a community that we can be proud of.

NB: I was not the only one to criticize Django at DjangoCon. I was merely one voice. This is just written from my perspective.