As an Engineer, Should I Work at a Big Company or a Startup?

Dhinesh Dharman
The Startup
Published in
6 min readJul 18, 2020

--

I get this question a lot — from candidates in interviews, from folks I mentor and from budding new engineers. So I am writing this down so I can refer back to this when I need to. My perspective is heavily shaped by my own personal experiences of working at a big company and a startup. If your experiences differ from mine, you should write about it :)

I’ll start with a heavily biased take which may seem like a non-answer:

Every engineer should work at a big company AND a startup early in their career.

(There are some caveats to this where there maybe some special teams at big companies which operate more like startups. So, in those cases you can technically get that experience in a “big company”)

Why do I believe this?

Working at a startup and a big company represent two extremes with respect to culture, processes, people etc. As an engineer, it is really important to develop a strong understanding of what works in a given environment and more importantly why it works. For example, here are some questions that engineers will need to answer over the course of their career:

Is this the right architecture?

How much time should we spend building feature X?

How much technical debt is acceptable?

Having a diverse set of experiences can shape your thought process, give you more tools, better understanding of trade-offs and overall help you get better at figuring out the right answer for the current situation. (The more senior you are, the more you are expected to deal with such open-ended questions)

Now, let’s try and understand some of the major differences between working at a big company and a startup as an engineer. (As with any attempt to generalize, there will always be exceptions that don’t fit the rule)

Here are some things that you can gain from big companies:

  1. You will learn solid fundamentals and best practices in software development. For a big company, mistakes can be very costly and hence there is a lot more focus on investing in developer education. This can mean good onboarding materials, high quality code reviews, access to a lot of senior engineers and plenty of talks around the company to share best practices. Just by spending a couple of years at a big company, the average developer can be expected to pick up a lot of things that will shape their approach to software development since they are starting from scratch.
  2. You will learn to think about scale in everything that you do. For an engineer fresh out of college/bootcamp, whose biggest project was building an app used by 10 people, it can be pretty intimidating to see the scale at which big companies operate. When you are surrounded by conversations like “Can this service handle 5000 requests per sec?”, you are suddenly operating in a different environment where you have to multiply big numbers to understand if something will break :) This gives engineers a great introduction on system constraints and building robust systems that operate within those constraints. Knowing how to handle scaling problems helps you build a better understanding of the systems and tools you work with and the mindset shift that happens when you need to dive deep is something that comes handy in all situations.
  3. You will learn the power of good abstractions. After I left a big company and moved to a smaller one, the things I missed the most were the things I took for granted every day. At the big company, we used to have a service that handles metrics and having seen how much harder it was to achieve similar level of monitoring at the smaller company, I realized the power of solving common problems using good abstractions. It does help that big companies have teams dedicated to solving common pain points that smaller companies just cannot afford to. Seeing good abstractions in action that operate at scale, you gain an appreciation for what makes them good, usable and performant. In addition, you also notice how good processes can be codified into such abstractions. For example, a build and deployment tool will allow you to configure what steps need to be performed in what order for every code push. (Having done manual deployments for several years, this was such a life-saver!)

Now, let’s talk about what startups can teach you:

  1. You will grow faster in an environment of uncertainty. Startups by definition don’t have a lot of certainty when it comes to their future — will we grow quickly enough? will our bets pay off ? will our existing customers stick around? will our competitors threaten our survival? This uncertainty permeates the whole culture and the engineering organization reflects this mindset in how they approach their day-to-day. For example, you as an engineer maybe building a new product with no idea how much usage this product will get and whether this will be around in 6 months. So, you will likely make some technical trade-offs to build and validate this product quickly without worrying about whether this will scale to all users over a longer time frame. There is a lot of judgement involved on what corners to cut and what constitutes a MVP (“Minimum Viable Product”). Getting comfortable with such levels of uncertainty, trying a lot of things in a short period of time and having a mindset of making/learning from mistakes along the way can accelerate the growth of engineers significantly faster than is possible in a bigger company.
  2. You will build more breadth than depth. In big companies, teams are structured to have a lot of focus and specialization is incredibly valuable. As a result, the team you end up on will have a huge impact on what things you end up learning. For example, I was on a team that managed a lot of data pipelines and backend workflows to monitor user actions on AWS. So for around 3 years, that was what being an engineer was all about in my mind. From the perspective of my team, I was doing what was expected of an engineer and doing it reasonably well. But it took some side projects and conversations with friends to realize that there was a lot that I was not exposed to. Now when I compare that to my current experience at a smaller company, I am exposed to a lot more things on a regular basis — technologies, problems (product and technical). To be clear, I am not an expert at any of the new things that I have come across but I know enough to be dangerous ;) Being a generalist has also helped me get a more complete understanding of all the things that an engineer can potentially do and I can now decide what I want to focus on :)
  3. You will pick up a lot of valuable non-engineering skills. Since startups are small, there is always more work to be done than the number of people available. It is also quite likely that there are certain things that need to be done but there are no people with the required skill sets available to do them. For example, product startups with less than 20 people typically don’t have a dedicated Product Manager and the responsibilities fall on some senior engineers who are interested to do that. So at startups there is always a lot of flexibility in what things engineers can take on and it is a lot less rigid compared to big companies which have more well-defined roles and responsibilities. Personally, I have picked up a lot of valuable skills like running meetings, keeping projects on track, learning to communicate effectively with non-engineers and dealing with ambiguity. This has also helped me get a taste of what it would be like if I decided to switch from engineering to a different role (say PM) and how much I would enjoy it :)

Hopefully, if you have finished reading this far you would have realized that there is no right or wrong answer when it comes to picking between a big company and a startup. You will learn a lot no matter where you go as long you have the right mindset. So, it comes down to a question of what areas you want to grow in right now and deciding whether a startup/big company is better equipped to support your goals. Good luck! :)

--

--