One of the most important decisions you can make is what type of company to work for. The company you work for doesn’t just affect your work life, but also the stress (or pleasure) you derive from work, which will affect your personal life as well.
Before we get started, I want to caveat this that these types of decisions are extremely personal. Take everything that I’m saying and apply your own situation on top of it. What I recommend is based on my experience, and certain aspects of your lived experience may change how appealing certain things are for you. For example, I am someone who doesn’t mind moving myself and my family for work, but for others the place that they live is of paramount importance for them. These factors are different for everyone, and it is important to know what they are for you.
Company Size
One of the largest factors to consider is what size company you work for. Company size can impact everything from culture to how much you get paid.
Large Company
Large companies can be a great place to start your career and make a name for yourself. When you pick a large company, it boosts your long-term potential because your resume will gain a lot of credibility. For example, if my resume has Bob’s Software Emporium, regardless of the quality of that company, potential recruiters won’t know what to make of it (and most likely won’t take the time to look it up when they quickly skim resumes). Having a well-known and established name i.e., Apple, Bridgewater, or Boeing brings instant credibility.
In addition to long term credibility, there are some unique things you will learn at large companies that small companies rarely provide, and that’s working on large scale / impact projects. For example, how many places will you learn to work on an operating system used by most of the world’s population, or how to create services that are used by billions of people? That’s not to say small or medium-sized companies can’t run large services (think of companies like Slack), but you’ll have more opportunity to do so at a large company.
It can also be great to be at a company where you can change teams without losing career progress. At some large companies (i.e., Google) you don’t even need to reinterview to change teams / projects so this can be a great way to try out different areas.
Small Companies
One con at large cooperations can be that you get pigeon-holed into certain roles since you are a small cog in a big machine. If you work on a project at a big company, you may be a part of the “back-end team” or the “UI Team”. At a small company, there are not enough people to separate work in that way. You might build the front-end, the back-end, search functionality and the logging system. You can have a lot more impact and learn a lot more broadly applicable skills.
Another great advantage is that it’s easy to see the impact of what you work on more directly. When working at a large company, it can be hard to articulate how you contributed, and your personal additions can be lost. With smaller companies, your impact is obvious. That being said, size is different than company size, and you can certainly work on small projects in big companies and vice versa. However, odds are large companies will be working on big projects (or trying to scale out small projects).
One challenge with smaller companies is the risk of collapse. When economic turbulence hits small companies (or at least those with less money), they will be at more risk of shutting down. While big companies will still be subject to layoffs, they do tend to be a bit more resilient in tough times.
Another downside of a small company is if you are a talented developer, you can easily and quickly become the local expert. The issue with this is that you can quickly find yourself in a situation where you no longer have anyone to learn from. This can cause you to stagnate if you don’t have other sources of knowledge.
Medium Sized Companies
A medium-sized company can be the best of both worlds. Medium sized companies are big enough to have multiple types of projects and different teams but not so big that they are as constraining as large corporations.
The best of all worlds? Small team in a big company
You may be able to get the best of all worlds by working on a small team or incubator within a large company. At various points in my career at Microsoft, I’ve worked on teams that were structured to give more of a startup feeling. They were much more agile and purposefully shielded from the greater organization.
Even today working in Mojang within Microsoft, I often forget that I’m a part of a broader corporation. The one thing you must look out for in these situations is the commitment from the company to keep the autonomy of the team. Is this a place with a team with a history of being supported by the larger company (i.e., the Garage at Microsoft), or a team that started as a small scrappy start up but is planned to be integrated into the larger org once it matures (Microsoft Teams)? Make sure you have a good understanding of not just how the team is run today but also where it will be in the long term, and how you feel about that.
Technology vs non-Technology
People can often forget that there are software engineering jobs at non-tech companies that many people enjoy. One of the largest sectors out there is finance. (Side note, they often pay premiums for good software engineers!) Retail companies such as Walmart and Target also have large software teams to help with their apps and internal software.
If you have a passion for something outside of technology this can be a really great way to merge that passion with that work. For example, if you are big into exercise and personal fitness being a software engineer at Nike might be a great fit that gets you excited. On the other hand, one downside can be that the software is a means to an end and not the final product. In my time in finance, I found it frustrating that people did not care a lot about the quality / user experience of the software because it was mostly internally, and they could effectively train their employees to deal with software flaws. While I don’t think that decision was necessarily wrong, it was something that I struggled with and didn’t see myself being happy with long term.
Startup vs Proven Companies
Besides company size, another differentiating factor is startup vs. established company. Startups are fast paced, high risk, high reward environments. Your pay will often be lower, but you’ll often be granted stock or some form of ownership in the company, which could end up being very lucrative if the company survives and you can take advantage of being at the company at an early stage. If/when the startup goes public, your work pays off in spades when the stock value rises (Going public is not every startup’s goal, however). Because of the size of the company, you often get experiences and responsibilities that are incredibly rare at more established companies. Startups tend to be more intense experiences and are often filled with people who aren’t worried about work life balance, which may be a pro or con to you depending on your life stage.
There is a lot of risk at start-ups. Most startups fail, and unfortunately, not all of them fail fast. But keep in mind that failure doesn’t ruin your career, and depending on your ability to tolerate risk, the thrill of moving from one fast-paced start up to the next can be an awesome and unique experience.
All of that being said, some parts of startup life can be frustrating. For example, you may not have HR or IT departments, leaving you to fend for yourself to stay effective. The corporate environment can be a bit stifling and frustrating at times, but you are rewarded with stability and structure. Your stock may go up or down but it’s unlikely to disappear overnight. If you aren’t big on risk, more established companies are the way to go.
Public vs Private Company
The last dimension I’ll cover is public vs private company. A public company is one that has shares traded on the open market (i.e., New York Stock Exchange). Anybody can buy shares (become a part owner) of the company, and the company is ultimately responsible to shareholders. In exchange for the money the company makes from selling its shares, the investors expect the company to make business decisions that make the shares more valuable. Example of public companies are Google and Microsoft.
A private company is generally owned by a person, set of individuals, or employees. These companies are only responsible to their owners and if the owner wants to say, pivot the company from making software to making shoes, they can do that. Valve is an example of a private company. Though you might think that who owns the company isn’t relevant, it makes a big difference in how the company operates (think about Elon Musk and Twitter).
A public company will generally have a mission, but at the end of the day they will be mostly profit-focused because they have an obligation to shareholders. For example, in a troubled economy, a public company may lay off employees to support revenues so that shareholders are happy (even if it doesn’t make sense in the long term ). A private company may resist layoffs as long as the company can remain stable.
Public companies will often be more short-term focused (to make quarterly earnings numbers), take less risk, and be more measured in what they will invest in so as not to “waste money” and upset shareholders. Private companies will usually focus more on their mission, and how they can use the company to meet those goals. The downside of this is that you are reliant on having a competent CEO in a private company since there are no shareholders to keep them accountable.
There are so many dimensions to think about when choosing what company you want to work for. The key to remember is that there are no right or wrong companies and whatever you decide is important to you are personal choices. Your path is yours alone, and no one can choose for you.