Are Quirky Developers Brilliant Or Dangerous?
jammag writes "Most developers have worked with a dude like Josh, who's so brilliant the management fawns over him even as he takes a dump in the lobby flowerpot. Eric Spiegel tells of one such Josh, who wears T-shirts with offensive slogans, insults female co-workers and, when asked about documentation, smirks, "What documentation?' Sure, he was whipsmart and could churn out code that saved the company millions, but can we please stop enabling these people?"
Translation: Control is more important than productivity.
I think it would be a lot harder for this guy to have made his point without such an extreme example.
It should ensure that lots of bored IT people with god complexes flock to his article and dream about how important they really are. Of course the reality is that just about everyone could get hit by a bus and within 2 months their names will be forgotten and the company will be just fine.
Most quirky developers don't defecate in the lobby or egregiously insult coworkers. They just have poor social skills, may have poor hygiene, may perform poorly on teams, and so on. In those (by far more common) cases, I've almost never seen a situation where the company would be better off without that person in some capacity. Usually it just requires moving them off some team project to a big one-person project that's been festering on the TODO list.
It's actually pretty hard to find really good coders, so I'd say unless they actually are so terrible in other ways that it's screwing everything else up, if it were my company, I'd try to find somewhere to put them that plays to what they're good at while minimizing any potential friction.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
To make an analogy here, he sounds like the TO of coding...
It's up to management to apportion work to where it's done best. Some people work well in teams, some better as individuals. Make use of people's strengths and give them the work that suits them. Rudeness is not necessarily an offence (though harrassment of e.g. female coworkers is) - it's just part of the price. If it's not worth the cost, then don't employ him. Similarly with obscure code and prima-donna behaviour: if the overall cost of writing and maintenance is lower when it's all done by easily-managed people, then that's who you should employ. And make sure the same test is applied to the CEO.
I worked for a small company that severely underpaid it's employees. As a result, most were people who were just out of college (me), couldn't get a job elsewhere, or didn't want to move because of family connections in the area. Many employees quit right after a spouse graduated from the nearby University.
One of the programmers was brilliant, but actually insane. He could look over your shoulder and debug the page on your terminal in a few seconds. That is, when his meds were working. He would check himself into the local mental hospital for weeks at time, during which he was truly unavailable. They kept him around because they couldn't afford to hire real programmers.
All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
I've been pushed hard on projects before -- and been told that documentation wasn't a priority, that getting the code out was. (I had a sign on my wall that said 'Documentation is Phase 2', a direct quote from my manager).
Now, "Josh" seems like he has some personality issues, sure, but don't bitch about the documentation thing. If anything, I find that documentation can be harmful (if it's not kept updated as the code is), and that it's often best when it's written by someone _other_ than the coder who already knows everything (so they don't bother documenting all of the 'obvious' stuff that's only really obvious to them).
If this "Josh" were worth the cost of 4+ "normal" programmers, assign someone extra to follow behind his commits and document what's going on. The lack of documentation is a company problem, not just one programmer's.
Build it, and they will come^Hplain.
Since the article was written from the perspective of someone who is upset with Josh, and therefore prone to paint him in a negative light, I'd like to offer some words that may balance the perspective. I'm no fan of people like Josh, so the following is the devil's advocate perspective:
By way of metaphor, it seems like Josh is the only Integer Unit in a CPU burdened with processing lots of integer-heavy code. He is a resource for which there is a lot of contention. Someone tried to have someone else on the team (say a floating point unit) solve an integer problem, and all they could muster was to go to the Integer Unit, who is already bogged down, and beg for help. Apparently, in this organization, Integer arithmetic is deep voodoo that nobody else can do. Everything flows through Josh. The odds that someone will relieve him of his duties long enough to generate a HowTo on adding two ints are pretty small.
Odds are that the project managers around him aren't thinking in terms of resource contention and how to alleviate it. They may make noises that sound like they understand that task B, with a lower priority than task A, will be starved until A is completed - but then tomorrow they'll still be asking why B isn't done, knowing full well that A is still in queue and they set the priorities themselves.
Even if they do understand priorities, they'll probably constantly adjust priorities eating Josh's productivity with lots of context switching and pipeline stalls.
They need more people who can do what Josh can do. Once he's no longer the only Integer Unit, he won't be able to afford to be a douche-nozzle. If this outcome is worth it to them, they'll pay for it. If it isn't, they'll whine in an editorial.
The "cue the foo posts in 3, 2, 1..." posts will commence with no subsequent foo posts in 3, 2, 1...
The couple of "hero" coders like this I've seen in the past are, to a large degree, sucking productivity directly from other coders. Their complete lack of documentation, zero time spent naming variables/functions with whatever gobbledygook ran through their head momentarily, etc., winds up bringing other coders' work to a complete screeching halt. Intentionally or unintentionally, they arrange it so they're the only person who can manipulate the codebase. So the whole "hero worth millions" idea is really just a facade.
Example from this month's Game Developer Magazine: Near the end of a production cycle, one game is way over memory budget. Entire staff (engineers, artists) spend weeks cutting stuff out: reducing polygons on models, downgrading textures, etc. Everyone sweats it out and comes up 1.5 MB short. On the last day a senior coder goes in to where he'd hidden a 2MB string allocation at project start (completely unused), snips out the one line, and is hailed by everyone as having "saved" the project at the last minute. That's the kind of bullshit going on with these sociopath coders.
We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
It isn't?
If you're being an ass, you are not getting the job done. Basic civility is part of any reasonable job description. Generally an implicit one, which people with no social skills are unfortunately too crippled to understand.
Blasphemy is a human right. Blasphemophobia kills.
A while back, I worked in a video production place where the lead engineer was an asshole. He was rude to everyone, and made a point of telling everyone how irreplaceable he was in every way.
Meanwhile, he spent most of his day sitting in his office, looking through hardware catalogs - and never bought anything useful. Once in a while, some computer or video box would arrive, he'd have me unpack it and set it up, and then he'd berate the poor people who had to use them for not knowing how (he bought a really cool SGI workstation and dumped it on a girl who had never even seen one - she was a Photoshop artist).
He used to set really long schedules for simple things, too - he told me I had to come in for a couple of months on weekends to put connectors and labels on a bunch of prerun video cables. It took me four hours. So he got mad, and told me I had to come in anyway, because he'd already set the schedule, and it was my fault for working too fast (and he also complained about paying me overtime, instead of thanking me for doing it fast and correctly).
Yes, these people do exist...
One of the best courses, I think, during my undergrad was a practicum course. We started off with a fairly simple project. The teacher gave us some requirements, but told us that for the rest of semester, each assignment would simply be new requirements to the original project and that, as we are developing it, we must keep that in mind.
Some people in the class just brushed it off, did the usual homework thing and just rushed it out as fast as they could. Others spent a little longer on the first assignment, trying to anticipate future requirements, and make it general enough that they could add them if needed. After each assignment (there were 4), she'd ask people how long they had spent implementing the new features. In the end, it turned out that saving an hour on the first assignment, cost you about 2 hours on the second assignment and, unless you basically rewrote the first assignment, it just got worse as time went on.
I once wrote a coder / decoder for control messages for a radio system.
The code itself was about 30 lines. With comments explaining WTF was going on, it was about 150. There were backsteps, cycling through arrays, multiple search trees, etc. Part of the comments included basic theory on the decoding mechanism.
There was no way good variable names or "self-explanatory" code would have worked there.
---
ECHELON is a government program to find words like bomb, jihad, plutonium, assassinate, and anarchy.
Exactly. I'm always amazed by people who think that writing impenetrable code is "advanced". Any jackass can write something convoluted and obscure that nobody else can understand (or maintain) -- what takes actual talent is condensing complicated logic into code that's simple enough a ten year old would understand it.
I'm reminded of two quotes.
One from Einstein: "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
The second from Kernighan: "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."
Here's one reason why... I was Bipolar II which meant I was mostly manic. As a result I was easily angered, very enthusiastic, easily empassioned and highly creative. My brain went a MILLION miles per hour in that state and I had brilliance that I couldn't contain at times. I already have an IQ of 160 and during that state it was up 5-10 additional points (when I could stay focused).
Tack onto that the boundless energy the condition gave me and the fact that I never slept in that state and you have exactly what you described. I felt untouchable and alive like no one could imagine. So why did I go on meds? Well, that's the trick. How do you get bipolars or other people who have a self destructive disorder that makes them feel superior or more intelligent go on a med that dumbs them down or slows them down?
I hit that point where I realized my condition was isolating me and shutting me off from everyone else around me. When I examined my life, I realized I had no one to blame but myself; I burnt people out like matches but couldn't see that I was the one common factor in all the damaged relationships. More exactly, my condition.
I eventually got better and now write my own documentation, get along with others, don't have mood swings at work, etc etc. It took me years and lots of hard work and effort to get over old emotional habits... the meds don't do it alone.
But I guess what I am trying to say is that sometimes brilliance comes with madness. Sometimes it's just madness, sometimes it's both. Getting them to help themselves though can be almost impossible though.
This is my sig. There are many like it but this one is mine.
I will be if I get promoted one more time.
The two levels above me have no clue (they were reorganized over our department but really don't know who anyone is or what anyone is doing or what is important and what is trivial).
I was always a leader type (lead sports team, lead online guilds, organized groups) so being a low level manager is fun. I was a solid intuitive maintenance programmer. I was not a brilliant developer but after loading the code, I could figure out problems in a non-logical fashion.
I'm solid at building morale, coaching programmers how to game the system better so they get promotions and raises, and running programmers and projects so they arrive on time without the programmers having to work overtime.
And I have carpal tunnel so I can't do head's down coding any more.
I'm good at where i am- but if I were moved another level up, I'd be another clueless manager.
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
But then there are also the flip side to the problem. I did some temp work with a company that had a "Josh", lets call him Jim, and hell, everybody really liked the guy. He could whip off code like you wouldn't believe and solve problems that others had been stuck on for weeks in minutes. So what was the problem?
It was, for lack of a better description, what I like to call the "head too full" syndrome. The guy knew how to write badass code in what seemed like every language from BASIC to the latest language o' the day, but trying to get docs out of the guy(hell trying to get comments you could actually understand out of the guy) was nearly impossible because he had already moved on to the next problem in his head by then. I spent about a week setting up his new machines the way he liked them and talking to the guy. Afterwards one of the higher ups stopped me and said "You always seem to have good ideas about things. What would YOU do to make Jim's work day easier?". I could tell the company would frankly fall apart without Jim so I said "Honestly? Find a guy with a little programming knowledge who can sit in the office next door and write docs for Jim. Because every time someone asks him for an explanation or docs you are going to throw him "off his groove" and it will take him a day to get his groove back. Let him do what he does best and let somebody else follow behind him writing the HOWTOs."
So I would say, yes some are quirky because they are frankly asocial asshats. But I'm sure there are plenty like Jim who just have "heads too full" that are just not thinking like we think. I mean, I would be having a conversation with the guy about the old days of Commodore and Atari programming when he eyes would glaze over and he would smile and then suddenly he would just blaze out this huge complicated mess of code that frankly WAS brilliant and would have taken anyone else weeks to cook up. Did he mean for it to be complex or weird? Not really, that was just how his brain worked. And expecting him to fit in the cubicle mentality would have just had the guy frustrated for a couple of weeks until he got tired of it and quit.
So I guess what I am trying to say is that you really have to base how you handle a "Josh" based on the situation. Are they acting the way they do because they are asocial? Or because their brains really don't work that way? Because as we know Einstein had to have his address stuck on his coat when he was working on a problem because he would wander off deep in thought. I'm sure that most that ran into him would have thought him rude for not engaging them in conversation. But he wasn't TRYING to be rude, his "head was too full" to give even a moment's attention to anything but the problems in his head. And that was Jim to a T. Nice guy though. Maybe that is what makes the difference between a Jim and a Josh?
ACs don't waste your time replying, your posts are never seen by me.
Damn, you beat me to it.
Never the less, you are spot on. Some quirky programmers are both, some are neither.
Perhaps it is conceited of me, but I've always thought of myself as brilliant. Enough people have made comments that reinforce that conceit. But, one of the most valuable pieces of advice I ever received was from another brilliant individual who once remarked, "You and I might understand this, but those who follow might not. We need to simplify it." From then on, I've always thought twice about getting "too creative."
This is a boring sig
Software development is 40% technical and 60% people. Even though he my get twice as much technical done his bad people skills are affecting his usefulness, and still needs at least 20% people skills to be useful, however to balance him you will need to hire someone who is like 10% technical and 90% people skills just to support him. So you are in essence paying twice as much to get slightly less then twice output. You are better off with 2 people who can do 40/60 balance. As you will get twice the output without the risk.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Agreed; which is why this statement from TFS: "... could churn out code that saved the company millions" - is nonsense. It may look that way on the surface, but when accounting for all the code maintenance pains that inevitably follow, I've yet to see a single such "genius" that wasn't a net loss.
The folks who do extreme programming have a metaphor for this; they call it "technical debt", and point out that if you don't pay your debt down pretty quickly after running it up, you're going to get into trouble. Generating technical debt, they say, is an inevitable consequence of programming. But good programmers immediately clean up at least most of that debt as soon as they've finished implementing whatever they're working on.
The metaphor works. Managers are quite able to understand it, and it does seem to help in explaining what it is that's wrong with the kind of programmer we're talking about.
(They also have something else that might help in this situation: pair programming)
For example, I was once able to give Microsoft the exact byte offset in Word's binary where their bug lay, that would cause a very rare, difficult to reproduce system crash - this was way before Mac OS X, so application faults would hang the whole machine.
I have Bipolar-Type Schizoaffective Disorder. Because it's just like being manic depressive and schizophrenic at the same time, it is one of the very worst mental illnesses that one can have.
It is very rare, poorly understood and notoriously difficult to treat. My symptoms include depression, which has been suicidal at times - I've attempted in a serious way twice - a profoundly euphoric state called mania, auditory hallucinations and, in my case, visual hallucinations that coordinate with a profound paranoia that leads me to believe that a shadowy, secret law enforcement agency I call The Thought Police are coming, not to arrest me, but to kill me.
I call them The Thought Police because they are The Police Inside My Head. You see, I know very well that they're not real. Unfortunately, just knowing that one is paranoid doesn't make the paranoia go away. When I look directly at my attackers, I can see that they're not there, but when I turn away I can feel their presence again.
There are Five Axes of psychiatric diagnosis. That is, one's Madness is a point in a sort of five-dimensional vector space.
Schizoaffective disorder, schizophrenia and manic depression are all biochemical axis diseases; they are caused by screwed up brain chemistry. They are thought to be genetic, although there is some evidence that schizophrenia can be caused by infectious disease when one is either in the womb or very young.
Biochemical axis illnesses are generally incurable, but their symptoms can often be relieved with medication. I know very well what would happen to me should I ever weary of my life on the run and decide to turn myself in to The Thought Police - and so I am very diligent at taking my daily dose of the powerful, expensive, mind-altering drug which gives me the comfort of staying a step - but just a step - ahead of Them.
There is also a neurotic axis. Neuroses are purely psychological in origin and are usually caused by some kind of unresolved trauma, usually experienced as a child such as sexual abuse, but it can arise in adults too, as with the war veteran's Post-Traumatic Stress Disorder.
Ironically, many neurosis originate as adaptive strategies, that enable the neurotic to survive their terrible ordeal. Thus the soldier who learns to dive for cover at every sharp sound survives the war, but is unable to return to civilian life after returning home - because he still feels the need to dive for that safety.
The little girl who survives her pedophile by imagining his advances to be courtship by a handsome prince my not find her Castle in the Sky such a wonderful place to live when she grows up, gets married and has children of her own.
The neurotic axis illnesses can all be cured, and through "talk therapy" alone, without the use of any drugs - in fact, using drugs to relieve one's symptoms can actually relieve one of the need to ever get better.
Unfortunately, the cure generally takes many years and is collossally expensive. In my case I estimate that I paid just one therapist sixty thousand dollars for thirteen years of weekly psychotherapy sessions.
Request your free CD of my piano music.