Your company is expanding, and to keep up, it’s up to you to grow your software engineering team. So you start thinking about the type of talent you need, and how to attract, screen, interview, recruit and retain highly-qualified candidates.
Here’s what I’ve learned over 20 years about how to find, recruit and hire great software engineers; from ‘Sharpen Your Pitch’ to ‘Win the First Week’.
1. Sharpen Your Pitch
You’ve thought a lot about who you want to hire; but have you thought about why someone would want to work for you?
In a time of fierce competition for recruiting software engineers you must have a crisp answer to this question:
“Why should I work for your company?”
You need a software engineer recruitment strategy – a marketing plan for hiring. And the short version of this is your recruitment pitch.
Your pitch should be short, easily understood, and hit the major points you want to convey. The following are some possible areas to consider:
- Mission — How does this job support the company mission? And is this mission one that should be a prominent part of your pitch? Do you help people? Solve significant social problems? Make life easier? If so, make sure your pitch reflects this.
- Technology — Are you building or using cutting-edge tech? This area is where most tech leaders will naturally focus, but there are many jobs that honestly are not breaking new ground. If that’s true, focus instead on the areas that will differentiate your company. For example, mission or culture.
- Culture — What two or three words describe your organization’s culture? For many job-seekers, this is of paramount importance.
- Location — If your office is in a desirable location, near public transport, or have great views? If yes, add those to the pitch.
- Perks — Does the office offer something unusual or unique? No one chooses a job because of the free snacks. But if you do, it might pique a candidate’s interest.
Example One: Startup Company, Core Team Members
Here’s an example of a recruitment pitch by a startup looking for core software engineering team members.
At Acme, we are building a platform that is transforming the banking industry, and helping millions of Americans who currently don’t have access to credit. We are solving hard problems of scale and security. We pride ourselves on transparency and open communication. Come visit our San Francisco office soon!
Example Two: Established Company, Solid Professionals
And another example, this time from an established company interested in solid software professionals.
At Fubar, experience counts. Writing tests are as important as writing code, and your daughter’s soccer game is as important as the deadline. We are embarking on a complex project to move to services, on the AWS cloud. We are based in NYC, with sweeping views of the Hudson.
2. Leverage Your Technology Brand
The next part of your recruiting plan is to focus on your company’s technology brand. What do you want your technology organization to be known for? This differs from the company’s overall brand: instead of attracting customers, you are attracting talent. The tech brand must dovetail with company image, but will focus on the aspects that make this job uniquely desirable. Yes, that can be a tall order. How to communicate your brand? Here are some ideas:
- Blog posts — Establish a tech blog, and enlist your senior tech talent to write posts. These should focus on a problem or technology area of interest to the greater community. For example: “How we used AWS Kinesis to capture and analyze security data”. Now you can cross post on social media, LinkedIn, etc.
- Speaking engagements — Conferences are always looking for interesting, relatable speakers. The example blog post above could easily become a topic for a talk at a conference or meetup. You can make sure your company’s name and logo are prominent. But understand that people want to hear about innovative uses of technology, not your sales pitch.
- Meetups — If you’ve got sufficient space, consider hosting a meetup. It takes some effort to organize the date and line up speakers, but meetups are a great way to attract possible candidates to your offices and create a positive impression.
- Patents — Submitting patent applications can be long, drawn out and expensive. But as well as protecting the company’s intellectual property, patents also serve as public notice that innovation is happening and is recognized.
3. Disseminate Your Message
Finally, after you have developed your tech marketing plan and pitch, you’ll need to disseminate this throughout your organization. It’s not just the recruiters who need this. Make sure any member of your team is able to deliver a version of the pitch to friends or colleagues who might be interested, and answer the question, “Dude, what’s it like over at Acme?”
4. Respect the Candidate
You’ve developed and disseminated your recruiting pitch, and are starting to see some candidate flow. How can you get people through the interviewing process efficiently, while still holding to high standards?
Strive to design an interview process that is both efficient and satisfying to all participants. You want every candidate to leave your office thinking, “Wow, that was interesting!”. Even if they don’t get an offer, they’ll tell their friends about their positive experience. And to make the best use of everyone’s time, try to complete the interview process and make a decision in a single day.
The goal of a telephone pre-screen is to determine whether it is worthwhile to bring a candidate on-site. If you can screen out unsuitable candidates, you are respecting their time as well as that of your team. Typically, these involve asking the candidate to solve a non-complex coding problem — to weed out the people who just don’t have the baseline skill set necessary for the job. Try to put the candidate at ease — think of this as an exercise in finding a way to qualify the candidate, rather than the reverse.
For development positions, consider using a coding tool (such as CoderPad) for your technical phone screens. These tools provide an environment to edit and run code, and record keystrokes and code solutions for later review.
Don’t make people wait. Never leave candidates alone. Make sure your interviewers treat interviewing with a high degree of responsibility. Communicate frequently and openly. Don’t leave candidates hanging. This all seems like common sense and decency, but is too often ignored by many companies.
5. Standardize the Interview
Smaller teams typically conduct interviews in an ad-hoc way — each interviewer has their favorite questions and problems to pose. But as the team grows, you’ll need a consistent baseline for making hiring decisions. Rather than mandating a set of interview problems (these have a habit of escaping into the wild on sites like glassdoor), instead split the interview into thematic areas, each taken by a different interviewer. Examples of themes include algorithms, design, testing, and architecture. Have each of your interviewers specialize in one of these themes, and you can maintain a list of interviewers and themes to simplify interview scheduling. If you settle on four themes, for example, you’ll know that you’ll need four interviewers, that each candidate will require four interview slots, and that there will be little overlap between themes.
6. Expedite the Decision
If your interviewers are less experienced, you’ll find that their feedback is often equivocal, making the hiring decision difficult. Nobody wants to be the bad guy, and people will avoid the harshness of rejecting someone.
To avoid that, after the interview is complete, ask each interviewer to immediately send an email to the hiring manager with the candidate’s name and the decision “Hire” or “No Hire”. The remainder of the email is supporting color for that decision. This binary response requires crisp decision making: Are you not 100% sure? “No hire”. Do you think that maybe the candidate is not for our team, but might work on a different team? “No hire”.
After the hiring manager has the feedback emails in hand (ideally, minutes after the conclusion of the last interview), the decision can be made. Define your decision-making criteria beforehand. You might require unanimity, or you might decide that, say, 3 out of 4 “Hires” is good enough to make an offer.
Clarify how the interviewing team will reconcile edge cases. Let’s say you have a 2-2 split. Gather the interviewers for a debrief session. This has two benefits: it gives the hiring manager better background on the candidate, and it allows the participants insight in how others do interviews and what criteria they use for decision making.
Clearly specify the maximum amount of time these sessions are allowed to run., Otherwise they tend to run on.
7. Authorize Quick Offers
You have a candidate that has passed the interview process, and the hiring manager wants to make the hire. Speed is important here: a delay could mean losing a candidate to the competition. If you have well-defined job levels with associated salary and equity ranges, then it should be possible to authorize the issuance of offers without a cumbersome approval process. This requires close teamwork between the hiring manager and the recruiter, since salary history will be a factor in the offer. But if you know that you are hiring at the Developer II level, at the middle of the range, then does this offer really need approval from various parts of the organization before it can be presented?
Instead, structure the interviewing process so you can present an offer the same day as the interview. Or at least the day after. That shows you’re keenly interested in the candidate. And everyone loves to be wanted.
8. Win the First Week
Your offer was accepted and your new employee is starting on your team. How do you make this person effective quickly? And how do you make her feel like she’s a member of the team?
- Before Arrival
Before your employee arrives, complete any administrative tasks that can be done in advance. For example, if you issue laptops, make sure the machine is ready with all necessary access permissions in place. Create the company email account and any other standard setup entries. Add the new employee to the appropriate mailing lists so that information flows from the first day. And although this seems obvious, make sure there’s a desk and chair available. Getting all of this right sends the message that your organization is competent, efficient, and effective.
- Buddy System
Pair all new employees with an experienced “buddy”. The buddy can provide guidance, answer questions, help the new person navigate the organization, and understand the culture. Have the buddy organize lunch or drinks (on the company, of course) to introduce the new team member.
- Join the Team
If yours is an agile/scrum shop, your new employee will be joining an established team. The daily standup becomes the primary point of contact for a new arrival — and bonding with a team is a good predictor of employee satisfaction and tenure.
- Immediate Assignment
Make sure that all new hires are assigned to a team immediately — even if this is a contingent or temporary assignment. Some organizations, for example, rotate a new employee through several teams over the first few months, typically to give a broader exposure to the systems, products and organization. This can work well as long as expectations are clearly laid out at the beginning.
- Manager One-on-One
The most effective way to keep a team member connected and motivated, is regular and open communication. And the best way to do that is a regularly scheduled one-on-one meeting between employee and manager. Make sure that the first of these one-on-ones occur in the first week, and that a regular schedule is set up and maintained.
I’ve found that the least effective format for these meetings is the standard across-the-desk setup. Try different ideas for these: go for a walk together, go out for a coffee, or engage in a shared activity.
- First Check-in
A good software developer wants to be productive as soon as possible. It’s your job to make this fast and friction-free. The goal is to enable a first code check-in, with its associated build-and-test process, in the first five days.
In order to do this, your new employee will need a development environment. If setting this up takes more than an hour or two, you have an opportunity to focus on this to reduce this time. Same with the build/test cycle. If a coder can’t get quick feedback on a code change, the entire development process becomes sclerotic.
In order to facilitate a check-in in the first few days, you might have a standard exercise for all new coders. Or perhaps you have a list of small bugs to be fixed. In either case, the real goal is to get your new team member in a position to contribute quickly. Having a standard process for development environment setup and code check-in also reduces the load on the team, who would otherwise have to pick up the work of training up the new arrival.
- Get Code to Production
It is a boost to a developer’s ego and confidence to get code into production. This is, after all, what the job is all about. If your organization’s release cycle supports it, try to get a new employee’s code into production in the first week. Granted, this goal only makes sense for shops with rapid or continuous delivery strategies. But this could be another argument for moving toward rapid deployment, if you are not currently engaged in this practice.
- Technology Boot Camps
If you are growing rapidly, and so hiring at the same rate, you may have new employees arriving constantly. One efficient way to get new people up to speed is a technology boot camp. This is typically a one-day session that covers a range of topics, and is a great way to accomplish many of the suggestions above. Your agenda might include:
- Background on the business: history, customer stories, business model, product offering, etc.
- Guests from other departments: in your company, what does business development do? Sales? Finance? Lay out the company organization, and provide a face and contact to these other (sometimes mysterious) groups.
- Technology overview: architecture, code base structure, test framework, etc.
- Development environment setup.
- Exercise the change-build-test-check-in cycle.
When done well, at the end of this session, a new employee will have all the background and knowledge needed to fully participate and contribute.
At the end of the first week, your new team member understands the business, feels like a member of a team, and has contributed to the project. Not a bad start!
About the Author
In a career spanning 20+ years of technology leadership, Richard has served in diverse roles ranging from VP of engineering of a startup to CTO of a publicly-traded company. Most recently, in six years at LendingClub he grew an agile software development organization from 10 to over 400 contributors while delivering a platform that transformed the credit marketplace.
Richard has also delivered fintech, B2B, and B2C solutions that included legacy re-architecting, moving to services, and migration to the cloud. Technologies experience range from a cloud-based call center, one of the first CRM products, and other on-prem, SaaS and web service solutions.