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!