Hiring a web developer can be a daunting task. Even for developers hiring other developers it is difficult to estimate in a few interviews and tests how someone is going to perform in the long run.
I’ve seen many below average developers getting hired with hefty salaries just because they knew how to sell themselves as superstars and answer questions decently enough. And also very talented web developers not getting hired or getting very low salaries and boring tasks just because they where insecure in the interviews, couldn’t express themselves properly or didn’t know how to negotiate what they deserved.
In this article I will be focusing on the interviewer’s side: the steps I follow when I need to recruit someone to join my Dev Team, either as a permanent or just to outsource a few tasks every now and then.
Believe it or not, after a lot of trial and error I base 50% of my decision to hire someone in facts I discover before I even meet the person. Web developers work on the Internet and as such I can find a lot of information just by searching themselves and their footprints. And here’s how I interpret those:
Your website tells me everything
Every developer has got its own portfolio which is meant to showcase the best work and can be really fancy and have famous brands in there. While company websites are interesting, they are usually made by a team. What I prefer to do is to look at the developer’s personal website, it has more chances to be 100% his creation, and that’s what matters most to me. Furthermore, personal websites are not constrained by management, specs, timelines or budgets which mean developers have been able to work on them with freedom. Also, I know the code is made by him and not a mix of several people pushing changes over time.
Sometimes developers don’t have a website, it can mean they are very busy people, fair enough. But then I’ll double check they have a huge portfolio or great GitHub repos, if not, I’ll assume Web Development is simply a job for them and there is no passion involved, just money. Sometimes that will suffice if I need someone for a dirty quick job like help with an MVP or a prototype, but not for others situations such as startup environments where involvement and motivation are very important for the project and the team to move forward and grow.
Now that I know a bit about the person and its involvement with Web Development I’ll look at the code, formatting, structure, way of thinking… It is obvious to check how clever someone’s code is, but equally important to play with it, editing it and coding upon, just as I will need to do when he leaves the company or when he delegates to someone else to take over his projects.
Another good way for me to test the code and skills without business requirement constraints is to have a look at his GitHub commits and activity.
GitHub also helps seeing how involved someone is in the community. Developers that volunteer in other open source projects mean a lot to me, even if they don’t push any code but just file issues, provide feedback, test or comment. It says a lot about someone’s personality, their willingness to help other fellows and how keen team-workers they are.
How private is the developer’s Facebook settings, does he have a Google+ account, how many connections on LinkedIn? These and other signals tell me a lot.
It doesn’t matter if someone uses Facebook or not, or the number of friends he has. But I do care if he’s left it open for anyone to see private information. Once I hire him he will need to take good care of my company’s intellectual property and user details, how is he going to do it if he can’t even take care of himself? This, to me, can be a big red flag.
Twitter tells me a lot on what they like to talk about and what are they interested in, or what they want to be seen talking about.
Somehow less relevant for a developer, number of connections or profile completeness are not conclusive for anything solid.
Other hints I get from looking at someone’s website are all the related skills a web developer can have to compliment his main speciality: Graphic Design, UI Design, Photography, Usability, Information Architecture, Project Management, documentation, writing, sense of humor…
While I’m not hiring him for those skills, it is very useful to know that he has minimum knowledge on them so when he works with me and my team everything runs smoothly, he understands other team member’s work and duties and he can even help when deadlines are tight or someone is out of the office being sick or on vacation.
If he says he is a designer then I will look at his design skills and taste, not just how fancy his skeuomorphism or flat design is but how good he is at adapting to different requirements set by me or by a client. Sometimes I need fancy artwork but sometimes I need to keep professional, classic, traditional or even an old look.
I’ll also look at how he designs User Interfaces and the overall attention to detail and User Experience.
Next thing I’ll look for is his overall online presence, what’s on the first page of Google when I search for his name?
Years ago there where developers that preferred to stay in the dark, and we also used to use nicknames. But that’s changed a lot nowadays since it’s become a part of our lives and it’s not geeky anymore to have a personal blog. Plus, it literally takes 10 minutes to set a blog or portfolio online.
Overall, I prefer developers with an online presence, it tells me they are not scared to be found, they have personality and they like what they do.
How about a more competitive keyword?
You give someone a challenge to be done in one or two hours, the clock starts ticking, pressure’s on… Get ready… Fight!
Really? Is that how you will employ them later? Don’t expect the results to be any good, specially for developers that forgot what stressful exams where long time ago.
I’ve probably had to do more than a dozen of these tests and I’ve always coded shit, always. Shit. And I’ve always found two issues with these tests:
They are usually so simple and elemental that there’s no way you can actually test the potential of a developer. Getting someone to build a simple form validation script will not tell you how they abstract, how they build with scalability and modularity in mind, how they organize and distribute… Basically, how your software is going to look in 6 months.
What 1-2 hour tests such as a simple website with a form validation usually ask is so simple it could be accomplished writing spaghetti code (which is bad!) because, like it or not, it will actually perform better and have a smaller footprint for just this particular test, but then you might think the developer codes spaghetti so he might think on OOPing everything and create a tiny MVC… but then you might think he’s loosing the scope/intent and overcomplicating things.
Let me place a timer next to your code…
Some of the tests I’ve done where from home with a fancy countdown timer and a note saying “If the timer reaches 0:00 you will be disqualified“, for other tests I had to go to their offices and they’d put me in a meeting room building a two hour website based on a mockup… Although I will never forget the worst one, they sat me down in front of an unfamiliar computer, gave me a list of things to code/debug and two guys sat besides me looking at each and every keystroke I made while I felt their breaths on the back of my neck!
If you put developers in awkward situations, don’t expect them to code their best, they will be more concerned about not doing anything stupid or finishing as soon as possible to get the hell out of there than making quality work, just what they do every day in a relaxed and productive environment.
I used to find interviewing web developers very hard, not just because I only had 2-3 hours to ask all the questions I needed to make sure he was the guy, but because interviews are tense and people reply artificially with prepared answers and altered honesty and performance.
That’s why I ended up changing the way I interview. Now, I usually spend the interviews just having a friendly chat and knowing more about that person, seeing how he will fit in my team as a colleague and a friend. Maybe I’ll ask him what does he know about my company to see if he’s interested enough and drop a “How would you improve the product?” question to see if he’s gone the extra mile and if he’s interested in the idea, or ask about personal projects he’s done, even if those failed, that’s where you see their real passion and how optimistic/pessimistic they are. I try to keep technical questions to a minimum, coding skills have already been investigated before I even meet the guy.
Whatever you do with that guy after all the interviews and tests, remember he is a human being and he is going to be impatiently waiting for a reply, checking his smartphone on every sound and thinking over and over what’s going to happen.
- Good companies/recruiters will notify them if they didn’t get hired,
- Great companies/recruiters will provide feedback on why they didn’t choose him,
- Bad companies/recruiters will say nothing (something that doesn’t happen much in the UK but still does happen in Spain too often).
The guy has dedicated hours and probably days for you and the company, the least you can do is spend five minutes to send him an email and stop his agony letting him move on with his life. Hell, as a developer sometimes when I reject an offer from a company I send them an email apologising and explaining how they can improve to attract talent; and as an interviewer I’ll always thank them for their time and do my best to point them in the right direction. How do you want to be remembered?
Chairs photo by Jonathan
Thank you, excellent article :-)