Wednesday, July 04, 2012

Are You Experienced?

How many times have you seen a webdev job ad that asks for things like:

Minimum 5 years experience in Ruby on Rails, html5, JQuery, Mongo DB, and building andriod and iphone/ipad apps

So it just came up again on a mailing list, and we all had a good lol.

When people ask for more years experience than the technology has even existed, at one level the incongruity simply tickles our geeky funny bone like a classic joke setup.

At another level however - and one that HR professionals the world over still struggle with - specifying job requirements in terms of many years experience with a certain technology betrays a fundamental lack of understanding for what developers do. Like advertising for doctors "with 5 years experience prescribing naltrexone" - I don't think I want to be treated by one who was selected on that basis!

When when specifying technical job roles, it comes back to the key question of how do we ask: "Are you experienced?"

For some jobs, length of service with a technology is a useful indicator for hiring purposes. If we are seeking deep skills with a relatively stable body of knowledge: we want evidence that candidates have had enough time to get their green horns knocked off, learned to swim in the deep end, and pick up all those heuristic tricks they don't teach in school.

In the IT realm, these jobs tend to be those involved with more stable back-end technologies (e.g. relation databases), or developers doing application maintenance on legacy systems (e.g. 6 year old java applications used by a bank).

However, the closer you get to front-end technologies and the more dynamic your needs (read: startups), the more irrelevant - and often misleading - the "judge experience by years with a technology" rule becomes. The rate at which technologies change is just too fast. I've been doing this for many years (more than I'll admit here!), but:

  • I'm still learning new things every month - probably at an even faster rate than when I was a fresh grad
  • Half of what I learned last year is now obsolete, probably never to be called on again
  • I've lost count of the number of times I've developed mastery in something for 1 project, and never used it again

IMHO, the fundamental skill that great developers share is the ability to learn and assimilate. You don't want them stuck in a rut.

So how do we measure it? Rather than years of service, we need indicators of applied learning, for example:

  • A single significant project delivery (i.e. that goes live) is often enough to develop a good mastery of a technology
  • Multiple project deliveries demonstrates the ability to hone and apply that knowledge in different scenarios
  • Working with various technologies over time demonstrates flexibility and adaptability to the new
  • Founding an open source project shows that the individual not only has the creativity and inspiration to create something new, but has the tenacity to get it done (without a boss looking over their shoulder)
  • Contributing to an open source project demonstrates that the individual has pounded it enough to identify something that needs fixing, has had the mental firepower to figure out the root cause and how to fix it, and the collaborative skills to get the contribution merged.

So when I write a job ad for a technical role, I'd suggest defining the technical requirements along these lines:

  • 5+ years professional web development experience
    [a guide to the level of seniority within the general professional discipline]

  • Delivered multiple projects and current experience using: Rails 3.x, PostgreSQL 9.x, git
    [the specific technical skills you expect people to have on day 1. Reference major version numbers where they represent significant evolutions of the technology, and make sure you use the correct nomenclature to avoid more lolz;-)]

  • Ideally, recent project experience using one of more of the following technologies: capistrano, redis, and MongoDb.
    [technologies you use or are planning to use, but it won't kill you to allow the person time to get up to speed]

  • Experience contributing to or founding open source projects
    [it's almost getting to the stage where developers really have to be quite uninterested in their career to avoid some involvement with open source projects - see comments above]

I haven't asked for all the technologies they've used in the past - assuming that this will come out when they explain exactly what they've been doing during those "5+ years professional web development".

Of course that still leaves a whole range of matters such as soft-skills and how you actually go about selling your startup vacancy. You can find this and more in the most excellent JFDI Hiring & Firing guide.

Blogarhythm: Are You Experienced? - Jimi Hendrix

3 comments:

Phil Wilkins said...

Interesting blog, and a lot of which I agree with. The one point I'm not entirely sold on is your view on contributing to open source.

There are a great many ways to develop and prove ability. Personally I've developed and run websites; have contributed and guided development in a friend's startup. But these days the demands dont give me time to be active contributor to open source. Does that make me a poor hire?

Paul said...

Hi Phil,

Yes, perhaps it's fairer to put it this way: if you have been involved in open source, then it's a positive indicator - as long as your contribs are any good! But if you haven't (yet), it isn't necessarily conclusive of anything.

Of course there will always be many more users of open source than contributors, and some language/framework communities just don't have open source as part of their DNA.

But to repurpose one of Jason Calacanis' favourite sayings: in a world of samurai and rice growers, which do you want to be?

Paul said...

Forgot to add Phil: you make a good point about moonlighting to do things like run a web site for a friend or advise on strategy. Also a good indicators of "applied learning".