posted: September 28, 2017
tl;dr: Startups are a great place to start a career...
I have been a part of five different startups, and have spent the vast majority of my career working at small to midsize technology companies of under 1,000 employees. I do have a couple of stints at larger technology firms with 5-digit employee headcount figures. Large companies are often the default “safe” choice for young technology professionals when choosing their first employer. Twenty years ago most technology grads wanted to join Microsoft or Cisco; today, I’m sure that Google and Amazon have applications from a large percentage of the classes of 2016 and 2017. As interesting as those companies are, I think startups are an even better place for new technology professionals to start their careers because of the amount and variety of learning experiences they offer.
Startups give everyone the opportunity to try different roles, as the needs of the business and the project change. A new developer may start off working on front end design tasks, then move into server-side code, then work on database issues, then work on authentication, then write some automated tests, then do some tooling, then work on operations issues. Everyone is much more likely to come directly into contact with customers because there are fewer people between the development team and the clients. Startups often operate with an “all hands on deck” mentality and a “go where the need is greatest” mindset: anyone with interest and a modicum of skill in the relevant area (plus a desire to learn more) can raise his/her hand and volunteer to take on a new task when the need arises.
Startups also offer the best opportunities to more quickly gain exposure to and experience with a broader range of different technologies. A startup is likely to be building an entire product with a small team of 5 to 20 people; at a large company, there may be hundreds of people working on a product that has a similar technology stack. With many more people on the project, there will be more narrow specialization by everyone, and there will be more domain experts who focus on certain pieces of the technology stack. A new person joining the team is going to find it harder to move around within the technology stack. The new person is likely to also focus on one particular narrow area for an extended period of time, running the risk of becoming “pigeon holed”.
When I was in college I did a co-op stint with a technology company that had several thousand engineers developing both software and hardware. One of the engineers in my row of cubicles was the “relay expert”. Over a period of years he had become the company’s expert on relays, a type of electronic component (basically, an electronically controlled switch). Every time a vendor of relays released a new model, he would pore over the specs, obtain some samples, do some testing, and ultimately make recommendations to other engineers as to which relay to use in the circuits they were designing. He had a stable job, and was respected within the ranks, but I couldn’t imagine myself spending four years in college only to embark upon a career as a relay expert, or as an expert in any one very narrow area of technology. I much prefer doing many different things, and startups provide the opportunity to do so.
Startups also provide an exposure to the “business” side of the business, for those with the interest. If you keep your eyes open, and talk with others in the company, you can learn a lot about how the business operates. As mentioned there’s a good chance of being directly in contact with customers at various times. Even as a developer you’ll see the sales process happening around you as the company tries to land new customers. In a startup you’ll have a personal relationship with the CEO, and will see how the company makes strategic decisions and attracts customers and investors. There’s a very good chance you’ll meet the board members of the company. You’re also likely to be involved in the hiring process, even for non-technical positions, at least when the company is small.
There are some downsides, compared to joining a large established technology company. Risk is commonly the one that’s cited, but even the largest companies falter, and while they are unlikely to completely shut down overnight, they do go through downsizings. A large company is going to have more experts around who can offer technical advice; but this is less of an issue in this era, when there is so much learning material available on the Internet, and when Google and StackOverflow can answer so many specific technical questions. A young developer joining a large company is likely to be part of an incoming “class”, which can provide an immediate peer group and a group of new friends; but for those who don’t need or want to be part of “the crowd” at work, this may not matter.
Startups have to innovate to succeed. Young startups won’t have a 10 year-old cash cow legacy product that needs maintenance and which new developers are assigned to before they get to work on something more cutting-edge. There’s a greater sense of accomplishment in a startup, because you’re part of a small team developing something that has a major impact on the company’s future success. The excitement level is higher, and the wins are more satisfying. All in all, startups are a great place to start.