Generalists and specialists: thoughts on hiring

http://www.nczonline.net/blog/2014/07/15/generalists-and-specialists-thoughts-on-hiring/


Generalists and young companies

A generalist is someone who, by definition, has no particular specialty. They probably graduated with a computer science degree and is good doing a lot of what I’d describe as server-side activities: databases, infrastructure, builds, deploys, data manipulation and processing, and so on. Generalists don’t mind jumping from C++ to Python to Java in the course of their work, as many languages are similar enough that there aren’t huge barriers to making the transition. They are real workhorses, able to take on whatever is thrown at them.(全才能搞定很多东西)

Generalists tend to do a good but perhaps not great job on a lot of things and tend to struggle on things that require a different mode of thinking. For instance, many generalists struggle with taking on front-end or mobile work. The paradigm is so different that there’s not enough common ground to make these work well, and so those parts of the product tend to suffer a bit in the presence of generalists.(但是全才也存在缺点,就是很难深入地思考某些事情)

Young companies don’t have the luxury of hiring people who can only do one thing or a small subset of things. There’s too much work to do and not enough people to do it. Generalists are the way that the business gets off the ground and makes something works. Everyone needs to be working on something all of the time or you’re wasting a very limited resource: money. (对于初创公司来说全才是必要的,因为每个人都需要同时做几件事情,否则就是在浪费资源)

At this stage, there’s also a certain pragmatism to the technical approach. The entire system is relatively small and so it’s possible (and necessary) for each engineer to understand each part of the system. Being able to keep the entire system in your head is key at this point, because everyone needs to be able to do just about everything.(并且这个时候系统规模还比较小,每个工程师都可以cover全部至少了解全部。这点至关重要,这样大家才能同时工作)


Introducing specialists

Specialists, on the other hand, are people who excel at a particular type of thing. They have made room in their brains for deep knowledge of a particular area and, in doing so, have necessarily forgotten (intentionally or not) some of the things that generalists know top-of-mind. What specialists bring to the table is a level of excellence in something specific. They have devoted their career to focusing narrowly on something and, as a result, are much better at that thing than a generalist could ever be.(专家在某些方面工作非常出色,但是也会忘记其他方面知识,而这方面全才却了如指掌)

Early on at a company, generalists create a lot of “good enough” solutions. That’s not to say this is a bad strategy, it’s just a fact of how companies grow. The “good enough” solutions are, as the name suggestions, good enough to get the company to its next stage growth. Sometimes it’s good enough to get the company through two or three stages of growth. But eventually, “good enough” won’t be good enough anymore, and that’s when you need to start hiring specialists.(全才可以做出good enough的东西,但是只是在公司起步阶段看起来不错,之后就需要雇佣专家来改进)

This is often a controversial topic for smaller companies that are growing into larger ones. The main arguments against hiring specialists tend to be: (但是对于那些成长为大公司的小公司来说,雇佣专家是非常具有争议性的)

If you’re a specialist reading this list, you’re probably thinking, “those are bullshit reasons.” If you’re a generalist reading this list, you’re probably thinking, “well duh, obviously.” So I’ll split the difference and say that these concerns are real and valid, however, they are far from unsolvable. Many companies have tread this path and have come out successful. The trouble is always getting that first specialist in the door to prove the system can work.(这个问题所有公司都会遇到,最困难的事情莫过于,招聘到第一个专家并且证明it works)


Do we really need a specialist?

Whether or not you really need a specialist tends to come down to how dire your situation is and generally falls into one of two categories:(通常下面两种情况需要考虑雇佣专家)

The question of whether you real need a specialist or not can also be answered by looking at the current resource allocation. If you see the same part of the system constantly needing attention (i.e., the web front-end or the mobile app), then chances are the generalists are no longer cutting it.(如果发现某个部分持续出现问题的话,那么就是需要考虑雇佣专家了)


Hiring a specialist

Eventually, every successful company will hire their first specialist – it’s a virtual certainty. The first step is to figure out how to hire that specialist. You need to accept that your current interview process probably doesn’t apply. On top of that, specialists tend to get frustrated with questions that have nothing to do with what they’re good at. So how do you interview for a specialist when your company doesn’t have that specialization? (最终你肯定需要专家的。你要做的第一件事情就是为专家设置面试流程,应该过去适合全才面试流程不适合专家)

While you’re company doesn’t have any specialization, it does have people who have worked on the specific problems you want the specialist to work on. Those are the people who should be conducting the interview. The simplest way to go forward is to discuss the current problems you’re having and ask candidates how they would go about solving them. This isn’t about getting free work from random people, as it’s likely impossible to solve these problems completely during the course of an interview. Rather, it’s about getting the candidates to teach you about the context of the problem and understanding their thought process. Good specialists will be able to tell you the area of the problem and how they would go about investigating and potentially fixing it.(可以让负责这方面的工程师来面试,和专家说说现在问题是怎么样的,然后着重看这些专家思路是否靠谱)

This ability to clearly communicate to people outside of their specialization is really important for a first specialist hire since that’s what they’ll be doing all the time. Because no one else will know exactly what they’re doing, you need to be able to trust the specialist to communicate clearly and in a way that everyone can understand. In the end, understanding how the candidate will address the problem and agreeing that it makes sense is the best way to make this first hire.(并且需要能够很好地和团队其他成员沟通,告诉他们专家正在负责的事情,因为其他成员可能根本不知道专家在做什么)

The second part of the problem, resource allocation, tends to fix itself. Many generalist-minded engineering VPs fear that the specialist will be left without enough to do such that they become a money sink. In practice, there’s usually enough work for the specialist to focus on in the beginning that this isn’t a big issue. Either cleaning up a mess or creating a completely new product means that the specialist will have plenty to keep them busy for a decent amount of time. After that point, it’s typically the case that once an engineering team has developed a competence in something, they want to add more to it. The web application starts needing new end-user features and the mobile apps needs some new functionality. Oftentimes, you’ll find that within a year or two, you probably want to hire another specialist to deal with the additional work.(资源配置这个问题,通常不是大问题。因为一旦专家熟悉环境之后就有非常多的工作可以做)


The specialist tipping point

At a certain point in a company’s lifecycle, it will be hard to get along without specialists. Even the generalists you have hired will start to focus in on a particular area of the product. The product and the infrastructure that supports it gets much larger, and that introduces an interesting problem.

You started by hiring generalists who were capable of doing everything. That was possible because the infrastructure was small and it was easy to keep knowledge about everything in their heads. At a certain point, the infrastructure becomes so large that it’s nearly impossible for everyone to keep the whole thing in their heads. Trying to keep tabs on how all parts of the system are changing becomes impossible and so, necessarily, people start to specialize.(系统变大之后,很难让团队所有成员都清楚系统每个部分是怎样的,这个时候团队成员开始分工)

Specialization at this stage means keeping less of the system in your head, and it frees up engineers to be more effective. They end up needing to understand only the boundary conditions of a particular part of the system. If they need to know more than that for any reason, there’s someone to go to talk to who has that part of the system in their head.(只需要了解系统一小部分,如果还需要了解更多,就需要找其他部分负责人)

You’ll know when you’ve hit this stage when people start to request to stay on particular projects longer or start coming up with new tasks on a particular part without prodding. It’s the, “I see five ways this could be better,” comment that indicates the beginning of specialization. Someone took the time to learn about this part of the system and now wants to continue working on it and making it better.(你会观察到,如果人们在某个项目上花费时间越长,并且有许多好主意的时候,说明可以考虑开始分工了)

At this point, it’s easier to hire specialists because you already have them and it becomes harder to rationalize hiring generalists. As a company grows, teaching each engineer how to do their job or expecting them to learn something they’ve never done before on their own means a very slow start. At one company I worked at, it took engineers six months before they could be productive. This was the result of insisting on hiring generalists and also using proprietary instead of off-the-shelf systems. That meant we could never hire someone who already knew how something worked, we always had to hire in the hopes we could teach them. You just can’t afford that amount of lag when hiring.(这时就非常适合招聘专家了。当然也可以让全才自学这方面的东西,但是时间长成本高)

That doesn’t mean engineers won’t get bored and occasionally want to jump into something completely different. That will still happen, but to a far lesser degree, and the organization can support a small number of people doing such a thing at this stage. It can’t support everyone continually shifting around to different parts of the system and needing to learn, from scratch, how to be effective in that part.(但这并不意味着工程师不会厌烦向尝试其他方向。可以允许少数人适当这么做,但是让很多人这么做则不太现实)


What about just hiring the best people?

The counter argument to hiring specialists is that the company really just wants to hire the best and the brightest and put them to work. I call this the Google ideal because it’s the way Google historically did hiring. Back when I interviewed with Google (circa 2006), they were the hot company that everyone wanted to work for. Just getting an interview was exciting. The interesting part was that they didn’t seem to care too much about what your specialty was. You also couldn’t apply for a particular position. Everyone who got hired would go into a pool and you’d find out what you were working on during your first day. So the idea was to hire the brightest people possible and find some place to put them to work. In short, the ultimate generalist approach.(这种方式历史上被Google使用过。面试官不关心你特长是什么,你甚至不能申请某个具体职位。所有人都会被放入一个pool, 直到上班第一天才知道自己在什么team. 简单地说,这是招聘全才的终极方式)

I’m not sure if Google still hires this way or not, but I equate it to drafting the best player available in professional sports. If you’re not a sports fan, then here’s the little bit of knowledge you need to understand this analogy. Professional team sports in the United States have annual drafts in which the teams select amateur or international players for their teams. Basketball is the simplest to describe. At any given point in a game, a basketball team has five players on the court: two guards, two forwards, and a center. Each of these positions have different responsibilities and requirements. During the draft, many teams will look specifically for a player who plays a position that they need help with (the equivalent of a specialist). However, some teams opt for the “best player available”, which is to say that they don’t have a specific need for the position, or they aren’t sure what position the player will play, but they generally feel like the player is the most talented one available (the equivalent of a generalist).(这种方式等同于在职业比赛中只使用最佳选手。你就知道这种方式非常不合理了)

Regardless of who the team selects, they are still limited to playing five players at a time. The goal is, therefore, to get the best center, the two best forwards, and the two best guards that you can get in order to be competitive. Refusing to see the difference between the requirements for each position and putting together a cohesive team means the whole team suffers. Basketball teams know this, and many times will pass over the player available if that player plays a position that the team already has covered with a good player.(不考虑每个队员差异,而仅仅是将最好的球员放在一起,最终会损害整个team)

Personally, I’m a big believer in hiring specialists when the size of your company and product allows you to do so. Continuing to hire generalists and training on-the-job becomes a scaling issue for a growing company and you invariably end up with an unbalanced team that’s not able to take on all of the new types of work that pop up.(所以核心观点是,公司发展有需要专家的时候,就一定要找专家)


Closing thoughts

I’ve come to believe that there’s a human tendency towards specialization. Our entire life is setup this way through the education process, which starts with general knowledge (math, literature, science, history) up into college where we are expected to pick a major or focus area. It’s natural that when you find something you enjoy doing, you want to do more of that and do so at the expense of other things that seem less interesting or enjoyable.(其实人类本身也是习惯分工的,就好像大学之前什么都学,上了大学还是挑专业学习)

Early-stage companies definitely need generalists, and probably will for a decent amount of time until it’s possible to hire a lot of people. Generalists are well-suited to this situation, or really, any situation where there is a need to be able to move quickly between a group of disparate tasks. The tradeoff you’re making is in accepting “good enough” solutions for a lot of things rather than the best solution for a few. You hire generalists for their potential, for all the different things you imagine they can do for you.(初创时期需要全才,能够搞定很多事情,做出许多good enough的东西)

You bring on specialists when “good enough” is no longer good enough. Sometimes that’s because of a big mess that need to be cleaned up, or sometimes it’s a natural evolution in the product where you need to deliver results quickly. In those cases, you need to bring in someone who already has the skills and knowledge to deliver. You hire specialists not for their potential to do other things, but for how they can meaningfully contribute right now.(但是总有一天good enough还是不能接受,就需要考虑专家,把一些已有的知识和经验带来快速解决问题)

And over the course of careers and companies, it’s not uncommon to see generalists become specialists. That’s natural as the size of the system and infrastructure grows and scales. Allowing people to become specialists helps everyone become more efficient, as they need to have less of the system in their heads in order to be effective at their job. That lets everyone move faster and focus more deeply on the problem at hand.(全才也可以向专家转型)