Tuesday, February 12, 2013

The ghost who codes: how anonymity is killing your programming career

Tuesday, February 12, 2013

He lurks quietly in the darkness emerging only to briefly churn out some markup during business hours. He has no face, no name, no records. His only weapon is his word. He is:

The Programmer - "The Ghost Who Codes"

This is not the work of fiction, these ghosts walk among us, blending seamlessly into their environment until one day they emerge, seeking a job somewhere else. And when they do, prospective employers look for them and… they can’t be found. Anywhere.

Yes, the “Ghost Who Codes” is real and you may even be one of them without realising what it’s doing to your career. But it’s not too late – you can still emerge from the shadowy darkness but it must be done promptly, it’s not something to delay.

On the internet, nobody knows you’re a dog (or a programmer)

The classic cartoon made light of the fact that the internet affords you the ability to create your own identity; you can claim to be whoever (or whatever) you desire. A resume is not that different and this is at the heart of what I want to get at; CVs where claims are made but because the candidate is a metaphorical ghost there exists no record of them – no substantiation of them – anywhere on the web. Maybe this is something you’d expect when hiring, say, a Battle of Gettysburg historian but it’s not something you expect when hiring someone in the high tech online-centric world that is the software industry.

Here’s what I’m talking about: a CV comes in and naturally it’s a glowing account of all the wonderful things the individual has done over many years including their vast experience across a wide range of technologies and versions. But it’s their account of history and naturally they’ve embellished things either to improve their marketability or because they’re unconsciously incompetent (that’s not intended to be a derogatory comment, “you don’t know what you don’t know”). So as a conscientious potential employer you seek out more information to substantiate the vast wealth of knowledge the candidate promises to bring you:

You look for their LinkedIn profile. There either isn’t one or it’s a copy of the CV and doesn’t reflect any group membership, peer discussions, endorsements, connections or any sort of engagement with the software community.

So then you look for a Stack Overflow profile. No luck there, there are no questions asked and no answers given. They’ve not contributed knowledge nor have they sought it out in any active way.

Maybe they just like sticking to the Microsoft channel and have a healthy MSDN profile for the same reason? Hardly.

How about a GitHub account or other participation in open source? Nope, nothing there either.

Perhaps a Twitter account or public Facebook page to demonstrate the sort of information they feel is relevant in sharing or even just contains some of their wittier insights to raging semicolon versus non semicolon debate? Nope.

Could there even be a Disqus account highlighting their agreement (or not) with any of the hundreds of thousands of useful pieces of software development material the comment engine accompanies? No chance.

A blog? Forget about it.

I’m going to go out on a limb here and say this: if this is you, it could be killing your career prospects because it paints a very unfavourable picture. Let me explain why.

Truly effective developers leave a paper trail

Scott Hanselman calls them Dark Matter Developers; they make up a significant proportion of the universe yet you never see them! In his usual affable way, Scott points out that these guys are probably happy getting the job done with their ASP.NET 1.1 and punching out when the clock ticks over home time before making a hasty retreat, assumedly to some form of non-programmer based activity.

That’s fine, but these are not the people with passion. They’re also far from the most productive (can you imagine no generics, no web forms master pages, no MVC, no ORM, etc.) and they’re not going to be introducing any innovation or contributing much to improve the environment they work in beyond perhaps being good company.

But one of the biggest deficiencies with this audience is that they’re working in a vacuum. What happens when they get stumped on something? Everybody gets stumped on something and it’s usually not an odd occurrence, question is, what happens when you do? Those who can recognise they’re stuck early and reach out to the community for support stand a significantly better chance of not only getting the problem fixed early, but probably getting it done better as well. Of course this then leaves a paper trail on the likes of Stack Overflow.

Conversely, does a developer ever contribute? I’d say it’s reasonable to assume that 99% of coders reach out to the online community to take information when they’re stuck (let’s face it, Google is the first stop when this happens), but how many repay the favour? These communities only work because enough people are willing to devote expertise for free, what does it say when someone isn’t prepared to do that whilst still benefiting from the free labour of others? I’m not saying become Jon Skeet, but c’mon, maybe answer the odd question, make an edit or leave a comment to improve the value of content for future fellow developers.

So what does it say about developers who don’t have this paper trail? Well firstly, they’re almost certainly spending more time banging their heads against the wall trying to solve problems than they should be. They’re also unarguably not using the tools at their disposal effectively – they’re working less efficiently than they need be. You could fairly extend this more insular way of working beyond just Q&A as well; are these people actively seeking out other ways to improve their development practices? Are they following what’s happening in the industry and bringing these improvements into the office with them?

“The best programmers are up to 28 times better than the worst programmers”

This is from Facts and Fallacies of Software Engineering and it’s extremely important for employers because it makes a massive difference to the value of their investment. And make no mistake about it, employees are investments. You’ll read similar things in The Mythical Man-Month when it talks about a group of experienced developers:

Within just this group the ratios between the best and worst performances averaged about 10:1 on productivity measurements and an amazing 5:1 on program speed and space measurements!

Imagine that – being able to gain a 5 or 10 fold increase on your developer investment just because you chose the right guy! But you’re not going to get that with the developers who work in their own little cocoon, at least not from those working with modern technologies that are evolving rapidly. That’s the really important value proposition for employers and that’s why engaged, switched on developers who know how to maximise the resources at their disposal are so valuable and those who do not, well, not quite so much.

Much has been written on the programmer interview process, Joel Spolsky has an excellent piece on The Guerrilla Guide to Interviewing which is always a good place to start. All of this is about trying to weed out the lesser developer – the ones that are 10% or 20% as effective as their switched on peers – and get to the “cream”. Interview techniques are great, but there are also those that will attempt to “game” them to the fullest extent possible. I myself have recollections from many years ago of studiously memorising everything I could from certain large programming books so that I could repeat this knowledge verbatim in interviews the following day.

Imagine now being able to have someone say “Here’s my public GitHub repositories, go take a look”. Assuming there’s enough in there to weed out the copy paste developers (and you can substantiate that pretty easily), it adds a wonderful dynamic to an interview. You can actually discuss coding practices in the context of real work! It becomes a much less philosophical discussion and particularly once there’s some history in there too it affords you insight you just can’t get from discussions or even sitting the candidate down for a coding test (and let’s face it, those are always a bit stressful for the poor dev).

Education? Great, but what have you actually done?!

If I was being operated on I’d want to be damn sure the surgeon had some serious qualifications. When I jump on a plane I want to know the pilot has been strenuously tested, and very recently at that. But when I hire a coder the single most important factor is what they’ve actually achieved and that I can verify it beyond the hearsay that is a CV (or at best, a reference). Generic degrees in computer science related disciplines give absolutely no assurance that someone is a top notch developer and certifications merely prove someone is able to pass a course.

Many will argue that these things open doors that wouldn’t otherwise have been opened without them. Of course that depends on who is opening the door and how much emphasis is placed on paperwork versus a verifiable track record. I would argue – and I think fairly so – that particularly as the “older guard” move on and those responsible for hiring are increasingly of the internet generation, the focus is becoming a far more practical, evidence-based one. We couldn’t really do this even a decade ago. We can now.

Mind you, none of this is to say don’t go and pursue tertiary education or gain certifications, they may well help you develop skills that you can use to actually do something. But make sure that “something” is actually done.

There has long been the conundrum amongst those in the early stages of their careers as to how they become employable without having a track record. Education was the only thing they could hold up as some form of assurance that they weren’t entirely incompetent. That’s no longer the case – now we have all the channels mentioned earlier on and frankly if someone comes out of three years plus of tertiary education in a programming discipline without a Stack Overflow profile or a GitHub account or a social media trail of tech talk, what on earth have they been doing?!

But all is not lost…

None of this may ever matter to you. You may not be put in a position where you’re either looking for a job or are competing with those who aren’t ghosts. Maybe. Perhaps.

Now of course none of this means that the Ghost Who Codes is unemployable, far from it, but when they’re put next to someone who on paper is equal except that they have this rich, independently verifiable history of engagement and community contributions then there’s no competition. What it means is that they have nothing more than their word on which to base the entire premise of their employment and as convincing as this can be, it’s no longer enough.

But the good news is that if you do want to emerge from the shadows it’s dead easy to get started and big things can happen in short timeframes. Take Iris Classon; have a look at what she has achieved in a short 18 months. That’s not 18 months of an experienced programmer attempting to build some public kudos, that’s 18 months of going from no programming experience at all to thousands of followers, multiple speaking engagements and participation in some really well-regarded programs. That speaks volumes to a potential employer that a fancy CV or on-paper qualifications never will.

Ultimately, complete lack of public profile doesn’t make someone a bad programmer. On the other hand, a rich track record of engaging with the community, asking questions, demonstrating enthusiasm and actively participating in the industry gives you a bloody good head start on the ghosts.

Footnote: It has not escaped me that those who will comment are, by definition, not the ghosts I refer to! Those who comment on the ghosts’ behalf further serve to to put themselves out there on the readily discoverable, public timeline :)


comments powered by Disqus

Leaving comments is awesome, please do. All I ask is that you be nice and if in doubt, read Comments on troyhunt.com for guidance.