It seems there is one in every team. He is living by the book, following the rules to the letter. He considers himself bright and smart because he always knows the latest trends, the latest official Right Way to write things according to the C++ Standard. He follows it religiously, even the new rules not implemented yet by any compiler. And he looks down on you if you do not write “proper” code. He is the prophet. The Book is right. You must follow the rules.
His zealotry has no limits. He will conscientiously rewrite your “illegal” C++ when you are not looking. For your own good of course.
He will go and meticulously replace all your “i++” with “++i” in your vanilla integer for-loops.
He will go through incredible hoops to get rid of a lonely “goto”, used to skip a large block of code and jump to your function’s epilogue.
He will use unreadable, cryptic, unbelievable templates to replace your simple define, because “define is bad”.
He will tell you with a straight face that he went ahead and replaced all the “NULL” in the codebase with “0″ or “nullptr”, because “NULL is bad C++”.
He filled his head with many of those mantras, and he is obsessed with them. They are the rules. They must be followed.
Well, my dear prophet programmer, I have news for you: you are not bright. You are not smart. You are not clever. You’re a fucking robot. It does not take a genius to blindly follow recipes from your cookbook. You are a brain-washed moron doing a machine’s job. If you blindly follow the Standard, you end up with standard code, which by definition anybody can write.
The best programmers are not the ones blindly following anything. They are exactly the opposite of you. The best programmers are the ones who know when rules should be bent, when boundaries should be broken, and when envelopes should be pushed. The best programmers are the ones who, constantly, on a case by case basis, hundred times a day, stop for a moment and think about how to best solve a problem. They are not the ones turning off their brain to follow a recipe. They are not the ones trying to fit a preconceived solution (design pattern?) to everything. If a preconceived solution solves your problem, it was probably not really a problem worth solving - that is, it is such a common and tired issue that anybody can look up a standard answer in a book. How does solving such a thing in such a way makes you “smart” ?
The best programmers are creative. They have a big imagination, and they are not afraid to use it. They borrow techniques from one field and apply them successfully to an apparently unrelated field, discovering subtle links and connections between them in the process. They are never satisfied with the status quo.
The best programmers, the heroes, the top coders, like Nick of TCB did with the sync-scrolling eons ago, are the ones who invent new techniques to solve problems that nobody solved before them. By definition they are not standard. They are the very opposite of what you preach.
September 9th, 2011 at 8:52 am
[...] liked Pierre’s The Prophet Programmer post. Go read it [...]
October 1st, 2011 at 1:51 am
So… You’re saying, if you’re smart, you should shun standards and good solutions? Sounds like it would be a nightmare to be on the same team as you, always looking for a new solution to problems just to be “unique”.
October 3rd, 2011 at 12:24 am
“A”, maybe you should read the post again. I’m not saying you should “always look for a new solution”. I said you should not follow the rules *blindly*. Good programmers know when to follow the rules, and when to ignore them. That’s a very different thing from “always looking for a new solution” - a.k.a. reinventing the wheel. But this mistake is interesting because it’s exactly the root of the problem: most of the zealot programmers I describe in that post have troubles with these half-measures. For some reason they see the world as black or white - like you just did. This is exactly what I described…. What I wrote is really nothing more than “sometimes the STL is fine for the job, sometimes it just sucks, good programmers are the ones who know when to use it and when to discard it”.
November 4th, 2011 at 12:06 am
I loved it.
I just sent the link to some programmers who will recognize them in this perfect description.
I’ll love it again tomorrow
November 13th, 2011 at 8:35 am
Amen.
This is all 100% true. If you need a static variable and you have the brains to know why its good - just do it.
Every other idiot whining that you’re “a nightmare to have on the team” probably hasn’t shipped a damn thing.
The rest of us thinking outside the box and getting stuff done, do ship games. End of story.
All these zealots are mostly just making life difficult for everyone. If you are a code monkey working on an MMO - yes by all means - do it by the book, but get it done in a clean way (say no to templates). So other programmers can understand you.
But for smaller teams, a bit of decent comments and some lean code will be the way to go.
Tired of being preached to. I’m going back to my next shipped title and closer to my million dollars. I’ll let the geeks work out whats the “holy grail of proper code” while they struggle to pay bills and get nothing done. Ciao.
November 23rd, 2011 at 1:00 am
Nick of TCB! Well, there’s a name I haven’t heard in a good long while.
Synergy, represent!
Anyway, good points all in all.
March 1st, 2012 at 1:29 pm
Agree. There will be always the ones who follows rules as fucking machines and the others - who always tries to think about everything in terms of “new ways of solving some problem”. Of course these different people are just two opposite extremes. In real life there are many people which are simply in the middle or at different place in that scale
good point !!
March 30th, 2012 at 3:10 am
Slightly disagree! Correct is correct, your code is YOUR BABY, and you’re attached to it, emotionally and work-wise. But it rarely belongs to you.
Get over it when people modify your code. Surely that’s the plan.
Great article btw - a real thinking point.