You Need Great Talent
Finding the right people to staff your teams is not an easy task, and I know firsthand from having hosted hundreds of interviews. From the outside, it may look pretty simple (i.e., hire a team of 10 developers) but when you get down to actually finding those people, there’s a lot of things to consider. Cost is often the primary factor. Level of experience can make or break a candidate. Lots of candidates look great on paper but don’t fit when you meet them.
With all these challenges, it isn’t surprising how hard hiring can be. Companies have resorted to a lot of different methods to accelerate the hiring process, including simply resorting to outsourcing. In this article, I’m going to argue that resorting to such methods is a bad idea and that culture and talent level are more important than any of the other factors.
What is Great Talent?
It’s not easy to define what we really mean by talent, as different jobs require different skills. While acting or music has clear identifiers of talent level, identifying great talent in fields like software engineering is much harder. A common technique used for testing candidates is using brain teasers or coding challenges. I don’t believe these techniques are the best because they really miss what I think of as talent.
I’m more interested in is breadth of skills, rather than the depth of skills. It can often be easy to find really good C++ developer, but then ask them to write Python and suddenly they are fish out of water. Being skilled at a language doesn’t necessarily translate into having the knowledge about what things are going on under the hood. A lot of developers don’t really understand advanced concepts like thread synchronization and closures. The lack of understanding in these areas can lead to defects that are incredibly hard to track down.
When I was at MIT, my first programming languages were languages like LISP and languages that were invented by the professors themselves. I was disappointed at this at first, but as they taught us concepts using these languages, I began to realize that the concepts were more important than the syntax. When I finally did start learning C, I was ahead of a lot of the folks that start programming with C from scratch. Since then, it has been incredibly easy for me to pick up new technologies because the fundamentals under the hood are the same, even if the interfaces are different.
Learning is an Important Skill
Learning is a highly underrated skill. We all learn a lot when we are young, but some of us stop learning at some point, and I believe this is a mistake. Learning new skills is an important part of making advances in your career, and not learning can often stifle your career growth. I’ve been writing software for over 20 years, and I’m still learning new things every single day.
I especially enjoy working with people who want to learn new things all the time and will make the time to learn whatever skills are required to do the job right. I believe we shouldn’t be afraid to try something new in order to reduce the amount of time and effort it takes to get the job done. This can put people outside their comfort zone, but I believe it is important to push the limits over time in order to make yourself more valuable.
Great Talent is a Cultural Thing
I have worked in different parts of the country — New York, California, North Carolina — and I’ve seen significant differences in the culture of companies in different areas. The west coast prides itself on being more casual and relaxed, while the east coast tends to be more traditional and formal.
One thing I have observed is that great talent is a cultural thing. What I mean is that the companies I have enjoyed working for the most were the companies that really valued their work culture. That is, the company puts investing in their employees and the work environment above achieving high profits and expanding customer base.
These days, you will see a lot of companies boast about how great their work culture is, but there is a difference between the fluffy marketing vision of what their culture is like and what actually happens inside the company. One big hurdle is that in order to deliver a rewarding culture, it needs to be personal. When companies get larger, the personal touch tends to get left out.
I believe this is why a lot of really talented folks gravitate towards startup companies. When the number of employees is under 50, it is a lot easier for the leadership to drive and cultivate the culture of the company. Employees can easily fit together in a room. Everyone gets to know everyone else. Company events are more like events with friends. When the company succeeds it often feels more like a personal victory for everyone.
Outsourcing Affects Culture in Negative Ways
I will preface this paragraph by saying that I understand outsourcing can be a sensitive and controversial topic. I want to assure my readers that I believe having a diverse ethnic culture is a really valuable thing, and I’m not against that in any way. I feel, however, that there is personal culture (things you do at home and with your friends and family) and business culture (your interactions with your coworkers).
A lot of companies do get work accomplished through outsourcing, but I believe that it can have adverse impacts on the business culture. These adverse impacts can often drive away people who are really talented but want to work in environments that have better culture. Outsourcing makes maintaining a uniform culture even more difficult — interactions between employees are even more distant and impersonal.
In my experience, outsourcing firms often don’t have the best talent. They will give you more developers for the same price as a senior or mid-level engineer, but anyone who has read The Mythical Man Month understands that adding more people to a task doesn’t translate into it getting done faster. Cheaper developers are also often less experienced developers, and if you have read The Phoenix Project or The Goal, you also understand that you don’t really make the company better by simply cutting costs.
You Get What You Pay For
When it comes down to picking your teams, you get what you pay for. If you choose to go distributed and cheap, you are going to have to deal with the challenges that come with that choice. Too often I’ve seen teams make that choice and end up with inferior results and a stale company culture that drives away the really good talent.
If you instead put more value on hiring the right people for what they are really worth and giving them a rich company culture, you will find that your teams will end up being a lot more productive. Ultimately, the most important thing is delivering the highest quality you can to your customers. When you have great people working together in an environment that they love, you will find they go the extra mile to ensure that the quality level remains high.
In this article, I’ve talked a lot about why I believe that hiring great talent and maintaining a rich company culture is more important than simply filling seats and trying to keep costs down. Your company will need great talent to stay ahead of the competition, and great culture is often how you attract that talent. Resorting to outsourcing can often harm that culture and result in bad product being shipped out the door. I believe that keeping the quality high by hiring the right talent and building your culture, you will win more customers and increase profits, and this will offset any savings you get from simply cutting costs.