If you think a good man is hard to find, you should try looking for a good Drupal developer! The competition is fierce for experienced Drupal developers, and as Lullabot's development manager, the task of tracking them down usually falls on my plate. Athough Lullabot's status in the community helps us to attract talented individuals, it's still a challenging process. Here are a few things that I look for in Drupal developers, and the resources that I recommend to our clients when they're looking to add some Drupal muscle. Hopefully, this advice will also be helpful to individuals who are looking for a job and want to stand out from the crowd.
Separating the Wheat from the Chaff (or Who To Interview)
At Lullabot, I often have the enviable position of having a large and talented pool of applicants. This is definitely the best problem to have in the hiring game. But what if you only had time to look at three (okay four) factors about each candidate? My four would be...
I always look at the applicant's education. A computer science degree from a reputable college or university is hard to replace. Even though most Drupal developers won't spend a lot of their time thinking about design patterns, writing machine code, or doing calculations in binary, they will have to consider things like orthogonality, decoupling, OO principles, etc., if they're going to ascend to the level of an architect. Experience can fill in a lot of these gaps for the liberal arts graduates among us (English), but it's a huge plus if your candidate has a computer science degree. If they have a dual-degree in Fine Arts and Computer Science, stop reading this article and hire them immediately. For project managers, look for PMP certification or Scrum certification, plus a ton of experience to back it up.
There is no substitute for Drupal experience. I was able to pass the Zend PHP certification test after a one-week course: It gave me a passable knowledge of PHP, but didn't prepare me for Drupal as a framework. Trust me: you would not want to have hired me as a Drupal developer immediately after I passed the Zend certification! PHP experience, even years of PHP experience is great, but it doesn't substitute for Drupal experience, and the best Drupal experience comes when developers participate in the community and contribute code back to the Drupal project. Some of the obvious things to look for are participation in Drupal.org's issue queues and discussion forums. If they maintain their own modules or other projects on Drupal.org, you can easily see the quality of their code and how they work with other developers in the community when issues arise. High levels of engagement with the community also mean your applicant is likely to know and follow best practices and will be more plugged in to the architectural mores of the rest of the Drupal world. And that means their work will be more sustainable and understandable to Drupal developers that come after them. Our application form asks for a developer's Certified to Rock score; it's a web application that attempts to track each Drupal.org user's activity in issue queues, their activity with local user groups, how long they've been participating on Drupal.org, and so on: the very things we look at when we're examining how engaged with Drupal an applicant is. Although it obviously can't tell us everything about an applicant's involvement with Drupal, a reasonable CTR score immediately tells us they are involved. In my experience, anything above a 2 or 3 is a great sign.
Third: Writing Skills
Does their cover letter indicate that this person is a good writer? When evaluating PMs, there's no substitute for a writing sample related somehow to requirements, whether a Software Requirements Specification, Vision Document, or a collection of user stories. Good writing derives from clear thinking, and it also indicates an attention to detail. This is a good thing in a programmer, and an essential quality in a PM or themer. Seeing lots of grammatical errors and misspellings in a cover letter should be an instant disqualification. I know only one person who is somehow an exception to this rule, and, he may represent one of the best hiring decisions I've ever made.
Extra Credit: Video
Ask for an optional introductory video from the candidate, describing why they want to work for you. I find this is a great way to get a first impression of what your candidate might be like, and it only takes 2-3 minutes. Tons of intangibles are conveyed here, and it's a great way to see if your candidate has a sense of humor, and a creative approach to problem solving, in this case, the problem of making a video for their potential employer. Candidates that don't want to take the time to submit a video, may not be as committed or interested in the position.
Not So Much Wheat?
But what if your problem is not enough applicants? We get asked by a lot of our clients to help them drum up skilled developers for their projects. In addition to the usual networking tips, Drupal.org provides a couple of useful tools:
Lists of Available Talent
Hosting and professional services: This is an exclusive section of the handbook that lists individuals and companies with a track record of involvement in the Drupal project. These folks tend to be among the best, but also among the most expensive. This is not the place to look for a permanent, salaried employee. More on that later.
Available for work list: A more open list, this is a table of all Drupal professionals who've announced that they are available to take on work. Areas of expertise are listed, along with availability, and types of projects that they specialize in. This is a good way to find developers to work on a short-term project, but not the best place to find full time employees.
If you want to know if an individual person is available -- for example, you need some bugs fixed in a particular module, and, sensibly, want to hire the module developer to take care of it -- look on their Drupal.org profile page for a link that says "I provide Drupal-related services". If so, you can click the "Contact" tab on their profile to send them an offer. A list of all users who've self-identified as providing Drupal services is available at http://drupal.org/profile/drupal-services. (There are over 4,600 in the list, as of this writing.)
Drupal consulting mailing list: This list is for Drupal freelancers and shops to share best practice advice with one another. Occasionally RFPs are posted here, as well.
The #drupal-consultants IRC channel on irc.freenode.net, if you want to hire someone who's online at 4am on a Saturday. ;) This channel tends to be populated by freelance developers and representatives from Drupal shops, who can speak with you in real time about your project.
Places to Post Your Job Openings
If you're looking for a full-time employee, you should post a job listing to fill your position. While posting on major Internet job boards such as Dice, LinkedIn, etc., can be useful, Drupal.org's own job board section is an excellent way to reach a targeted audience of Drupal professionals.
Drupal.org has two main places where jobs may be posted:
Paid Services forum: Normally for smaller, short-term jobs, or even one-off "$50 if you can solve this bug" type of postings. Nevertheless, more formal job postings also get listed there.
Groups.drupal.org Job listings: These are for more formal job openings, and they're generally targeted to a specific geographic area. You can enter specific information here about the job, such as whether it's part-time or full-time, and whether telecommuting is allowed.
In both cases you'll need a Drupal.org account in order to post. There are also some helpful instructions on writing a useful job description in the Drupal.org handbook.
To post a job listing to the Paid Services forum:
- Go to the Paid Services forum.
- At the top, click the "Post new Forum topic" link.
- Fill out the "Subject" field (ex: "Company XYZ seeking Drupal themer") and "Body" fields (the job description). All other fields may be ignored. When finished, click the "Save" button at the bottom.
To post a job to groups.drupal.org:
- Use the groups browser at http://groups.drupal.org/groups to locate a group in your area. For example, Portland, Oregon or Western Colorado.
- Click the "Join" link in the upper-right corner block. Click "Join" on the confirm screen. Repeat for each group you'd like to send the job to. Make sure not to post jobs more than 4 groups!
- In the upper-right corner block, now click "Create Job".
- Fill out the fields appropriately. You can ignore the "Sitewide tags" field. In the "Audience" field, you can use control (or command on Macs) + click to select multiple groups to cross-post to.
- Once completed, the job should show up both in the local group(s) (ex: http://groups.drupal.org/portland) and also on the global job listings page at http://groups.drupal.org/jobs.
Within your job posting, ask candidates to post their CTR score, and provide their Drupal.org user profile URLs. It will help weed out people who aren't reading your listing, and will also be immensely valuable in making sure that what they say on the cover letter matches real life. Applicants who don't have Drupal.org accounts or CTR scores may still be great hires with plenty of Drupal development experience, but you'll have to do a lot more leg work to vet their skills.
Evaluating Potential Candidates
I already discussed the importance of community involvement earlier, but it's worth delving a bit deeper to explain how to find useful information about a candidate based on their community engagement. Even if they have a "rockstar" score on CTR, you'll want to find out why!
Things to look for on a user's Drupal.org user profile include:
The easiest indication is how long they've been a member of the Drupal community: Drupal.org tracks that automatically. Users can also fill out their own bios with information about their own skills, whether they help with user support and writing automated tests, what Drupalcons they've attended, and so on. A profile with lots of these indicators can mean that a user has a great deal of experience in the project, or it could mean that they read this article and checked a bunch of boxes to make themselves look good! Always follow up with some real research, such as...
View their Site Activity
Every post or comment ever posted by a user on Drupal.org gets listed on their "Track" page, for example http://drupal.org/user/26979/track.
By spot-checking a few of these you can get a feel for a number of things about the candidate:
- Do they seem knowledgeable and helpful? Over time, good Drupal developers be helping others in addition to seeking solutions to their own problems. That means they understand what they're doing, and they're more likely to get assistance from others when they need it.
- Do they work well with others? Are they polite, collaborative, and responsive? Or do they speak negatively and get embroiled in conflict?
- Are they consistently active? Was their last post 2 years ago, or 2 days ago?
- How wide is their breadth of knowledge on Drupal? Do they participate in several projects, or do they stick to their own corner?
If you see lots of book pages in someone's activity, they probably help in the documentation team. If you see lots of project issues, they're involved with finding and fixing bugs, or requesting and developing new features.
If you see nothing on this page at all, or fewer than a page or two of results, consider it a red flag. It means they haven't been around long, or haven't put down roots in the community. People without Drupal.org profiles are generally much less connected to the broader Drupal world, may not be as well-versed in best practices, and will have fewer established relationships inside the Drupal community to draw on when tricky problems arise. As we've said before, there are always exceptions -- brilliant developers toiling away in the shadows, outside of the community -- but you'll have much less to go on when verifying their skills.
Review their code
Every Drupal.org user profile displays a list of projects that user has "commit" access to, and how many code changes they've made. By following the links to the individual projects, you can take a closer look at what they've been working on. If we wanted to check up on Earl Miles, for instance, our mysterious user 26979, we could go to the Views project home page and click on its Repository viewer link. Scroll down to the "Heads" section, pick a version (7.x-3.x is the latest at the moment), and click the tiny "tree" link. Shazam! Instant code review.
Even if you can't immediately understand all of the complexities of the code, does the overall form feel organized and coherent? Is it well-documented? Can you read through the comments and understand what's going on? Another item to look for is adherence to Drupal's coding standards; it tends to indicate an attention to detail and an understanding of community development conventions.
Drupal.org also adds a handy "track code" tab, like the one at http://drupal.org/user/26979/track/code, to user profiles. There, you can spot-check individual commits across all of their projects to see what kind of code they're checking in over time.
Obviously, there's more to hiring someone than writing up a decent job description and clicking a few links as a background check. Hopefully, the tips and tricks in this article can augment your normal HR processes and help you snag a great Drupal professional. If you're currently looking for work, hopefully the tips in this article will show you where to advertise your availability, how to show off your Drupal knowledge in a way that benefits the larger community, and how to prove to potential employers that you know your stuff.
I'm Allergic to Wheat!
This link is also helpful if you need a laugh after all of your searching... It is not, however, PG rated.
Thanks to Angie Byron (webchick), formerly of Lullabot, for contributing a lot of the research, and writing in this piece.