Thursday, July 23, 2015

4.42. Fear of the Unknown


Neglected software teetered precariously like a Jenga tower, each brick an absurd joke played on the company. Dunning-Kruger was alive and well, running amok behind the corporate curtain. There was no excuse. You didn't even have to hit Barnes & Nobles up for a book. The power of Google was at your fingertips. Everybody needs to start somewhere, but the point is to move onward and upward. Each line of code I read caused me to question humanity. Where was the pride? Where was the motivation to improve? To grow? To arrive at a place slightly less shitty than yesterday? It sickened me how some programmers treated their job as menial labor. You're creating something. Put some effort into it.

One of my first repairs required little more than what it took to install a WoW addon. Examining the code around a malfunctioning search field, I noticed its library was severely out of date. The last time a human being had put eyes on it was early 2008. It was like trying to get CT_RAID to work in Cataclysm, then realizing the addon hadn't been updated since The Burning Crusade.

All hail jQuery, a JavaScript library leveraged by web developers around the globe. Competent web developers. jQuery did the heavy lifting. It masked the complexities of browser incompatibilities so that a developer could focus on getting things done. When you hear the expression "Work smarter, not harder", but aren't exactly sure how to do that, jQuery is a fine tool to have in your belt.

It took five minutes to download the latest version, drop it in place, and change a few calls around the search field. Just a little effort. That's all. Was that so hard?

A normal person might sit back and bask in the glory of their cleverness, but I couldn't leave it alone. When someone's boneheaded move nearly kills you on the freeway, a rage begins to seep through every muscle that grips the steering wheel. Suddenly, you are compelled to pass the offender. You have to see their face, to see what kind of imbecile they would have to be. You have to give them "the look". I hate you.

I had to see the face of the person who left this code in a state of disarray.

This person, who we'll call The Brosef, was no longer around. It required little detective work to figure out who he was; his pathetic few code comments were initialized, leaving a breadcrumb fail trail. Cross-referencing with a few folks around the office confirmed The Brosef's identity, and within minutes, googling led me to LinkedIn. Seeing his face didn't help, and seeing his activity on the social network only made things worse.

There he was, actively participating in answering programming questions from the community. Only they weren't "answers", so much as they were complete and utter bullshit. Unlike Stack Overflow, where your accuracy is vetted by anonymous peers, LinkedIn provides no such mechanism. You can be as right or as wrong as you wish, and nobody knows the wiser. The people that "vet" you on LinkedIn are the professionals that know you personally, that have worked with you, the sorts of folk whose names appear under the "References" section of your resume. Having a network of professional references is an excellent way to help nail that interview shut, but it's not how you gauge authenticity of someone's skills. When it comes time to answer a skill-testing question, are you going to have your ex-boss come in and take the test for you?

I scanned The Brosef's posts until I couldn't take it anymore. Either wrong or contradictory, his answers infuriated me, until all I could do was just stare at his profile photo in abject disgust. Staring back, with his too cool-for-school sunglasses and smirk of proud accomplishment, his photo seemed to say, "Yo. Looking for a new programmer? Hey...your search is over."

Just like your career.

Talking Tech

Soot stormed down a hallway that had been carved out of the ocean floor, charging the Faceless Watcher, his death and decay rippling and boiling in a familiar circular pattern under their feet. I kept my distance, lighting the mobs up from afar with Syrophenikan's Multi-shot.

"So, Soot...I hear you're like my alter ego, but in the .NET world."

"Yeah, that's right. What's yours again? ColdFusion, right?"


"Heh," he paused between pulls, "Yep, web dev is my game. For quite a few years now. Well, these days it's really more about architecture and specs than actually coding."

"I see," purposefully changing my tone to exaggerated disgust, "so you've become one of those people."

Soot laughed, "Management is not all that bad. I mean, think about what you do now, you're coding off of a blueprint that you write…"

"...that you never end up writing," I said. The wicked problem. Software development demands well-defined rules before you sit down to type the first line of code. Yet, few developers actually end up writing specs. They're boring. They're inaccurate. Nobody reads them. It makes people in suits feel good because they like to see a plan; ask any programmer how much they love to bend over backwards for incomprehensible corporate demands. Nerds just want to be left alone to code.

Of course, these are all excuses for the real answer: many programmers don't know how to write specs.

"The old joke, yeah," Soot agreed, "Well, when you have a staff of offshore developers, you have to write the blueprint. It's a non-negotiable. And I'll agree it may not be as exciting as writing the actual code, but you're still in charge of how it all comes together. You're still designing. You're calling the shots. But without all the stress of late night and weekend bug fixes."

I'll admit, it had a certain appeal to it. Briefly.

"I dunno, chief. I don't think I could trust other developers to do it correctly." I spasmed, flashing back to the audacity earlier in the work day, "It feels like senior level folks are consistently doing junior level shit. Take today, for example. Some rook left a jQuery library outdated for years on this one search field. Seriously! How hard is it to fold library updates into your build process?"

"Ah, I love jQuery," Soot said, "makes things so much easier."

Just then, Lexxii's voice piped up in Vent.

"I dont' use jQuery at work. I really don't like it at all."

I'd completely forgotten that Lexxii was also a web developer. I hadn't really discussed work topics with her in the past, so this was a first.

"Why?" I asked, taken aback, "jQuery is industry-known and tested. At the very least, you gain maintainability through it. Other devs know it, they can come in and pick up where you left off."

Soot politely played devil's advocate, "There are some other solid libraries out there. What's your preference?"

"None. I don't use any libraries. I write all my script from the ground up."


"Hold up. You don't use any library? You write everything from scratch?"

"Yup. All the time."

Soot and I stayed quiet a moment, waiting to see how Lexxii would justify so much extra work. What insight would we glean from her revelation that the developers of 7 million other websites hadn't collectively figured out?

"When I write it by hand, it's way faster."

"...what is? You mean the code executes faster in the browser?"

"No, I mean I write it faster. Faster and easier to write."

Soot said nothing. I stared at the screen a moment in stunned silence.

You know, you could probably build a house faster, too, if you didn't use any concrete, insulation, nails, roofing materials, tile, cabling or plumbing...and just leaned a bunch of boards against one another. Like a rook.

Off and into the dark recesses of my mind stretched an unending series of red flags into forever, flapping violently, harbingers of the forthcoming disaster.

The Grand Ol' Sharpshooters of Texas

You choose people to take care of matters you're unable to. I knew my strengths weren't in raid leading, which is why I put Blain in charge of PvE strategy. I couldn't be in all places at all times, which is why I had role officers. My perfect choice for each promotion was someone whose knowledge surpasses mine in the given area; I don't want to tell them what to do, I want them to tell me what we should do.

In that decision making comes a risk: you don't know what you don't know. You could be putting someone in charge that seems like they're an expert. Beware the illusion of manufactured proficiency, residue from the Halo Effect. Your expert may seem like the sharpest of shooters, when in fact, it is you simply painting a target around the most convenient bullet holes.

DoD rode a successful wave of recruitment during ICC, snapping up names like Lexxii and Bullshark, players that topped meters on day one...and stayed there. Fast-tracking them to Elite served two purposes: it acknowledged their exceptional play and sent a message to core: this is the kind of competitive play you need to aspire to. But the Halo Effect clasped its golden grip around me, manipulating my emotions and decision-making. It led me to believe things that weren't proven, that perhaps a player like Lexxii was a profoundly awesome player and healer, and that her successes weren't simply the result of riding the coat tails of her former guild. That she was an expert player because of her skills, not despite them.

The evidence of a freshly painted target dripped its red-and-white evidence over every early decision I made regarding Lexxii. I picked her for healing officer not because I was convinced of her ability, but was unconvinced of Fred's. Fred struggled with healing and survivability; to Lexxii, it came instinctively. Yet, I was having a difficult time pinpointing in my mind an exact instance where Fred had died in an amateurish move. By contrast, Lexxii had been dying a lot in these first few months of Cataclysm raiding.

And how closely had I ever examined those meters? Lexxii preferred Holy, choosing Disc only at particular moments near the end of Heroic 25-Man ICC. I hadn't boned up on specs, since ironically, this was what I put her in charge of. But in my brief research of 4.1 Priest theorycrafting, Disc was dominating. That wasn't to say holy priests were bad, but in order to pull holy off, you had to be good. No coat tail riding allowed.

Some saw through the facade early on. But as luck would have it, the types of people complaining the most about Lexxii were the sort of people whose opinions deserved to be ignored. If naysayers wanted to choose the cynical route, they were free to. In my mind, Lexxii earned the chance to prove them wrong, to prove she was competent.

Competency, however, is not enough of a qualifying factor for leadership. It's barely enough to put you in the running.


Neps filled in the blanks, pointing out how effectively I'd painted the target around Lexxii.

"We've chatted a few times. It's not great," he said, referring to her spec. Neps always tried to be polite when discussing the captain of a failboat. I listened as Neps picked apart her spec, talent by talent.

"And you've recommended these changes to her?"

"Yep. She doesn't seem that interested in changing."

"She give you a legitimate reason why not?"

"She gave reasons. I don't know that I'd call them 'legitimate'."

I took a deep breath, that one you take when you come to the realization you've made a bad judgement call, "What's your take?"

Neps thought a moment, then spoke, "I don't think she's comfortable trying anything new."


Anonymous said...

This hit home for me. I've been in my industry for going on 17 years or so, and I can say now, from my current position of leadership and knowledge, that I got by for at least half the time with some savvy bluffing and a confident 'I know what I'm doing' facade. I figured I'd just say 'I know tool X' and then quickly learn it to the point of competency (if not quite mastery).

Lucky for me though, I've always been willing to hear criticisms and adjust accordingly. It almost happened as if accidentally that I realized one day 'Wow, I think I'm actually finally GOOD at my job'. I see many in my industry that subsist more on WHO they know than WHAT. I used to be more of the former, but am now a mix of both.

And as a parallel, in WoW I've almost always mained a warrior. And I swear, I have tried my everloving best to produce max deeps but have always, always been short. I've read all the articles, guides, and forums. It's so frustrating that I feel like there is another button I've never seen that I'm not using. I'm generally used to being good at stuff in a relatively short time. I've considered at one point trying to actually bribe a good player into personally helping me figure it out.

As a result though I've often been criticized, sometimes good naturedly, but usually harshly and anonymously. To top it off when I try other classes I seem to have no problem cranking out the goods. At this point I can't even play my warrior in any groups except for the casual friendly LFR or two. Even when I "top meters" there I'm suspicious that it's just because I out gear and/or am the 'least worst' in the group.

All that is to say, I can kinda see (but don't excuse) why someone would just armor themselves with an obtuse veneer of 'I'm doing it MY way no matter what you say' attitude. It would have saved me a lotta angst, because in WoW it's a lot harder to hide incompetence when you're in a formed group with access to logs.

I guess I can see where Lexii is headed here. I hope she learned to face up to her failings, but know she probably didn't. People are sadly just too predictable when you've had enough experience to see the patterns.

For me I've given up trying to be 'good at warrior' in lieu of being good at other stuff. But man does it stick in my craw sometimes that I couldn't ever figure it out...

Shawn Holmes said...


Thanks for sharing your story...and I have to ask: How do you have your keys set up? ( - Wax On, Wax Off)

Anonymous said...

Hah, yeah, I remember when I read that section thinking 'thank god at least I have -that- part taken care of!'. I've gone through a few 'total overhauls' of my keybinds in an effort to pinpoint if that was the problem. I end up remapping my brain and muscles to the new setups, but the end result is always the same: I'm about 10-20% short of others on the meters.

Mind you, I don't completely trust the meters (especially since when I ask others what their meters say, I get conflicting results from mine along with the occasional affirmation). If the job gets done, it gets done. But dammit, it's not about that. It's about excelling at something you do. If you spend significant amounts of time doing it, you might as well do it as well as it can be done for maximum satisfaction, IMO.

The fact that WoW allows there to be such a degree of excellence without punishing you horribly if you're not at the top is one of the great things about it (believe it or not sometimes I just want to relax when I'm playing and not worry about mastery). If I work at it, I can do amazing things. If I don't, then I don't expect to be amazing. Which is how it normally works... except for my warrior, haha :)

Fred said...

I wanted to come back to this post for a couple of weeks but held off. I hate making excuses for myself but wanted to chime in on one comment here. " Fred struggled with healing and survivability; to Lexxii, it came instinctively. Yet, I was having a difficult time pinpointing in my mind an exact instance where Fred had died in an amateurish move"

The only time survivability ever came up was with Beasts in ToGC. The problem that I had was that, at the time, I was not using a computer with a dedicated GPU. Rather, I was sitting on a box store eMachine (stop laughing) with an integrated graphics chip. The constant deaths to being targeted by Icehowl are the reason I bought a new machine and swore to always have 2 graphics cards my disposal. Even today, not really playing any games, I have a spare graphics card, sitting in it's box next to my desk.

web lol said...

kul post !