Some years ago I extracted the following snippet from a system:
MOV R1, R2 ; move r1 to r2
ADD R1, 0D41
The developer didn't believe in labels so used PC-relativejumps.His commenting style hardly illuminated anything, and the use of magicnumbers was rampant.
Sadly, these three lines were pretty representative of the entiresystem.
The programmer styled himself a superprogrammer and felt his skills,apparently honed over decades of code terrorism, transcended any tamingattempt by the pointy-haired boss (me).
He wasn't a superprogrammer, at least in any sense I coulddetermine. A heck of a smart guy, for sure. Articulate and alwaysvoluble about his own skills. But his code reeked. With enough work hecould pretty much beat it into submission. But other, less dramatic,developers built much better code much faster.
Some imagine the superprogrammer as a beefy guy with aHarley-Davidson T-shirt stretched impossibly over a beer guy, ZZ Topbeard flecked with gray, and an attitude that forces management to keephim away from customers.
In my experience those are the fringe element. Most of the trulygifted developers I've worked with don't have those negativecharacteristics. They're just very, very smart, adept with the tools ofthe trade, and are instinctively good at problem solving andstructuring complex systems. Any “attitude” exhibits itself in strongbiases about proper development strategies and a commitment tocompromise neither elegance nor quality.
It seems that when we talk about distributions people immediatelyvisualize the Bell curve. But I don't think a Gaussiandistribution applies when it comes to engineers. Something more like a Rayleigh curveprobably better represents the distribution of skills. Below some IQ orcompetence there are no – or at least very few – engineers, suggestingthat superprogrammers are more common than one might expect.
Of course, there is no definition of “superprogrammer.” Like thejudges have ruled on pornography, we know one when we work with one.But what do you think? Are superprogrammers common? Do you consideryourself one?
Jack G. Ganssle is a lecturer and consultant on embeddeddevelopment issues. He conducts seminars on embedded systems and helpscompanies with their embedded challenges. Contact him at . His website is You asked for self-opinions, well … I guess I can give you mine. I am NOT a super programmer. I can tell you what I am though. I am possibly, one of the laziest engineers alive! Yep, that is me! I will always use my noggin to:
– Keep from typing any more lines of code
– Keep from writing any more logic equations
– Keep from adding that extra sheet of schematics
I am so lazy … I will find ways of automating tasks so I can browse the Internet while the machine does the work for me! (I even have two machines churning for me now!)
“Give the laziest man the hardest job, he'll find the easiest way of getting it done.” – Anton Martin Sorenson –
“I am no lazier now than I was forty years ago, but that is because I reached the limit forty years ago. You can't go beyond possibility.” – Mark Twain –
– Ken Wada.
I agree with you assessment of the ego-driven programmers who obfuscate everything; I guess they're still trying to impress themselves. As a programmer, it is my responsibility to write code that a) get's it right the first time, and b) is documented correctly so that the next bloke doesn't spend develop time trying to figure out what's going on.
– Vernon Davis
Programmers are hard to handle and many of us are just miserable fakes. Which reminds me about a book:
Philosophers Behaving Badly by Nigel Rodgers and Mel Thompson (ISBN 0720612195)
Great thinkers need skull shrinkers or was it beer drinkers and hell raisers ;-)?
– Aki Peltonen
I totally agree with your statements pertaining to what a super programmer is NOT.
I do not consider myself a super programmer by any means, nor do i strive for such a title. However, if i had to be super in my programming skills, i would hope i would be a super code formatter, and documenter. Clean code is generally more correct. I would like to be a super correct code writer if i could choose, but we are only human.
– Eric Shufro
Who cares if someone's a superprogrammer or not ? When I want to lift something heavy, I don't get an Olympic weightlifter, I get three or four friends of average strength. How about a bunch of average programmers working for some super managers for a change ? If you have one really smart guy, please put him higher in the pyramid than lower. The rest of us “normals” will thank you, and will be more productive, and possibly even happier.
– John Zugel
Correct. There are many types of programmers, and the self-proclaimed are rarely any good at it. My guess is most superprogrammers quitely get into the minds of all that surrounds them. The dev tool people, the target people, the customers, the bosses, and they orchestrate these vectors into good code.
– John Caporale
in my opinion, there is nothing like a superprogrammer. we only have reliable code writers. and that involves proper understanding of a problem and using the right approach to solve it. i don;t think long hair, beard and a big belly do any good to the dependability of software.
– Shahid Darbar
You've exposed a paradox — one who sees oneself as Superprogrammer, isn't. The teams that I build will always beat the one-man-show in quality, quantity and maintainability.
– Keith Heob
I don't picture a Bell or Raleigh curve. I see a stepwise slope function: below a certain threshold of intelligence/competency, people just aren't worth working with, PERIOD. The function remains at zero and then at a certain point, they become very tolerable when they hit a certain level of competency, and more so as you go farther up the X axis.
– Tom Jones
I think I am a superprogrammer, and since probably none of you have worked with me, just go along with me. It's not that I have an ego problem – in fact never need to tell people I am good (except for this comment). It's that after 8 years on the job I have noticed the quality of my work is almost always higher than everyone else's. I usually produce more efficient and more maintainable code in less time, and it usually makes more sense to those who understand the problems being solved. I usually end up being a constant go-to person for other team members, which in my opinion hurts more than helps. It's having a superprogrammer help average programmers solve several average problems or produce average work, when the superprogrammer could instead be solving above-average problems and producing above-average work. In the long run, the end product will not be as good as it could have been.
I have no education beyond high school, yet I have engineered software, firmware, electronics, or mechanical items that have been indirectly used by millions of people altogether. I believe that it's all about how our brains are wired. I have met only a handful of people I would consider superprogrammers, and as mentioned in the article, you will know when you work with one – not when you look at their resume.
My advice to supermanagers: keep your eyes open for budding superprogrammers, and put them in an environment where they can grow.
– David Creel
John Zugel hit the target with his comment.
I consider myself pretty good at what I do and have worked with a lot of people much sharper than me. But all our efforts come to naught when we're led into the minefield.
I've been at this for more than 20 years. I've yet to run into a self-proclaimed super-programmer that really was.
A super-programmer is someone who “makes it look easy”. They devise architectures that are simple to comprehend and code that's relatively easy to navigate.
I've worked for exactly one super-manager (and that was in the early 80's).
– Robert T
You could be describing a contractor that worked for us on a job about 12 years ago. He would only use 6 letter labels and variable names in his code so that his assembly code lined up neatly (even when he was coding in C). This guy managed to convince the project lead that we need to use a special variable declaration convention that required a secret decoding ring to understand. I am sure the only reason he did this is so that he could get a room full of engineers saying the word FUCBYTE (8 bit, far unsigned char). Every other possible memory type was handled similarly. Definitely missusing the preprocessor in my opinion.
– Phil Ouellette
People who write obfuscated source code are not superprogrammers,they're not even good programmers, because good (i.e. anywhere aboveaverage) programmers recognize the limits of their own concentration andworking memory, and instead, as an absolute minimum, build easy tounderstand abstractions that efficiently minimize the amount of detailthat needs to be mastered to program at the next level up.
Abstraction and metaphor are the primary levers with which humansamplify their intelligence, and people who don't use either are – quiteliterally – not intelligent. Abstraction and metaphor are the two toolsof the programmer, in his quest to build a working conceptual model ofthe system, and thence a working implementation. Abstraction permitscomposition, and metaphor permits representation of the real world inthe ethereal land of bits and bytes. If the code doesn't exhibit them,then it's not good code, plain and simple.
The only way a programmer can successfully maintain an obfuscated messis if the system is in maintenance mode, and the programmer hasmastered, written or rewritten the majority of the system, and thesystem doesn't have to grow in complexity and features withoutconstraint. It doesn't prove their superiority; it rather proves theirmastery of trivia. Having said that, mastery of trivia can be usefulwhen the application domain is small, conservative and relativelyunchanging.
But “superprogrammers” – that is, programmers that are Nx moreproductive than the average, where N is some number between 5 and 50,definitely do exist.
– Barry Kelly
Good article, but you missed one major point. Much of the totally obscure code (or any other related development work) is purely the way for an insecure programmer (engineer, etc:) to maintain an illusion of job security. “If no one else can understand it, they won't lay me off” mindset. Course, it doesn't work and those of us picking up the pieces later just hate him all the more for it.
– Don Herres