paint-brush
Hiring software engineersby@lookfirst
1,599 reads
1,599 reads

Hiring software engineers

by jon scott stevensApril 15th, 2017
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

I co-founded <a href="https://www.gearlaunch.com" target="_blank">GearLaunch</a> with three other guys. It was an amazing experience. We were wildly successful in our first year with tens of millions of dollars in gross revenue, a scalable and stable platform, and a relatively small staff.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Hiring software engineers
jon scott stevens HackerNoon profile picture

Start(up)

I co-founded GearLaunch with three other guys. It was an amazing experience. We were wildly successful in our first year with tens of millions of dollars in gross revenue, a scalable and stable platform, and a relatively small staff.

Money poured in the door and we had an awful time finding quality talent in the competitive San Francisco market. We were hiring Java developers and we’d bring people in with 20 years of Java experience that couldn’t do simple programming. It was mind boggling.

We struggled to come up with a process for hiring. This culminated with our first bad hire who only lasted a few months. We threw what we knew about hiring out the door and started over.

While we were not able to fix the talent shortage nor solve all of our issues, we were able to build a process that accurately evaluates candidates. This saved a lot of pain, time and expense.

Standing out

Many career pages and job requests only talk about how cool a company is or define requirements that do not fit the job description. Written by HR or managers, there is a disconnect between what they say they are looking for and the actual position.

We play games at company outings

We have Hackathons

We have great benefits

We hire smart people

It feels like that awkward moment when grandpa tries to give life advice to the kids and everyone just thinks he’s crazy…

While those bullet points are worthy and expected, as a developer I’m more interested in companies that speak my language. They talk about what I will be working on and what the environment is like.

We use GitHub, do CI/CD using CircleCI and release 10 times a day because our codebase has automated tests

We use XYZ technologies

We do pair programming

We have daily short stand-ups

We use Pivotal Tracker to write clear concise stories

The best software engineers are being bombarded by recruiters and companies. What makes your business stand out?

Recruiters

Greenhouse was the company tool and we quickly discovered its weaknesses. Workable has tighter integration for scheduling in G-Calender and tracking threads in G-Mail. This is not a recommendation, use what works for you. The point is that the right tool is important.

Recruiters have a tendency to refer people who match buzzwords. Career listing sites sell search engine functionality, so this tool is the obvious choice. This is actually a sub-optimal way to find the right people.

Job seekers realized creating a resume with all the same buzzwords in the job posting gets them filtered to the top.

As non-techies, recruiters might not understand the differences between technology skill sets or the opinionated nature of software engineers. We spend a lot of time evaluating and learning dozens of technologies. This encourages strong biases towards how we enjoy our time coding.

A JavaScript engineer may be an expert in React. Chances are they won’t be as excited to work for a company using Angular because these tools approach similar problems from two different perspectives. More subtle is Angular 1 is vastly different from Angular 2 and you can’t assume someone can or wants to transition to the new version.

Training recruiters on how to identify the best referrals is extremely beneficial. Selling with more accurate bullet points increases the quality of candidates.

We’ve got a live one!

A fish is on the hook! Work quickly to reel them in. A 10–15 minute video chat to meet and greet, answer questions, set expectations and then schedule an interview time. Delays create frustration. Be responsive to emails. Big fish get special treatment from upper management. Move quickly, other companies might be making offers.

Hired requires you to make an offer before the interview and shows what other companies offered. In a comical creative fit, we made offers $2 above everyone else in order to appear at the top. It worked.

We learned from HackerNews Who’s hiring that it is good to mitigate surprises by telling people what to expect in the interview process.

You will come in and pair program with one of the co-founders for 1–2 hours. You will be tasked with writing code as if it is your first day of work with us. We use IDEA, Guice, JAX-RS, Jackson, JUnit, Project Lombok.

Many people didn’t know or research the technologies we mentioned. Occasionally, they would come prepared. This sounds like our screening process was too lenient, but it was a good indicator of a self-starter.

Interview

As soon as someone arrived, we show them around the office, offer food/drink and then sit down at a pair programming station.

This is two monitors in mirrored mode, two keyboards, two trackpads. All connected to a single computer. Both people can type at the same time, increasing the interactivity. The supportive pair is there to help with any questions.

GearLaunch processes a lot of credit cards and our interest is around this functionality. Consider your own business needs. Write stories and implement a project with tests. Begin with a simple feature and keep increasing complexity. Strip out the implementation details and use that as your basis.

Implement an API to process a credit card transaction. Only accept cards that end in an odd number. The network is flaky, prevent duplicate charges on retries.

The expectation is to code similar to the first day on the job. Implement RESTful endpoints using common data structures_,_ methodologies (idempotency) and database transactions.

No coding on a wall, solving brain teasers or regurgitating algorithms. While these techniques work for a lot of companies, we felt it is more beneficial to use a real world simulation. Pair programming helps reduce typical interview stress because someone is helping.

Hiring remotely? Use a shared editor to do live video chat coding.

Evaluation

Writing tests first is good. Asking for help is expected, because that is what you want from your co-workers. Knowing how to ask the right questions is great. Searching StackOverflow is desirable. Some struggle with transactions or idempotency and others get it right away.

Just a few suggestions, pick what works for your company. Train people on how to host an interview. Strive for consistency with few bottlenecks. By the end of the session, we were able to make a quantitative decision.

Encourage near misses to come back for another interview. People have a bad day or they improve over time.

End(down)

We were proud of the fact that almost everyone left feeling like it was one of their better interview experiences, regardless of success. The community is small, hiring is hard and we don’t want people talking sh*t.

Go out for lunch. We spend 8+ hours a day with co-workers, sometimes more than our own families! If you don’t want to hang out for an hour in a social situation, would you want to spend time, under stress, in the workplace?

Use an open mind, challenge yourself and your co-workers to think outside the box instead of just doing what everyone else is doing. Be brave and try new techniques to see how they work for your situation.

This is my first post on Medium. I’m working on a few more in this genre. The more people who follow me, the more encouraged I will be to keep writing. Thanks!