Startups: Stop Trying To Hire Ninja-Rockstar Engineers

Written By: Dharmesh Shah August 6, 2012
This is a guest post by Avi Flombaum. Avi is the Dean of The Flatiron School, an intensive program to learn Ruby on Rails in New York. He was formerly the co-founder and CTO at Designer Pages. You can follow him at @aviflombaum or @flatironschool.

Hiring technical talent is often cited as one of the most difficult parts of scaling a startup. Great companies are built by great teams so naturally, when it comes to technical talent, companies are competing harder than ever to entice the best of the best. The rationale you'll typically hear is along the lines of "a great developer is 10x as productive as a mediocre one." That might be true, but it is an impractical startup hiring strategy.

While companies fight tooth and nail over engineers with MIT or Stanford degrees with years of experience, as CTO of designer pages, my best hires were consistently entry-level developers that I developed on the job. Some companies, like Zendesk and GeneralThings have already realized this and are working with schools like Dev Bootcamp in San Francisco, The Flatiron School in New York (of which I'm a co-founder) and Code Academy in Chicago to hire their newly minted web development graduates. Aside from the fact that they're significantly easier to attract, there are tremendous benefits to the company.ninja dev small

1. Cost- Starting salaries for senior developers have skyrocketed in the past few years. The average starting salary for a senior Ruby developer has climbed to $94,000 ($107,000 in Silicon Valley). Compare that with the average salary for a junior Ruby developer, $70,000, ($80,000 in Silicone Valley). At that rate, you can give a junior developer a 10% raise every year for 3 years at the end of which you'd have an experienced senior employee who's been with you that long and is still costing less than a new senior hire.
2. Attitude- Anyone that gets courted the way a senior engineer does today is at risk of developing a sense of entitlement (to put it lightly). When I hired 'rockstars' at Designer Pages, the requests became increasingly ludicrous. Senior engineers had four-day weeks, required conference budgets, and refused to adhere to the language and technology standards the company had established. They always knew best and felt that we were lucky to have them. Junior devs on the other hand, are hungry. They want to prove themselves and are eager to learn. And assuming you're fostering the right culture, are excited to be part of your team.
3. Turnover- High turnover is the easiest way to kill a product. In The Mythical Man-Month, Frederick Brooks discusses problems inherent in a system designed by a succession of leaders, each with his own style and ideas: "I will contend that conceptual integrity is the most important consideration in system design. It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas."
Great companies need great engineers who want to solve complex problems. But the majority of work being done on a typical web application does not require a team full of PhD's with 10 years experience, making it no surprise that senior engineers quickly get bored and seek out other opportunities. By hiring junior developers and ensuring they're getting the continual training and development that they need, you can ensure that they stay engaged and derive as much personal and professional value out of your company as your company derives from them.
4. Culture- A prerequisite for being a great programmer is a love of learning. Unfortunately, many senior engineers come with a lot of baggage; they want to work on specific problems, in specific languages, and have little patience for the inexperienced n00b. By hiring junior engineers, and giving them the training and development they need to flourish, not only can you align everyone's technical styles under a cohesive vision, you can more easily create a culture wherein it is expected for the senior employees to mentor and coach new hires, just as they were coached when they first started.
To be clear, this isn't true in every case. I happen to know plenty of incredibly humble, loyal, and generous (though not cheap), senior engineers. And if you're trying to build a better search engine, or solve the world's most complex data problems, you probably do need to recruit from the top 1%. Most companies though just need great leaders who can help their teams think through the difficult questions, and team members who are wiling to work together to implement creative solutions. The bottom line is that for most products, seeking out rockstar senior engineers is like hiring Picasso to paint your apartment.
So what's the best way to put this plan into action? Here are some things I found to be effective when developing junior engineers at Designer Pages:
1 - Deploy on Day One- Making engineers deploy code on their first day is the single best way to get them feeling great about their ability to acclimate and impact change in your organization. Companies like Etsy actually have a hard-and-fast rule that all engineers should deploy to production on day one.
2 - Assign Mentors- Lots of companies say they mentor their employees. I've found that unless this is systematized, senior employees get too busy to dedicate the necessary amount of time. Make sure every new hire has a mentor to pair with basically all-day for at least the first two weeks.
3 - Foster Productivity Early- The best way to sharpen a programmers skills is to write code. Junior engineers shouldn't be trying to learn legacy systems when they first arrive- let them work in as fresh a codebase as possible so they can get cranking right away.
4 - Invest in Training- Nothing will give you a better ROI on your time than making sure your employees are well trained. Create a learning plan for each hire for the first 3-6 months, complete with recommended reading, that applies to the projects they are working on.
5 - Be patient. :)
At the end of the day, when you hire junior developers, you are investing in people. You are creating a culture of growth, promotion, and learning that will pay for itself multiple times over. And it will also help you recruit the Ninja-Rockstars when you actually need them ;).
What do you think?  What's been your experience in terms of bringing on junior members to the team vs. the almost mythical ninja-rockstar engineers?

Related Posts