A question, which everyone has asked themselves at least once if not 100s of times. A question for which many people have very strong opinions! Many pick an answer and stick to it like religion all their lives, without even trying the other side. Is there a definitive answer? I have a strong personal opinion, which I'd like to share along with why.
I've worked as a software engineer at big and small companies both. I've also worked in a few industries as well, ranging from Finance to AdTech, MarTech, EdTech to FinTech. From these, I've experienced both big and small organizations in Finance and AdTech in an alternating fashion. Hence, I feel my opinion is based on a lot of personal experience.
And the answer is, both! Experience both, big and small while starting with a big company. I'll start by explaining why a big company first and then go into details about what I learned from all the big and small companies I've worked for, hoping that you can see what each one taught me and how valuable it was.
But first, I just want to lay out the pros and cons of big and small companies as I experienced them working as a software engineer.
Pros & Cons of Big vs Small Companies
Why Start with a Big Company?
As observed from the pros and cons, to maximize your learning (and hence your career) you need to learn from both. But why would I recommend starting from a big company?
As you're stating out after collage as a software engineer, most of your knowledge is theoretical and your work ethic is academic. You're a huge sponge, ready to absorb any new knowledge. At this point, in my personal opinion, starting with a big company is a good idea for the following reason.
- Pro: Well structured, lots of support with growth and mentorship - I think this is extremely important when you're starting out! It's a much better way to transition from an academic to a professional way of working. The tools and perspective it gives you are extremely valuable even if you don't follow them exactly later on your career. They give you structure and a way of thinking.
- You learn how the big companies do it! - Small companies / startups are always on a trajectory of growth. I've rarely seen one which is content in staying small, especially in tech! They may go from a head count to 10 to a 100 within a year or two. Successful ones go to 10s of thousands! Eventually, they will face the same issues as the big companies and your knowledge & experience from a big company will prove to be extremely valuable there. You will have a much better idea of what to do and equally, what NOT to do! You can actually help build a better big.
- Gives you brand recognition - If you do intend to try both, as a software engineer, getting your career stamped with a reputable big company makes you very attractive for startups! In my personal experience, after working for Google, I basically had a free reign on which startup I choose to work with!
Fun Story: I was officially never an engineer at Google (topic for another post). No one has ever cared to look, they just assume, read my LinkedIn profile! They just look at "Google" and that's enough!
What I've Learnt from Big & Small Companies
Here is what I've learned from each company I've worked with and how the experiences flow into each other. I will leave it for you to decide if this was a good choice or not. Personally, I think it worked out really well.
Here is my experience in chronological sequence.
Big Investment Bank (~68k employees)
- Learnt how to do professional, scalable Java development for a trading system running across 4 regions (New York, London, Tokyo, Singapore) in the world!
- Lucky enough to be part of a team writing a new trading system from scratch. Learnt how professional software is designed, modeled and developed to do thousands of transactions per second, spanning billions of dollars.
- One of my projects, I had to make sure the precision of calculations and communications was 7 decimal places across the whole system.
- This was my first job in the US, a great way to learn about benefits, 401k, retirement planning, investment etc
Small Hedge Fund (~100 employees)
- Place where I fell in love with Python!
- Place where I learned to work professionally as a software engineer on Windows! Once you appreciate the Windows way, you can be just as productive as on Linux / MacOS. I once had to compile a 64-bit open source SQL Server driver for Python to run on Windows. I Did it using pure Windows tooling! No VMs, no Cygwin or Linux/Unix tools compiled for Windows. Amazing experience!
- Got a chance to work directly with Traders, Operations & Accounting folks.
- Got a chance to make a HUGE impact on the firm when they let me write their trade reconciliation system from scratch. It was one of the things shown off to potential investors to show how much attention we pay on accountability
- Interact often with CEO, CFO etc
- More than doubled my take home salary in 3 years!
BIG Tech Giant (~140k employees)
- Deep dive into the softer side of software engineering. Worked directly with many of their largest advertising customers on a day-to-day basis. Truly understood what sales and marketing departments do.
- No better place to learn how scalable engineering is done! A Truly unique lesson, which can't be found in text books and universities.
- Probably the best organization I've worked for in terms of HR and taking care of humans in a huge organization. In my later roles as an engineering leader, I've simply been emulating my two favorite managers from here and simply by doing that, I get a leg up on any other managers in the startups I later worked for.
Medium Startup (~350 employees)
- Place where I fell in love with and married Go (GoLang)!
- Place which let me try engineering leadership opportunities! By the end, I was managing 8 junior software engineers. It would have taken me like 3-4 years more in my previous big company where I would be managing these many people!
- I could have influence on the culture and practices of the engineering org.
- Since the engineers did a lot of DevOps themselves, learnt a lot about AWS, Google Cloud Platform and Kubernetes. These skill would prove to be valuable in later startups!
2 Small Startups back to back (~15 employees)
- Got the opportunity to create an engineering org from scratch! Learn about hiring, team structure, management & setting up operational processes.
- Write systems from scratch! Every software engineer loves this opportunity!
- Learnt how to design hosting infrastructure from scratch.
- Learnt a lot about starting and building a business and how you pitch it to investors.
- Learnt a lot about modern marketing strategies and how you can use that to drive growth.
All of these experiences have made me a very well rounded engineering leader. I am now able to apply my skills to both, big and small organizations. I'm back at a big bank again, just started 1.5 month ago so let's see how that goes!
Last but not least, don't be afraid to try various things. We soul search in our personal lives, why not try it in our professional lives as well! Nothing will be the last choice you ever make!