I have spent the better part of the last 15 years of my professional life facing the steep challenge of recruiting developers across the globe and have to confess that trying to do this in Silicon Valley is extremely challenging. As I have written in earlier columns, perhaps the single largest challenge company's face today is the cost and time it takes to recruit and hire technical talent. While I cannot claim to be an expert, I can say that after hiring hundreds of developers in my career and conducting many exit interviews, employee surveys etc., I have learned a few things worth sharing if you are facing this challenge for the first time or if you are facing the frustration of doing this well. I should also note that this article is mainly for a non-developer who is engaging in this task because I think most leaders of engineers/developers likely understand this already.
Before we get to the list, let me offer the disclaimer that this by no means is a comprehensive list for every developer/engineer but rather a summary of what I have found to be key elements in every organization I have come across that is faced with ramping and building a vibrant developer team and community. Some of these points may seem painfully obvious, but I can assure you few organizations pull them all together and deliver on them.
If you are facing this challenge, I hope some of my lessons learned will help:
1. Great developers love working with great developers.
This may seem obvious but there is more to it than you may think. Build a team of individuals who has passion and pride in their work, who bring a high degree of intellectual curiosity and a track record of growth and achievement and it will pay big dividends. One method that helps is to secure yourself a "technical luminary" to join your company because great talent will follow luminaries and want to learn from them. If you are unable to hire a luminary, find a way to get them in the universe of your company--either as a mentor, board member, technical advisor, etc. If you can't do that then try to bring luminaries to your campus often and ask them to hold workshops and seminars. Hosting tech talks is a brilliant two-for-one activity--you get to develop your team and show off your company to outside talent which should help recruiting.
2. Great developers love working with the latest tools, tech and programming languages.
The more current and cool the toys and systems you have, the more excited the team will be. Working on old tech is not nearly as interesting as working with the most up to date and coolest stuff. The team needs to know you are committed to world-class tools and tech, and that this is a priority for you. The best way to prove that out is to actually have the best "stuff" in their hands. One company I worked at had great tools but the code base was so awful that some new hires simply left the first few weeks after joining. The problem was not just a poor code stack--some new hires did not feel the company was committed to fixing it either, so they left. So, if you don't have the best tools yet, you better show the team you are committed to making that investment and you care.
3. Great developers love solving big complex problems.
Again, this may seem obvious, but many companies are solving big problems but they are not able to articulate how large or compelling the problems really are, nor do they do a good job of making the developer community aware. At LinkedIn, it took us awhile to realize that we were attempting to solve something that had never been solved before; mining and then mapping the global professional graph and discovering patters from education through careers that were unlocking massive insights for professionals and even national economies. Once this started to come to light, our team got more excited and the word started to get out to the market at a much faster clip. Even better, once we knew more clearly the massive problems we were solving and how critical they were to the world, the creativity directed at solving those improved dramatically.
4. Great developers love solving problems that matter.
An amazing man and former colleague David Henke once told me that the one sure way to demotivate and piss-off a developer was to have him work really hard on something and then throw it away or not use it. Developers have choice at where they work today more than ever and most would like to be working on a project and in a company that stands for something that matters and is solving something meaningful. This is a key point regarding how you recruit and how you attract the attention of top developers--tell them how complex and challenging the problem is and then describe why it matters to the world. At LinkedIn, we felt that helping our members find career satisfaction and/or their dream job was something powerful--and this really resonated at scale as we recruited. Every company is changing the world in some small or large capacity and it's critical that you understand what that is and are able to articulate it well both inside and out of your organization. I once heard a Stanford GSB professor state that her students were joining a boss and a project and not necessarily a company. Further, insights derived from social media posts has created an incredible amount of data for candidates to know what problems a company is solving and how good or bad are the leaders who are solving these problems. Make sure you know yours' and are letting the world know.
5. Great developers want to work in an environment that values their contribution.
This is another simple element to ensure you have in place. As noted in #4, if you have a team working hard on something, and then you change your mind or kill the product, you are harming the team's engagement significantly. You may get away with this once or twice but done repeatedly, it will lead to resignations and apathy. Regularly recognizing and highlighting achievements, breakthroughs, insights and progress in your developer community is essential. Further, sharing the learning's and insights of individuals and teams across the organization also helps grow the capabilities of the organization, which is all goodness.
6. Great developers love to constantly learn.
As noted above, one of the reasons new tech and luminaries and great surrounding talent are important is because they contribute to building a learning environment, a challenging environment where people are working on cutting edge stuff and pushing one another and brainstorming and iterating off of each other. All the ingredients are important, but it's critical to be building a learning environment. Great leaders are also great teachers who foster learning and understanding and most great developers have a huge thirst to learn and grow. Feed it!
7. Great developers are suspicious of "the man".
If you want to kill the motivation and engagement of your developers, simply smother them in bureaucracy, meetings, rules, regulations and administrivia. This will be sure to have them running for the doors. I have found that, as a whole, developers don't respond well to dictates as much as a goal accompanied by a detailed and transparent explanation of why that goal was chose and why it's important. "We need to do this because of x, y and z." I think developers, like most humans, want to know you understand them and what is important to them. "Big Company" communications, or treating them like children rather than important adults will lead to bad consequences. They want to have an opportunity to give their input and to ask questions about why the goal was chosen or what path is the best way to solving a problem. Not being open to their input is a big de-motivator. Great developers are problem solvers who are passionate and dedicated to their craft and (like most professions), expect others to be similarly dedicated to their crafts.
8. Great developers want some creative license.
While providing developers with great complex challenges that matter in the world is important, I have found that its also critical to offer opportunities for them to work on things they want to work on, such as side projects, hack-a-thons, or work that stimulates them. Providing days, hours or opportunities for this to happen at a regular cadence is critical. Some companies offer a day a week or a day a month or in some cases, a month every other year for people to focus on what THEY want to work on or develop. Unlocking impact and creativity in the developer community has only yielded great results in my career.
In summary, I hope some of these insights help you as you build the developer community in your organization. The good news is that none of these are complicated tasks, yet many companies fail at one or several of them. The last point I want to make about developers is one that I learned the hard way and that is--while doing all the 8 things above is critical, there is one time in a developer's career when they are most vulnerable to leave your organization and do something different and that is at the completion of a project. Most developers will not leave a job before a project is complete, but many will if they are unhappy about something--once a project is complete. One way I have tried to combat that over the years is to market and discuss the next project months before the current one is complete OR have dual overlapping projects in place.