It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat.”
– Theodore Roosevelt
I was reminded of this quote today when thinking about how much I have criticized other programmers in the past. People who were actually inside the arena, and even though I wasn’t a fan of their choice of tools or methods, at least they were writing working software for far more users than me. That deserves respect.
Constructive criticism has it’s place, though it is much easier to give the destructive, not helpful kind. I will probably always consider the approach taken by the majority suboptimal, but that doesn’t mean that one can’t admire the blood, sweat, and tears, that goes into any non-trivial software project. The only real way to show anyone “how it’s done” is to step into the arena yourself, and show them.
There’s another angle to this too, and that ties into the notion of not taking advice from the wrong people. I think strong man Adam Glass put it best:
I don’t listen to anyone who is weak when it comes to my strength training. I don’t take medical advice from auto mechanics and I don’t take computer programming lessons from grain farmers.
– Adam Glass
At the end of the day, actions always speak louder than words. In our society today it is possible to give the illusion of being more skilled than you are, of being the person in the arena – when you have never even stood inside of it. Being an author, public speaker, or published academic tends to automatically attach an aura of expertise, but there is only one metric that actually matters in software - the amount of quality working code you that you ship to actual users on a regular basis. Learn from the doers, not the talkers.