Become a fan of Slashdot on Facebook


Forgot your password?
Programming IT Technology

Are Quirky Developers Brilliant Or Dangerous? 1134

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?"
This discussion has been archived. No new comments can be posted.

Are Quirky Developers Brilliant Or Dangerous?

Comments Filter:
  • by ivan256 ( 17499 ) on Monday March 16, 2009 @10:19AM (#27209689)

    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.

  • by sunking2 ( 521698 ) on Monday March 16, 2009 @10:20AM (#27209713)
    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.
  • by Trepidity ( 597 ) <delirium-slashdot.hackish@org> on Monday March 16, 2009 @10:22AM (#27209761)

    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.

  • by bytethese ( 1372715 ) on Monday March 16, 2009 @10:26AM (#27209805)
    To make an analogy here, he sounds like the TO of coding...
  • Amazing (Score:2, Interesting)

    by WindBourne ( 631190 ) on Monday March 16, 2009 @10:28AM (#27209835) Journal
    "Josh" is the kind of guy that develops Googles, Yahoo, etc. This idiot is obviously one of those guys who is jealous of any who show better skills then themselves. That does not mean that "Josh" should not be encouraged to change for the better, but a lot of that is simple maturity. OTH, this poster will never be a better coder.
  • team player ? (Score:4, Interesting)

    by artg ( 24127 ) on Monday March 16, 2009 @10:29AM (#27209847)
    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.
  • They do exist (Score:5, Interesting)

    by Maximum Prophet ( 716608 ) on Monday March 16, 2009 @10:29AM (#27209849)
    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.
  • One sided story (Score:5, Interesting)

    by oneiros27 ( 46144 ) on Monday March 16, 2009 @10:34AM (#27209899) Homepage

    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.

  • Work from home (Score:2, Interesting)

    by jlebrech ( 810586 ) on Monday March 16, 2009 @10:37AM (#27209963) Homepage

    wouldn't he be more producetive if he worked from home?

    You now have a performance benchmark, due to him having previous work done in the office.

  • Josh the lone IU (Score:4, Interesting)

    by pohl ( 872 ) on Monday March 16, 2009 @10:43AM (#27210083) Homepage

    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.

  • Re:Perhaps (Score:3, Interesting)

    by gmack ( 197796 ) <<gmack> <at> <>> on Monday March 16, 2009 @10:51AM (#27210193) Homepage Journal

    A few years ago I worked for a company that had one such person on the team. Everyone thought he was a genius and tolerated the fact that he couldn't even be bothered to bathe or wear clean clothing. He would come when he felt like it and he would leave when he felt like it

    One day we had issues with his software and the boss went to find him only to find out he wasn't in the office. When the boss woke him up at 1:00 his only reply was "I didn't realize it's monday"

    Needless to say he was replaced and, as the poor new guy quickly discovered, it turns out the reason no one could understand his code was that he was an alcoholic who couldn't organize his code any more than he could organize the rest of his life.

    Being eccentric is not an excuse to be a selfish jerk.

  • by dcollins ( 135727 ) on Monday March 16, 2009 @11:03AM (#27210365) Homepage

    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.

  • by Anonymous Coward on Monday March 16, 2009 @11:09AM (#27210479)

    I used to be such a person. Your answer is: Yes, it is that hard.

    You put it as if it is by choice, but in most cases it really isn't. Sometimes I would forget to take a shower or would not remember to brush my teeth. (I'd document the fuck out of everything, though). It was never by choice, and I really wanted to improve myself.

    After about 6 years, I've finally managed to. I designed a rigorous schedule that I follow and must follow to keep "fitting in" so to speak, and despite the fact that I still drop the ball sometimes it has improved my quality of life magnificently.

    I'm not saying you're wrong though, heh. Just that usually, most people aren't doing it by choice (or even aware of it). In most cases it can even be addressed or self-addressed. I think it really comes down to communication in the end.

    My 2c. Take it for what you will.

  • Re:Perhaps (Score:2, Interesting)

    by CFTM ( 513264 ) on Monday March 16, 2009 @11:14AM (#27210569)

    Go back to happy land.

    Assholes are on every team and it has nothing to do with eccentricities. Part of being an adult is working with assholes.

  • by radtea ( 464814 ) on Monday March 16, 2009 @11:14AM (#27210581)

    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.

  • Not just software (Score:4, Interesting)

    by cirby ( 2599 ) on Monday March 16, 2009 @11:17AM (#27210641)

    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...

  • by tixxit ( 1107127 ) on Monday March 16, 2009 @11:22AM (#27210739)

    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.

  • by tnk1 ( 899206 ) on Monday March 16, 2009 @11:25AM (#27210795)

    You may have missed the point where it was believed that it was possible that the millions of dollars saved was due to the millions of dollars worth of screw-up in his code, or even actual sabotage, to begin with.

    This guy was the mastermind of his project. If his code needs to be fixed in order to generate millions of dollars in savings, then the company didn't lose anything by losing him, except that which they let him control. If you churn out a high volume of good code and a high volume of crap, your net effect on the company tends to start looking like nil. That's before the millions in sexual harassment awards, of course.

    Don't get me wrong, there is nothing wrong with a "quirky" developer. I know many of them and most of them are harmless. They tend to get a little crabby at being pulled away from code, which is understandable because they like coding and they also tend to have deadlines. Most of them, however, understand the bottom line of the place that employs them.

    Documentation is not optional if you are in a workplace where your code needs to be used and operated on by others. If anything, it keeps people from annoying you later on (if you are of the antisocial mindset).

    Any developer who doesn't believe in documentation, or at the very least, does not even give lipservice to the concept is a long term liability for your company and needs to be corrected or be fired immediately. I mean, how hard can it be for someone who spends their time typing out text all day long to type out some extra text in English that explains things? When I code, its second nature to type a comment inline to make sure I remember my latest stroke of brilliance that was brought on by the hallucinations from the two liter of Mountain Dew I just drank. Those comments can easily be turned into documentation of a rough sort.

    It needn't be a book nor does it have to be flowery prose, that's what tech writers are for. It does have to exist, however.

    I have had to sit on the end of one too many developers who don't believe that their code needed documentation or even comments. I don't know if they saved the company millions or not, but I can tell you that it definitely cost us thousands of dollars in paid time for me to stare at their junk just so I could find the right place to make a simple change to the application.

    That said, you're right. The manager in this case should have been fired, but in addition to the developer. The manager, in all likelihood should have set limits on this person from the get-go instead of becoming dependent for their own performance on a person who doesn't even believe in showing up for work, let alone to help out in a customer situation. Such a manager is a lame weakling that was likely getting run over in more than one situation like that.

  • by fl!ptop ( 902193 ) on Monday March 16, 2009 @11:25AM (#27210813) Journal

    If you are not replaceable, then you are too dangerous to have

    my dad once told me, "a wise employee works to make him/herself irreplaceable."

    he continued, "a wise company manages their workers so no one is irreplaceable."

  • by thhamm ( 764787 ) on Monday March 16, 2009 @11:32AM (#27210933)
    I find cuddy to be infinitely hotter than 13 or Cameron.

    absofsckinglutely [].
  • by Anonymous Coward on Monday March 16, 2009 @11:43AM (#27211109)

    Yeah, and what if the owner of the company declares you one, and it happens in more than one company, and you regularly live outside the traditional chain of command of the company, answerable only to the owners?

    And the vast multitudes of people living their lives wrapped in the organizational framework you conceived for them, day after day, month after month, year after year, focusing entirely on what you decided was important long ago and ignoring anything that doesn't appear on their screen as though it didn't exist in the world... their significance just dwindles away?

    We're just wannabe posers. Who happen to run your lives in ways that you will never, ever understand, and you will never even acknowledge us, let alone be grateful.

    I should have gone into medicine...

    Just imagine how much more "genious" you would be if you weren't a socially inept asshole.

    You need to work on that. There's much more to it that being smart.

  • by bberens ( 965711 ) on Monday March 16, 2009 @11:45AM (#27211143)
    There's a give and take. In the grander scheme of things it's more important to have a cohesive team than just about any other single factor. At the same time when the proverbial stuff hits the proverbial fan it's that weird/obnoxious genius guy who comes through with the solution that saves the day more often than not.
  • by Anonymous Coward on Monday March 16, 2009 @11:45AM (#27211155)

    and that seems to be A-OK, doesn't it.

    I mean, that's why he gets ~50x the salary of the workers and a bonus in the millions, yes? Because you MUST HAVE HIM!

    Strange isn't it, that when it comes to executive or director pay, your company pays top dollar "because we must have the best", but when it comes to the people who actually DO the work you sell, it's all "it's a competitive market and we can't afford to spend too much on salary or we'll lose customers".

  • by Austerity Empowers ( 669817 ) on Monday March 16, 2009 @11:51AM (#27211263)

    Bingo. There's never been a shortage of self-absorbed assholes in any line of business, ever. The difference is that in most corps today, management types tend to be very socialized and promoted via american idol like popularity contests such that "Josh" is either THE boss (i.e. runs the company) or he's your coworker. Possibly "Josh" is most synonymous with software because it's a new field and relatively poorly understood...but this is changing.

    The issue is that in most companies Josh is totally unwelcome and short-lived, when in fact Josh is necessary. Quite often Josh is actually smart, and sees things others do not see. He knows that 10 dumb people working together as a group produce 5x the dumb output, the rest is released as waste in the form of donuts and coffee.

    Much like chemotherapy, he may do some good, but many think they would prefer the alternatives because they have less unpleasant side effects. The fact is it takes all types to succeed, and Josh should only be shown the door if in fact he does something so severely wrong there may be legal implications for the company. Otherwise he should be sanctioned appropriately, and for God's sake never promoted to management, but retained. Let him carry the cost of his personality in a stunted career and missed opportunities, and he may eventually grow to be a guiding light rather than a frikken shark with lasers.

  • by Beardo the Bearded ( 321478 ) on Monday March 16, 2009 @11:53AM (#27211287)

    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.

  • by PinkyDead ( 862370 ) on Monday March 16, 2009 @11:53AM (#27211289) Journal

    You can be an idiot and be irreplaceable - and of lot of these guys are.

    One clown I came across deleted all the test code, because he thought testing was a waste of time. He was gone a good 8 months when that shit hit the inevitable fan.

    The problem is that they write shit hot amazing code that does the job and impresses the PHBs, but if it is unmaintainable by a team then:
    (a) It's not scalable (in terms of growing the product)
    (b) It's long-term useless

    This is the equivalent of a teenager thinking they are super drivers because they can speed at 130mph with their eyes closed. An experienced driver knows that deer can jump into the road.

  • by Imagix ( 695350 ) on Monday March 16, 2009 @11:54AM (#27211333)

    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."

  • by Jaeph ( 710098 ) on Monday March 16, 2009 @11:59AM (#27211395)

    "Maybe there would be more documentation if you established reasonable deadlines."

    Nonsense. I despise this excuse - you make it sound like documentation is difficult to write. If it's clear in your head, it will take you moments to put down onto paper. If it's not clear in your head, you have a problem.

    I have never understood the so-called geniuses who have time to work overnight on some problem but can't find a spare hour to document and comment. Heck, if you're doing it right you should be commenting as you go anyways, just to keep your own thoughts straight.

    But go ahead, don't listen. Blame the bosses. It's always their fault. The genius hacker is always beat up by evil management in the standard slashdot saga.

    Again, utter nonsense.


  • by Foofoobar ( 318279 ) on Monday March 16, 2009 @12:03PM (#27211471)
    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.
  • Re:Peter principle? (Score:5, Interesting)

    by Maxo-Texas ( 864189 ) on Monday March 16, 2009 @12:08PM (#27211569)

    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.

  • by hairyfeet ( 841228 ) <> on Monday March 16, 2009 @12:09PM (#27211575) Journal

    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?

  • by hondo77 ( 324058 ) on Monday March 16, 2009 @12:10PM (#27211593) Homepage

    Our corporation has now cut our productivity by 75% in the last 5 years due to SOX related procedural changes. It takes 45 days to put a 1 line code change into practice.

    For the record, I worked at a place where we could release SOX-compliant changes within an hour of the need arising. However, our normal release cycle was weekly and we passed all of our SOX audits. If your company's productivity has declined 75%, don't blame SOX.

  • by Marillion ( 33728 ) <> on Monday March 16, 2009 @12:21PM (#27211763)

    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."

  • except I was the one that debugged their "sloppy" and "crappy" code that while brilliant, had crashed the PCs and servers 12 times a day.

    Eventually the extra stress of working on spaghetti code with no comments or documentation or flowcharts gave me a lot of stress and I got sick on the job, and then eventually fired for being sick.

    Now I don't have a job since 2002 and the Brilliant but sloppy and crappy coders still have their jobs and promotions and pay raises.

    Why does management like them? Because it takes one to know one, jerks like or love other jerks. In order to break into management, one has to become a jerk to their coworkers and underlings, or else they cannot manipulate them into doing work. Then when they offload the hard work to their coworkers, they are considered to be delegating work. All I got was insane puzzles to figure out from coworkers who were considered brilliant, but didn't know how to do quality control, secure programming, or even standard programming. Just sloppy code, crappy code, that was one big mess that coworkers like me had to clean up after.

  • by coats ( 1068 ) on Monday March 16, 2009 @12:32PM (#27211923) Homepage
    Qualifications: I'm a software systems architect with over twenty years experience in environmental supercomputing. In that time, I've seen a lot of screwed-up code and screwed-up systems.

    In that time, the worst screw-ups have been exclusively codes developed in bureaucratic organizations.

    It seems to me there is a personality type that is in love with structure: it doesn't matter whether the structure is appropriate or not, just that it proliferate. This leads to codes that are not merely baroque, but positively rococo. And this is the personality type that flourishes in bureaucratic environments.

    The first principle of software engineering is Occam's Razor, more flippantly stated nowadays as "Keep it Simple, Stupid."

    My experience says that the lessons Kernighan and Pike teach in The Practice of Programming are de-valued in development-bureaucracies. And DeMarco was right-on in The Deadline about that subject, too.

  • by Rumagent ( 86695 ) on Monday March 16, 2009 @12:39PM (#27212081)

    Amen brother. To quote the great Hoare:

    "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult."

    It was true then, it is true now and it will remain true in the future.

  • by Dark Coder ( 66759 ) on Monday March 16, 2009 @01:02PM (#27212527)

    Try hiring ANY decent coder that works with my former boss's highly impossible deadlines.

    I'm with previous parents. A good fire extinguisher (Asperger's) is handy to have. Deadline gets met, even though the end-result (support and maintenance) sucks.

    Most start-ups are in it for a quick and lucrative exit strategy (post IPO-sale).

  • Re:Perhaps (Score:2, Interesting)

    by agentultra ( 1090039 ) on Monday March 16, 2009 @01:04PM (#27212553)

    Assholes, exactly -- people who are not genius' can act this way too. I've met countless sales people and executives who've had sexual allegations against them and who've siphoned off company money to fund affluent lifestyles; act like complete pricks to everyone they meet; and generally be very "Josh" like. Yet they seem to lack one thing: intelligence.

    I can understand a lot of the "devil's advocate" positions; but the reality is that this editorial is supporting a straw-man argument.

    A genius developer isn't universally predisposed to defecating in public and verbally abusing people.

    They may be eccentric and the scale of their eccentricities vs. their practical value to society will certainly determine how far they go. More often than not, such people will either disappear from corporate life or else end up running it. The worst thing possible for an eccentric genius developer is probably being stuck as a "cog in the machine." They'd probably be more likely to flourish in research, leadership, or academic positions.

  • by billcopc ( 196330 ) <> on Monday March 16, 2009 @01:26PM (#27212967) Homepage

    they realize that intelligence is only useful if the person can work with other people or can effectively communicate his work

    So you're essentially saying everyone needs to meet the lowest common denominator, in order to be productive ? Fuck that, some of us do get hired because we "think outside the box" and can pull off feats of mental strength. Should we play dumb just because we share an office with a bunch of glassy-eyed imbeciles ? You're going to have different skill sets and intellectual extents in any office, the not-so-secret trick to being successful is to maximize each player's potential. If one guy is really talented at coding those mind-benders, but sucks at documenting his work in layspeak, you hire an assistant. Let the code wizard write code, and the doc wizard write docs. What's so horrible about that ?

    Do you expect your accountant to be a top lawyer too ? No ? Then why do you expect your programmer to be a top technical writer ? Yeah, we know a little bit about the "other side", the same as your accountant should know the rough guidelines of tax law, but one is never a replacement for the other.

  • by jellomizer ( 103300 ) on Monday March 16, 2009 @01:37PM (#27213199)

    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.

  • by julesh ( 229690 ) on Monday March 16, 2009 @01:42PM (#27213269)

    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)

  • by MichaelCrawford ( 610140 ) on Monday March 16, 2009 @03:57PM (#27215577) Homepage Journal
    I have been a software engineer for twenty-one years, at one time having the role of "Debug Meister" as a system software engineer at Apple Computer - this because I'm a wizard at assembly debugging and reverse engineering.

    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.

    But Wait, There's More!

    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.

  • by Weaselmancer ( 533834 ) on Monday March 16, 2009 @04:10PM (#27215737)

    There are struggles that are worthwhile and there are struggles that are pointless, but to say that no struggle matters is speaking from both ignorance and arrogance. I mean no offense, we're all ignorant and arrogant to some extent.

    None taken.

    I'm not suggesting that no struggle matters - quite the contrary. What I am saying is that there are struggles that can make a difference to you, and there are those that can't. Being a perpetual outsider because the whole world sucks is an example of just such a pointless struggle.

    doesn't make you any better or make your life more worthwhile or valueable than someone who can't afford to fix their teeth. Their pain and alienation may be far more meaningful than your "boring life" (your words).

    Boring was from the OP, I was quoting. I'm happy with my lot.

    I'm not placing more value on my life than anyone else's. In the end, we're all just about twenty bucks worth of water and salt anyways.

    What I am saying is that using pain and alienation to make your life meaningful is a waste. Stop carving My Chemical Romance lyrics up your arms up and enjoy what you've got.

    Life ends. Surprisingly quickly, too. So make the most of what you have.

    All I'm saying is you don't have to settle for assimilation, blind hate, futility, alienation, mediocrity or ambivalence or comfort. Do something with your life and make the world a better place, but don't "sell out" or become so bitter that you are divorced from the world. It's not worth it for you or anybody else.

    I'm not even vaguely bitter - I think we're arguing at cross purposes here. I'm saying be happy because life is short. Too short to waste it with useless meaningless teenaged angst. I have friends in their late 40's who are still clinging to it. All it buys them is suffering. There isn't any meaning to it. There isn't any point to it. Or any beauty or truth either. It's just pain and you don't need it.

    If you want to go out and help people, do it. If you want to grow roses, do that. Do whatever you can to wring as much joy out of your short years as possible. What worked for me was to stop fighting things and join the human race.

    I have never been as happy and fulfilled as I am right now. When I look down my street and see people going about their lives I don't see drones, or sell-outs, or mindless zombies. I see people who are probably as happy and blessed as I am. And rather than cook up a list of reasons why they suck, nowadays I think they're probably a lot like me. And hopefully just as happy, too.

  • by shutdown -p now ( 807394 ) on Monday March 16, 2009 @05:10PM (#27216861) Journal

    I dont hear anyone bitching about executive pay or perks.

    You've got to be kidding...

    If their code is so useful in the first place (and it is by virtue of the fact that most companies would rather hire one talented developer than several mediocre ones), why not ensure they stay?

    Because it is usually quite possible to hire developers that are just as good, but that are not jerks. They may be slightly less brilliant, but they make up for it because they can actually work well in a team.

    By way of disclosure I am one of those developers - and I argue to have things taken off of my plate (documented, designed etc) outside of my scope specifically because I dont know what will happen tomorrow (hit by a bus, food poisoning etc) and a team of people like u most likely will take over.

    First of all, you assume that I'm one of the "rank and file" devs. In practice, I had been in the role of "star developer" in my division in the past, so I know how that works from the other side. But note that we aren't talking about this phenomenon in general, but about a very specific subset of such people, who are "good" (for some definition of it) on the technical side, but are arrogant and uncooperative with other people whom they perceive to be lesser.

    The number of times I've told management "yes its possible but do you really want me to responsible for the well-being of your company, if I drop dead where will that leave you?" cannot be counted.

    See now, if you ever told that sort of thing to your manager, TFA is not about you, and neither are any of my comments above. You seem to understand the bigger picture, which isn't just about you.

    Your requirements for (excessive) documentation is a direct transfer from my finite amount
    of time available on this earth (solving problems) subsidizing your mediocrity. GROW!

    Why do you assume that I require "excessive" documentation? When I say "bad docs", I mean stuff like 50 kLoC of code that has not a single comment in it; not forgetting to fill in the "detailed description" in the documentation comment for a private method!

    By the way, regarding the "finite amount of time" - that's all well and good when you solve problems for your own sake. But when you're at work, the time is not "yours", really - it's bought by the company you work for, and you should use it in a way that's more efficient for the company. Sometimes that means being more patient when it comes to dealing with abilities of people around you, even when they're lower.

    I was in that position as a senior dev who got promoted to lead very fast, and had to learn to manage a small team of my own. I had to struggle with that "if you want to do things right, do it yourself" attitude. Yes, I could do it better than my juniors could, and faster as well. But you know what? Once I've learnt to delegate appropriate tasks, and, when coding, to keep in mind that I may later want to assign the mainenance of that bit of code to one of the juniors, and dumb things down sometimes, or at least comment the "smarter" pieces even when they would be obvious for myself, I've found that the overall productivity of the team increased - precisely because I could offload those maintenance tasks to them, and keep working on new code that truly required more knowledge and experience to be done right.

    If you keep writing more and more code that only you can maintain, then, eventually, you'll end up doing nothing but maintaining that code - and that is usually not fun (and at that point, people often pack up and leave to find a more "fun" place to work at, and start writing "fun" code there as well... and cycle repeats - and the old place is left with unmaintainable "smart" code, and no-one able to deal with it). And it doesn't matter whether it's because you're being too much of a smartass, or because the people around you are truly idiots - the end result is the same. Worth keeping that in mind for one's own sake.

  • by wrook ( 134116 ) on Monday March 16, 2009 @11:35PM (#27221145) Homepage

    Programming can be an extraordinarily complex

    Sometimes this is true. If you have to do a lot of math, for instance, it can be true. But, if I look back on my career of 20 years of application programming I can think of only 1 or 2 instances where the problem I was working on was difficult. The rest of the time it was the code that was difficult.

    If you find that programming is extraordinarily complex a substantial amount of the time, then you have some problems. It's only that way because you or your team have created complexity when you really don't need it. Pair programming with somebody who is extremely good at refactoring can help you learn how to improve.

    I know this is hard to believe. Especially when you are used to being the superstar programmer on the team. You are able to deliver when others can't. And your code is probably better than other code you've seen, so you think it must be really good.

    But there's a whole new level you can get to. I'm not saying this to put you down. I'm still working hard to improve myself. But with the approach you are taking, you'll hit a glass ceiling pretty quickly where you can't get any better (from the sounds of it, you've already hit it). I just want to encourage you to look at other methods so that you can break through the place you're in now.

    When you do get through it, you'll find that programming extraordinarily simple, but that "good taste" is difficult to refine. And that refinement requires conversations with other programmers (both in code and in human speech). These conversations require give and take, not leadership; learning and sharing, not enforcing direction. I hope that helps (but even if it doesn't, good luck anyway :-) )

Always leave room to add an explanation if it doesn't work out.