Friday, October 31, 2014

Frivolous Friday, 2014.10.31: The Programmer's In-House of Horrors

Now that software development has become more mainstream--yea, even glamourised--the stereotype of the introverted nerd in the remotest office-corner typing cryptic incantations to invoke the blessings of the Server Gods has finally been put to rest.  (And good shuttance!)

Mind you, I'm certainly not claiming that programmers have lost all the personality quirks that come with the trade.  In fact, after over two decades in the workforce, I can't help but think that a course in Abnormal Psychology should be mandatory for every college graduate.   For MIS/CS majors, this should probably be a minor.  But it's never going to happen, of course.  So for those still in programming school, here's the Rogue's Gallery that just might be lurking in a cubicle near you at any given point in your career.

"Charlie Victor" -  The nickname comes from the CTRL-C and CTRL-V keyboard shortcuts for cutting and pasting.  If you're finding code that is all over the map style-wise, I strongly recommend Googling a bunch of snippets.  Don't be surprised to find StackOverflow, W3CSchools, or possibly 4GuysFromRolla (depending on the language) at the top of the list.   In that case, you're not working with a real software developer; you're working with Red Green.

The Magpie - Can't stay away from shiny stuff.  Which is fantastic if they're scratching their own itches--more power to them, then.  But for a software shop with a legacy code-base, the platforms, languages, & APIs are typically chosen on the "second mouse gets the cheese" principle.  Rightly so, I might add.  The worst part of working with the magpie, however, is by the time everyone else on the team is up to speed with the new hotness, they've already moved on to the new new hotness.

The Baby Duck - For all practical purposes, the antithesis of Magpie.  Covered elsewhere.

The Cowboy - When I worked in more of a startup scenario, I once had a co-worker directly editing files on the beta server while I was demo-ing them to a client.  'Nuff said.  (He's actually a pretty decent guy; it was more product of us flying by the seat of our threadbare pants for years on end.  That's a management issue more than anything.)

The Warrior-Priest(ess) - I owe this spot-on analogy to a client who was also the loudest critic of my team's work.  He was referring in particular to the UNIX "warrior-culture, where one must strive and suffer for one's knowledge" (verbatim quote).   This was pre-Ubuntu, pre-ServerFault, mind you, so he totally had a point.  Alas, it's not only UNIX.  The Warrior doesn't care what you learned; they're only interested in how many scars it left.  (It's a frighteningly specific incarnation of the sunk cost fallacy.  You, on the other hand, are sane enough to only do that sort of thing with, like, your house or car.)
 
The Firehose - This is the polar opposite of the Warrior.  Ask a simple question, be digitally water-boarded with links to Wikipedia articles, YouTube how-tos, tutorial blog-posts, whatever.  Don't be surprised if you climb back out of that rabbit-hole as clueless as you were falling in.  (Strangely enough, I once worked with someone who could toggle between Warrior and Firehose any given day.)

The Eternal Prototyper - Real world constraints?  Never heard of 'em.  Oh, you have to support varying levels of hierarchy in the live version of this navigation widget?  Sorry-not-sorry--they only hard-coded two.  But boy, did it ever look snappy in Safari on their Mac.  Sucks to be you watching it blow chunks in IE8.  But, hey, they're the bleeding-edge genius and you're just the bit-twiddling code-monkey, right?

The Goth - Like the Rolling Stones, this species of coder wants it all painted black.  At least the screen of their IDE, anyway.  Outside of I/T, it probably looks like a terror of the space-bar and "Enter" key....maybe even the "Tab" key.  To other coders, symptoms of the pathology include horrors like single-character variable names--all declared inline, nat'cherly.  Also?  Transcontinental method-chaining.  Nested callbacks with more layers than a matroyska doll.  Code so dense you need shades and a lead hoodie for the Hawking Radiation.

Pollyanna - "Validating input is just time that could be spent adding new features.  Hackers would never bother with our small-potatoes website.  Besides, our users are all internal--they know what they're doing, right?"
(Everone Else:  Twitches uncontrollably whilst donning tin-foil hat.)

The Road-Tripping Parent - Remember "We'll get there when we get there!"?  Admittedly, there may be a time and a place for this kind of push-back.  Typically, it's during the triage that happens after someone feeds that cute, innocuous little feature request after midnight and it cannonballs into the swimming pool.  That being said, having a more accurate sense of status than a Windows progress bar is a core function of a developer's job.  And, as much as I'm most certainly not a card-carrying member of the Steve Jobs Fan Club (Team Woz, baby!), he nailed it:  "Real programmers ship." 

Captain Flypaper - You know the "Let's throw it against the wall and see if it sticks" schtick?  Yeah, well, some programmers apparently work in flypaper-upholstered cubicles, because they expect every bit of code they write to stick on the first throw.  (Mercifully, unit-testing + automated builds are becoming the norm, which should either push these folks into a more disciplined workflow...or another career.)

The Helicopter Parent - Unless the individual in question is a natural-born passive-aggressive control-freak, this coder is largely the product of working with some or all of the above.  And when they're the senior geek or team lead who's expected to save the Earth week-in-and-week-out, it's difficult not to sympathise.  Until, of course, you're on the receiving end of, "[sigh]...Well, that's not how I would do it..." Or you find that rewrites of your code have been quietly checked into the VCS.  Again, this sort of thing typically boils down to an original sin committed at management levels.  But it's still a heckuva morale-buster for any coder within its blast-radius.

Before wishing everyone a safe remainder to their Hallowe'en, I'd like to give credit for the idea of nick-naming programmer personality quirks to Michael Lopp, who runs the Rands in Repose website.  (Sample:  "Free Electron" + the comments.)  If you don't feel like wading through years and years of blogging on the subject of working with geeks, you can save yourself a bunch of time by just buying the two books he's written.  They're laugh-out-loud funny, and I re-read them every couple of years for grins.