In part one, we talked about the job interview. Today, let’s talk about writing the perfect job profile. To get quality candidates, you want to go through this slowly and thoroughly – you’ll save time in the long run.
Not all developers are the same. When you’re recruiting a new developer, you’re going to have to carefully establish the type of developer, so that you can create a detailed profile. What does that profile look like? Roughly like what you’ll see in a job ad: job description (daily responsibilities), skill profile, experience requirements, responsibilities, benefits, company description. To get to that, you’ll have to start by taking a close look at your own technical team.
What is your application like today? Are you web based? Mobile? Both? What’s your backend like? Are you moving to the cloud? Questions like this are essential, to establish what kind of developer you need. Your app architecture may be MySQL-J2EE-REST-HTML-iOS, for instance. Want to keep it that way? Moving the backend to the cloud? Moving from iOS native to HTML5 hybrid? Adding Android? Windows 8 is coming, are you prepared? Do a critical review of your application stack.
The current team
How senior should the new developer be? The way I built out our team in Bucharest is somewhat special. We started with senior developers ONLY, that all capable of working independently. We did that because (1) senior developers in Romania were affordable at the time, and (2) because they were spread out over a lot of clients and projects, so they often couldn’t turn to a colleague for advice and had to rely on themselves all the time. We only introduced less senior developers much later, when we had bigger teams on one client, for longer times. We were able to pass on the cost savings to our clients, so it worked out well for everyone.
However, that’s not a common example. If, in your startup, the technical co-founder/CTO/the first technical person will be a total wizard and be extremely senior, you can cluster junior developers around a star like that. It’s the most cost-effective thing to do for startups.
The French Exception
However, what I often see in France, is that a stagiaire (intern) is used, when there is no senior person to guide the intern. This is bad in many ways. An intern is basically a student. For me, a student is someone with exactly zero experience. The equivalent of a fetus, essentially. There are happy exceptions to this – some people do tons of real coding (real coding: something not imposed by their education) while going through the educational system, but the correlation between experience and education is tenuous at best.
So what you see is someone completely clueless person totally on his own, with a bunch of specs (or not) generated by business people that probably don’t know how to do a proper spec. This is a recipe for disaster of course. What you end up with is extremely slow progress, and badly written code. When you first start building an application, setting up the structure right is critical. To leave this to someone with no experience is asking for trouble later down the road. What ends up happening is, that, after a while, the pace of progress approaches zero. The intern will literally code himself into a corner where progress is no longer possible.
So what you want to do is start with someone senior, and then add a medium or junior to that. Keeping the senior/junior ratio to 3:2 is probably the best you can do.
(Natural) language requirements
For Cole Street, having a team in Bucharest, with clients in France mostly, we require all our developers to be fluent in English. In Romania, that’s typically a non-issue, and reading French is a free bonus we get from being in Romania (the languages are similar enough for Romanians to read French without any training). In France, the problem is the other way around. Does your organization require the development team to communicate in something other than French? Any non-French speaking team members make this a requirement. If your team has to coordinate with other technical groups outside of France, this also becomes a requirement. Think about this – if you recruit in France, and have a must-speak-english requirement, you’re throwing away some of the labor pool above 30 years old.
So now that you know the type of developer you want (PHP’er, J2EE, CSS, etc), and you know the seniority level you are looking for, you’re ready to start filling out the profile sections. Let’s go through each one.
Job description (daily responsibilities)
This is the main part. Use it to efficiently describe the position in 2-3 sentences. An example:
Cole Street is looking for a Senior J2EE developer. The ideal candidate has 5+ years of J2EE experience, speaks fluent English, and likes to work on different client projects, who are usually cutting-edge tech startups.
Some important points here are:
- Keep it short and get to the point immediately. Most people will ONLY read this.
- Include something attractive to developers. An attractive technology, a cool location, something.
Skill profile and experience requirements
Here, we dig into the details of the technical and non-technical skills we need. So list ALL skills that are necessary. Some are obvious, some are not. You can split this up into a “must-have” and a “like-to-have”, if you want. It’s very American but it works anywhere.
So, an example:
- 5 years of J2EE experience, preferably on Tomcat and Websphere
- Must be familiar with source control systems, like Git or Subversion
- Good communication skills
- Experience with REST web services
- Apache configuration
We also like:
- Russian speakers
- People that have worked in the financial industry
So we mix technical and non-technical skills. We’re specific, and we include some like-to-haves, such as domain knowledge (industry), or a language.
The experience level is covered by the number of years of J2EE experience. This is an easy one – if someone has 5 solid years of J2EE experience, he’s a good developer, otherwise you wouldn’t have survived for 5 years doing J2EE. But sometimes we’re looking for other skills. Hiring Android developers when Android was first around, was difficult. It was pointless to ask for Android experience (no one had any!), so we had to ask for Java experience instead. So we tried 5 years TOTAL development experience, and 3 years of Java. This didn’t work – it turned out we needed Java developers with multithreading experience. So we ended up with:
- 5 years total development experience
- 3 years of Java experience
- Thorough knowledge and experience with multithreaded
We also like:
- Android experience
This worked, as long as we were super-thorough about screening the multithreading experience. But my point was, we separated out the experience levels to get what we needed.
Here you talk about what the job actually entails. You think all development is the same (you sit in a windowless room typing incomprehensible things into computer while eating pizza), but it’s not. Sometimes you need a developer that will set up a brand new project from scratch and build it out. Sometimes you need a developer that will increase the overall skill level in your team and train your existing team. Sometimes you need someone that does bugfixing on existing projects all day, or improve performance. Other responsibilities may include going to conferences, writing tech specs and technical documentation, or a mix of any of those things.
You need to be specific about this, and spell it out:
The job will be 80% implementing new features on our existing platform, 10% research into improving our performance, and you will be sent to conferences twice a year to promote our company and recruit more developers.
Now it’s time to sell them on you! Developers are in demand, and can afford to be picky about who they work for. Some prefer the startup experience (PS3’s and pizza and work until late), some want large corporations (boring, stability, home on time). You are what you are, so don’t lie about it, instead, emphasize your strong points as well as you can.
If you’re a startup, you can do something like:
We’re a dynamic startup that works hard to get our super exciting product that will revolutionze the toothbrush buying process. Come and help us change the world forever! We love PS3’s and pizza, and offer meals and taxi rides home, and are loads of fun to work with.
So you’re being honest about what you are, while emphasizing your strong points.
Now, are there any tangible benefits you are offering that are out of the ordinary? If you’re not Google, you probably don’t have a Michelin-starred chef, but maybe something more modest, like free unlimited fruit? Talk about it! In the US, and places like Romania, talk about your great medical insurance (if you have that), in France, tickets restaurant are a sure way to excite people.
Here you describe your company. Keep it short. Chances are you are more excited about it than a job seeker.
Optional: talking about money
Here it gets more complicated. For job ads, it depends on the country and website if you give an indication of salary. For a recruiter, they need at least a range.
If you go through the following steps, you’ll get the perfect job profile:
- Review your application stack, and see if you’re making any changes
- Can you promote existing team member? If so, do so before hiring someone new
- Never let an intern work alone without being supervised by a senior
- Find the technical skill details and experience level you need
- There should always be senior developers leading your team, and a 3:2 mix with juniors is optimal
- In the job description, describe all aspects thoroughly
- Describe yourself honestly and openly, and include any benefits you offer
- Figure out your salary budget before hiring
This is the second in a four part series of articles about the recruitment process with developer positions. Feel free to follow up with the rest of the series: