I’m sure every software engineer with a long career had this dilemma: Should I join a startup or a big corporation?
It’s a good question since your professional development, the working conditions, life-work balance, and career development will be very different according to the choice you make.
There are many differences between a small company and a big company and it’s important to understand them in order to make the right decision for you.
The Differences between a Startup and a Big Company
Order vs Chaos
As the title implies a big company is Order and the small startup is Chaos.
In a big company, everything will be organized. All tasks are divided among the team members. Then, those are organized into sprints. Everything is written into work items and Gantt charts. There is coordination between all the various teams to make sure everyone does their part on time.
Now a small startup is a whole different story. Not much is planned ahead except for vague understandings and the immediate future. Your task will be the most urgent thing that needs to be done next. The Requirement might be defined in a conversation between you and the CTO and written nowhere. Your tasks might change mid-way because the startup moved in a different direction, lost an investment or something else entirely.
I describe a small startup here. As the startup grows it becomes more organized. A startup with 5 employees doesn’t function as a startup with 50. Whereas huge Startups like Uber functions like a big enterprise.
Achieving order comes with a price. There are a lot of meetings during the day, you will be managed closely, and there’s a constant emphasis on keeping the deadlines.
What’s expected of you
In a big company, you will usually work in a dedicated team and receive tasks according to your skillset.
Not so in a small startup. You might be hired as a back-end developer but it’s more than likely that you will have also to do DevOps tasks, QA, front-end development, project management or UI/UX.
For the same reasons, it’s very likely you will have to manage yourself. Unlike a big company, where your manager has a single responsibility (to manage), in a startup, your manager probably has to code a lot, do DevOps, do QA, do project management, do UI/UX and maybe talk to investors (on account of him also being the Founder).
Both small and big companies offer a lot of opportunities for professional development, albeit somewhat different.
A startup will offer:
- Working with cutting-edge technologies
- Working hands-on with many different technologies
- Working in different roles and on different layers of your product
- Working with some very smart people, but very few in number (maybe just the one) and they might not have too much time to teach you.
- Learning the discipline to manage yourself
- Learn to code without relying on the help of others (in a startup there’s usually no one to help you besides the internet)
- The opportunity to make important architecture decisions yourself.
- Watching a company change and grow fast (with some luck)
A big company will offer:
- Learning how a big organization should function (or shouldn’t)
- Learning from many developers
- Learning about your capabilities in comparison to others
- Working with a mature code base
- Getting around and troubleshooting a big project is a learned skill
- Learn the pros and cons of the mature working architecture
- Learning how common software problems were solved in your company
- A working DevOps pipeline
- Integration between teams (Dev, Operations, QA, Project, Product, Customer support)
Growth in career
Whether you want to climb the managerial ladder or become a senior developer/architect the growth will be different according to your company’s type.
In a small startup, you will usually grow as the startup grows (or doesn’t grow). So if you were the 3rd employee and in two years the company grows up to 50 employees then you have a very good chance of becoming a top manager. I’d say it’s less merit and more chance.
A big company doesn’t grow as fast as a startup, but you have a lot more room to grow within the company. As opposed to a startup, your advancement is more merit than chance – the best man for the job will get the position.
The best way to become a Chief-something or a VP-something is with a startup. Join in an early stage and grow with the company. If your startup succeeds, you have a very decent chance to manage everyone who joined after you. After your role is CTO or VP of Development for a few years, you can apply to similar positions in other companies.
Here’s an example from my personal experience: I worked in a 500 employee company where the CEO was the first employee to join the company (a startup at the time) as a software developer.
Salary and life-work balance
The salaries in big corporations are usually very nice. In addition, you will get yearly bonuses, expensive gifts, grand company events, access to the Gym, great free food and so on.
Start-ups can’t afford to pay you as much, won’t have Gym access and won’t have fancy offices. You will get compensated however with Options.
Options, in a nutshell, give you the option to buy company stock at a fixed price after an IPO or a startup Exit (acquisition by another company). This means that when the company is sold you can make a lot of money. For example, when WhatsApp was acquired by Facebook the 55 employees got a $3 billion divided between them, with early employees having as much as $190 million each.
The WhatsApp deal doesn’t represent the usual case of things though. Most likely your startup will not be acquired or go public, and even if it does you can mostly expect to buy a nice car rather than becoming a millionaire.
Working hours are usually better in a big company. Startups will often require long working hours, waking up in the middle of the night to restart the crashed server and working on weekends for an important release.
This is probably the most important section of the article and should be the biggest consideration. Consider what is most significant for you:
In a Startup, you will work on a brand new product with innovative technologies. You will spend much more time writing code and scratching your head on challenging problems. The product is often very exciting world-changing technology.
You will have a lot of impact on the company.
You will also have a crappy work-station, work long hours and compensation won’t be great.
In a big Enterprise, it’s very different. You will be most likely be maintaining and adding to an existing product. That means more Bugs and fewer Features. That also means much less coding and more time reading existing code. The daily schedule (programmer’s work breakdown) will include more meetings and interacting with other employees, so even less writing code.
Everything moves slowly in a big company due to bureaucracy and office politics.
You will have little impact on the company.
On the upside, you will have better compensation, fancy offices, and a lot of perks (depending on the company).
Don’t get me wrong though, I don’t mean to say that working in a big company is less interesting. Working on a big code base with a complicated architecture can be very challenging, especially when you need to redesign the code or add system-wide changes. You will also be working on a product with existing customers where your changes will have real-world impact.
In addition, in a big company your manager and HR are very involved, so you will get lots of attention and feedback (both good and bad). This includes healthy competition with other programmers and an annual performance review (with a yearly bonus depending on the result).
There are many factors for a decision here and everyone has different circumstances and different offers on the table.
I personally think that a software engineer should work in at least one big company and in at least one startup. Each type of company will give you a different set of skills and a different understanding of the software world.
After both sets of experiences, you can understand why things are done the way they are in your company, how can they be improved and what needs to happen next. You will be able to promote yourself better in whatever career path you choose. Even more importantly, you will understand better what’s best for you.
Here’s some more opinions on this matter:
Get a free chapter from my new book: Practical Debugging for .NET Developers
Chapter 1: Tools