I love this reassuring advice for contributors to Mozilla projects undergoing their first code review:
Bugzilla reviewers may seem to be harsh, accidentally. They aren’t trying to be harsh or overly critical, they’re just pointing out what needs to be changed, which usually means they’re pointing out what’s wrong with the current code, instead of pointing out what’s right with it. Usually they don’t have lots of extra time in their life for reviews, so they just quickly write what needs to be fixed, without spending too much time thinking about the nicest way to say it. Sometimes they also don’t go into long explanations.
You’re not a terrible programmer or a bad person. All we’re doing is telling you what’s preventing us from checking the code into Bugzilla’s main codebase.
I remember the first time that I, almost accidentally, asked somebody for an opinion on my code, a few years ago. They automatically mailed back with about thirty different suggestions, all correct, and I was mortified. Why had I been such an idiot? And why were they being so cruel and rude?
Actually, thinking back on it, I think the first time that happened was when I wrote some code for .EXE when I was 21, and had to bear about six months of readers writing in with an endless stream of bugs. “Dear .EXE, I spotted yet another error in your ‘Printing in Columns’ program from June”…
I now, at some level, realise that having somebody else go over your code is both humiliating and the best way to learn. And…
You know, this post was going to be about how I thought that was true for most people, and harp on philosophically about how personal and intimate coding is, and how pair programming is fraught with psychological drama. But, if I am honest, as I write this, I must admit that this is mostly a personal bug I’ve had up my arse (weird anglo-american hybrid term) for many years, rather than a common state of humanity. I’ve dodged a lot of things out of terror of criticism in my life. My stand-up career was aborted really before it got started because of an incident with a Scottish lady screaming into my face while standing on a table near the stage. NTK’s wilful obscurity came from, in part, a desire that people not so much be insulted, than as to be unsure what was being said about them, exactly (more on this in a future post). I generally fiddle with projects for months to protect them from even the slightest possibility of a cruel word.
In parallel with this, I’ve noticed something happen online a lot. Some absolute idiot turns up on the Net, and asks absolutely idiotic questions, and generally bumbles loudly to themselves while everyone notes what a clod they are and shoots them down in flames. Then, they start adapting to the criticisms, or facing them down, or disappear entirely and re-appear later in some other guise.
Through any of these processes, they end up transformed. Soon, they’re handing out advice to other idiots, or explaining what was actually utterly arcane to a far wider audience, or alternatively pursuing their dumb ideas to great success. I first noticed this with a guy on Cix, who called himself Nildram, and who was rude, and argumentative, and obtuse and the biggest pain (among a vast community of grumpy patrician carbuncular pains, I should say). At first I patted myself on my back for being quiet and sensitive and afraid to make the kind of humiliating public mistakes he made. And then I watched him just get better and better. I learned from his mistakes too, but at one remove. He ended up being the guy behind Nildram Broadband, which had the reputation of being one of the more responsive and customer-friendly ISPs.
This was what prompted the note I put at the end of Life Hacks, about the value of living some part of your life in public. If you can identify what are the valid criticisms of your code or your ideas or your writing, and who are the trolls, and which are the other people just being temporarily stupid obtuse geniuses-in-waiting, you can parlay all that valid feedback and move from fool to slightly less fool in quick time.
What I don’t know is how to stop the anticipation of that criticism, or the excessive idiocy of some of it, stop good people from becoming better. Today I heard of the existence of a library that is badly needed, but the person who is writing it doesn’t want to release it because “it hasn’t been tested enough”. Release it, and it will be!
I think my biggest encouragement to those who are scared of criticism to enter the public space is that if you don’t, the public space will be filled with people who have no fear of their failings whatsoever. And we all know what fools they are.