Engineering Management
From late 2006 to early 2009, I was privileged to hold a variety of management positions in Facebook Engineering, ranging from manager of various teams to director of engineering. During that time, the engineering department grew from about 30 to around 200 engineers. It was an era that roughly spanned the launch of News Feed, Facebook Platform (the first F8 conference), the launch of our self-serve advertising system (now a major contributor to our positive cash-flow), internationalization of the site, and Facebook Connect. We went from being a niche college social network with less than 10M users in 2006 to a global phenomenon with over 250M users by early 2009. It was a period of time during which the company grew from being a small startup (under 100 employees) to a medium-sized company (800+ employees). Coming to Facebook, it was clear that the company was likely to expand rapidly, and a great hope of mine was to play a part in influencing key developmental decisions during this critical period so that far into the future, Facebook and its engineering department would be a vibrant and enduring institution. From my time at other technology companies which had gone through this period of hyper-growth, I had formed ideas about key cultural and organizational factors that I felt contributed to creating a strong engineering environment, one that the best people would want to work in and which maximize innovation and rapid execution. Today I have returned to being a hands-on engineer, and the other day when I reflected upon how I found it quite pleasant that I was now getting to enjoy working in such a productive engineering environment, the person I was with asked me, Well, what ARE the Yishan tenets of growing a great engineering organization? I had never quite thought about my ideas in such a doctrinaire way (and indeed it is dangerous to do so, lest they become unnecessarily enshrined), but I'll indulge anyway and see if I can marshal them into a numbered list, so here they are: 1. Hiring is number one 2. Let process be implemented by those who practice it 3. Promotion from within 4. Tools are top priority 5. Technical Leaders Note: these do not include various obvious Silicon Valley ideas about how to create a good technology startup like hire the best people or have an environment that ensures open communication. There is a list of about a dozen of these that everyone knows; my list is a set of more (I consider) non-obvious things, things that rapidly growing technology organizations don't find it obvious to do easily. I believe that organizations which successfully integrate these ideas into their culture and habits end up becoming stronger, enduring, and self-renewing, while those which don't eventually weaken and spiral off into mediocrity. Over the next five days, I'll write a post about each one of these, elaborating what I mean by them and why I think each is important. To those who've worked with me over the last few years, now you get to see my playbook and why I did the things I did. I hope people find this useful and fun! This is the first part of a series of notes regarding my thoughts during my time in engineering management at Facebook. Read the intro here . Hiring is number one This means make hiring your number one priority, always. This means that it needs to be your organization's first priority, it needs to be each manager's first priority, and it needs to be each engineer's first priority. Hiring is a function requiring cooperation from multiple departments and consists of multiple phases; roughly speaking: sourcing, screening, interviewing, deciding, offer-making, and closing. At each stage this means making the relevant actions the top priority of the responsible actor, e.g. it means that recruiters contact a lead immediately, and schedule an interview or follow-up conversations to occur at the first humanly-possible time slot. It means that doing an interview takes priority over other work. It means that hire/no-hire decisions are made as soon as possible upon conclusion of the interviews, and offers made with subsequent speed. Recruiters don't wait until the next day to call a candidate or schedule them for next week. Interviewers don't skip an interview because they have other things to do. Interviewers don't wait a few hours or days to give their feedback on an interview. Hiring managers coalesce the feedback, facillitate a decision, put together an offer, and begin closing the candidate immediately. The resultant execution speed of the hiring process is a side-effect and a good indicator of whether or not all parties involved are upholding this value. It happens to provide a competitive advantage in hiring certain candidates (typically satisficers ), but the real benefit of consciously making hiring the top priority over everything is that it drives other behaviors, values, and results which improve the quality of people and the workplace. Effects: 1) It creates a focus on high-quality hiring standards, and how to achieve them in practice. Hire the best is a well-known Silicon Valley maxim, but many companies fail to diffrentiate between hiring the best and hiring the best candidate you interviewed. Successfully hiring the best is a side-effect of making hiring your top priority, because attracting the best candidates to your company, making yourself a viable employment option to them, evaluating them effectively, and then standing out among competing offers is a holistic effect that can only be achieved if everyone involved cares about it enough to do the nitty-gritty things that make all of that happen. How do you have high standards? Furthermore, how do you test if a candidate measures up to them? Since both are easier said than done, it is only once a culture of giving hiring top priority in peoples' attentions will individuals and managers naturally begin directing their energy into doing things like deciding what constitutes effective interviewing techniques, what kinds of questions are best to ask, how to effectively diffrentiate between good and bad signals in an interview, etc, and subsequently how to train the entire cadre of interviewers to be able to effectively and repeatably practice this. The willingness to do this takes an enormous amount of collective energy, and it simply can't occur until everyone is suffused in a culture that values the practice of hiring above all else. Hiring is hard; it is messy and imprecise (which technical people hate), and so you can't make anyone do all this unless they first believe it's important. 2) It also means that everyone interviews (or everyone who has been at the company at least some minimum amount of time). Since hiring is everyone's top priority, there should be no one for whom interviewing (and participating in other hiring-related activities) is an optional activity. It should eliminate the occurence of the engineer who says I just want to code; you guys do the interviewing and hiring. This has a number of effects. First, it means that more people are bought in to the candidates who eventually join, and team bonding gets a jumpstart - new people join a workplace where they have already met several people, and know that these people approve of and welcome them. Second, it puts the power of maintaining the quality of one's workplace into everyone's hands. Personnel excellence is not just something management handles off in some ivory tower, it lives and dies through the practice of individuals. A question is often asked in hyper-growth companies, How are we ensuring that all these people we're hiring are top-notch people? The answer, if everyone interviews, is It's YOUR job. To each and every individual, it's your jo