The One Important Thing to Consider When Deciding Where to Work

by Edmond Lau

A young engineer recently reached out and asked for advice on a few job offers he was considering. Should he accept a software engineering position at a more established tech company like Google or Facebook? Or at a rapidly growing mid-sized company? Or perhaps even at a small but promising startup? More generally — what should someone consider when choosing between job offers?

While money and location can and often play a role, the one important thing I recommended to people I mentor is to optimize for learning — whether it be learning how to write better code, how to build a product, how to lead a team, or something else — by picking the work environment where they’d learn the most. This mantra rings particularly true for new college graduates. You’re likely be working for a while, and setting up the right foundation for yourself will open up many more career opportunities in the future.

Even learning, however, has many dimensions, and the best place for you to learn depends partly on the place and partly on your own preferences and comfort level. In this article, we discuss ten key facets of learning to consider.

1. Company & Team Growth

When Sheryl Sandberg was deciding whether to join Google, CEO Eric Schmidt gave her a valuable piece of advice: “If you’re offered a seat on a rocket ship, don’t ask what seat. Just get on.” 1 That advice to use growth as the North Star for her career has certainly served her well, and it opened the opportunity for her to later become the COO of Facebook.

More growth means more challenges and more responsibilities. At fast-growing companies, there are often more problems to solve than resources available, which means that you have ample opportunities to both learn and to make a large impact. The growth also means it’s easier to attract talent, which in turn makes it easier to build a strong team to generate even more growth. A lack of growth, on the other hand, leads to stagnation and politics, and employees might squabble over opportunities that are too limited to share. It becomes harder to find and retain talent.

Taking Sandberg’s advice to heart means following companies that are growing, based on whatever growth metrics you can find — the growth rate of weekly active users, of annual recurring revenue, of headcount, or of some core business metric. Companies are generally protective of these numbers, so you may have to work to find them. Even within a more established company, different teams and initiatives will grow at different rates depending on their priorities within the company. Find ones that are growing to increase your learning rate.

2. Training & Mentoring

Some established companies have invested a significant amount of resources to build training materials for new engineers. Google, for example, has compiled documents called codelabs that explain how core abstractions are used and why they exist, guides that compile the best practices for different programming languages, and design docs that explain the rationale and details behind major pieces of infrastructure. I joined Google’s Search Quality team right after graduating with my Master’s, and I soaked up an immense amount of material during my first six months. If you’re curious and motivated to learn, there’s often a huge library of knowledge available to you at the more established tech companies.

A smaller company won’t have the same volume of resources, but even a startup that knows the value of ramping up new hires as quickly as possible will invest in creating similar resources. For example, when I was at Quora, we wrote our own codelabs to help new hires learn key abstractions, and we assigned mentors to the new hires to ensure that they were ramping up effectively. And at Quip, where I work now, we’ve written copious product specs, design docs, best practice guides, and useful tidbits that we’ve written and shared within the company (using Quip of course). Both the quality and the volume of documented knowledge rivals the internal resources of companies many times larger than our 26-person team.

3. Team

“You’re the average of the five people you spend the most time with,” American entrepreneur Jim Rohn once said. The people you work with day-to-day have an incredibly large impact on your own learning rate. As you’re deciding where to work, it’s important therefore to get to know the people who you’ll be working with and to make sure that they’re people you can learn from.

Sometimes, knowing your team can be difficult at large companies. When I applied to work at Google back in 2005, for example, the company didn’t assign most new hires to teams until they had already accepted their job offers. With nearly ten thousand employees at the time, the variance in engineers’ technical ability and managers’ leadership ability was actually quite high. So unless you had pre-arranged to work for a particular team, you might have been assigned to a strong team or a subpar one depending on the luck of the draw. Moreover, the significant friction involved in switching teams at more established companies — the typical expectation is often that you’d stay on a team for at least six months to a year — makes the initial team assignment even more critical to your career growth and work happiness.

In contrast, at a smaller startup and to a lesser extent a mid-sized company, you’ve usually already met a significant fraction of the team that you’d be working with during your interviews. You can even look up their work history on Google and LinkedIn and do your own reference checks to make sure they’re great people to work with (there’s no reason why companies should be the only ones doing this). As a result, you can have a much better sense of the caliber of your team.

4. Pace

Startups generally work at a much faster pace than established companies, and mid-sized companies tend to move at some pace in between. Pre-commit code reviews; weekly, biweekly, or even monthly release cycles; launch checklists; and formalized product approval meetings all create structure and help to minimize breakages at larger companies. But that structure often comes at the cost of development speed. At startups, continuous deployment (where every commit can go to production), post-commit code reviews, and lighter-weight approval processes aim to allow for quick iteration while providing for basic quality control.

Working at an early-stage startup can often mean working longer hours (I used to work 60-80 hour weeks at previous startups), but it doesn’t have to. The team at Treehouse works a 4-day, 32-hour week. 2 And at Quip, where many of my teammates have families and kids, we have a well-balanced work schedule where many people work a healthy 40-hour week.

5. Project Structure

At a larger company, you’re likely to focus on specific areas for longer periods of time with the same team of people. For example, at Google, I worked on query refinements my first year and search UI experiments during my second. This can be great if you have a specific interest and get hired for that area, or if you’re someone who wants to focus in-depth on particular areas. The projects at established companies also tend to be more structured, and you’ll have more guidance on what to do day-to-day from your tech lead, product manager, or manager.

Whether you’ll find the same depth of focus at a smaller company depends on the specific team structure there. At Ooyala, which grew from 30 to 70 employees while I was there, I spent a year as the tech lead of analytics and focused almost exclusively on analytics for that year. On the other hand, at both Quora and now Quip, team structure has been much more fluid — it hasn’t been uncommon to work on a project for a few weeks before moving to something else. Throughout the past few years, I’ve had opportunities to work on user growth, experiment frameworks, mobile, operations, recommendations, spam detection, moderation, analytics, and many more areas. The diversity of projects helped accelerate my own learning curve.

6. Autonomy & Influence

Given that there’s a much smaller team working on a much higher surface area of product features at a startup, you’ll end up wielding significantly more autonomy and influence than at a larger company. When I worked on UI experiments at Google, any visible change (even experimental ones) had to go through a weekly UI review with then-VP of Search Products, Marissa Mayer. At a startup, you’ll likely be making many decisions by yourself or with your immediate team.

This influence applies both at the product level (what to build or not to build and how to build it) and at the team level (how to do recruiting and interviews, what programming practices we want to encourage, how to organize team priorities, etc.). And that influence means that you’ll have a larger opportunity to make a personal impact on the product and on the team, which in turn can drive your motivation to learn on the job. It’s much harder to exert nearly as much influence at a more established company like Google since many practices have already been firmly established.

7. Scale

While it may be more difficult to exert influence at more established companies, you get to make a big impact on the world through their much larger scale. Google serves billions of queries and crunches petabytes of data per day. 3 Facebook attracts over 1.3 billion monthly active users. 4 Netflix accounts for over a third of all US internet traffic. 5 If problems involving vast amounts of data and traffic excite you, it’s certainly easier to find opportunities to work on them at more established companies.

At smaller companies, you’ll probably find opportunities to spin up machines on Amazon Web Services or to run data analyses using Elastic Map Reduce, but it’ll be at a scale that’s orders of magnitude smaller. That said, you oftentimes don’t need to be operating on a scale of billions to feel that you’re making a big difference. How important the numerical scale matters to your learning depends on its motivational value for you and whether the types of problems you want to solve require that much data. For a domain like machine learning, for example, you need some amount of scale to build effective models.

8. Self-Reliance

The ability to dive into and modify codebases you don’t know and the foresight to build tools to help yourself iterate more quickly will get you really far in a startup. At larger companies, you can count on there being specialist teams to configure databases to run faster, fix compiler bugs, create build tools, and monitor production services. At a startup, you might be responsible for figuring out those tasks yourself. You might still consult with the right third-party experts when necessary for help, but the responsibility ultimately falls on you.

Would that level of independence accelerate or hurt your learning curve? It ultimately depends on the type of learner you are — do you thrive on being more self-directed or do you prefer more guidance?

9. Risk of Failure

At a startup, you’ll likely be taking a pay cut in return for more equity, but if you’re joining a post-series A companies, there’s generally no risk that you’ll be living out of an office apartment or resorting to eat ramen. Moreover, if you’re in Silicon Valley and you’re a good engineer, demand for engineering hires is so high that it’s really not too hard to find another job if necessary. The bigger risk is that the startup doesn’t grow and ends up going nowhere, and you don’t have sufficient influence to materially affect the outcome. That type of risk, however, isn’t isolated to startups. At an established company, if you’re working on a new initiative (or even a new feature), there’s a similar risk that the project you’re working on might get canned. Many projects that I saw during my time at Google never launched after months or years of work.

Failures can be learning opportunities, insofar as you played a role in bringing about that outcome and can therefore change your behavior to affect the results next time. The learning is more limited, however, when failure follows from circumstances outside your circle of influence. You’ll learn more when you can take a larger ownership in the outcome.

10. Networking

Connecting with new people is a great way to open your mind to new ways of thinking as well as to learn more about the exciting things that are going on around you. Strengthening your network and your relationships also helps you find new and serendipitous opportunities in the future.

Working at a startup or mid-sized company predisposes you slightly to do more networking, mainly because the problems that small companies tackle are generally hard, and they’re willing to invest time to help each other succeed. That said, there’s nothing stopping you from networking with other people even if you worked at a more established company. Particularly if you’re working at a technology hub like Silicon Valley, there are ample networking events (startup parties, barbecues, dinners, hackathons, tech talks, etc.) where you can meet other people who might share the same interests as you. You might even bump into other people working in technology just by working out of popular cafes.


None of these dimensions is binary, and you’ll find each dimension in varying degrees at each company. They all, however, contribute to your learning. And if you optimize for learning, then no matter how things turn out, you’ll at least be better equipped for whatever opportunity you embark on next.

Posted:

“A comprehensive tour of our industry's collective wisdom written with clarity.”

— Jack Heart, Engineering Manager at Asana

“Edmond managed to distill his decade of engineering experience into crystal-clear best practices.”

— Daniel Peng, Senior Staff Engineer at Google

“A comprehensive tour of our industry's collective wisdom written with clarity.”

— Jack Heart, Engineering Manager at Asana

“Edmond managed to distill his decade of engineering experience into crystal-clear best practices.”

— Daniel Peng, Senior Staff Engineer at Google

Grow Your Skills Beyond the Book

Listen to podcast interviews with top software engineers and watch master-level videos of techniques previously taught only in workshops and seminars.

Leave a Comment