So I'm not a software engineer but robotics, and my masters degree was more of an "jack of all trades, master of none" in Robotics (but more towards software side of it)
I've now worked for about 3-4 years, so still a junior, but mostly at startups (and in my 3rd one).
Hitting my 30s last year and recently talking to a person slightly younger than me with similar background I got the sense of FOMO. this person had a similar degree and first job out of college at an (now failed) startup, but just recently landed a SDE job at Amazon.
As I haven't really worked at big companies, I've always had this nascent feeling that I never really learned "the right way" to do things. I often feel like a "patchwork engineer", learning how things work only sufficiently to make things work in a smaller scale without understanding important big project/organization principles. (or maintaining stuff)
How much of this is valid, and how much is just the misconception "the grass is greener" at big companies? Is it valuable to try to apply to big companies to get a good foundation in "the right way" to do things? I feel like I've also cornered myself with my resume / experience by only working at startups, and might not even be a lucrative candidate for larger organizations. (30s crisis not withstanding)
Any insight is much appreciated!
When it comes to big companies, you'll have to deal with many of the same problems, but at a much larger scale and with many more stakeholders involved. Your big picture startup experience can help here (similarly, your big co experience can help you scale startups). Big companies can pay more and offer better benefits. At senior level especially, that pay difference can be significant.
Finally, regarding "the right way" to do things. At the few big companies I've been at, nothing is perfect and systems are so large that they've reached a level of complexity where few people have a solid end to end understanding of things. Rather than learning about how to build and scale systems, many people end up gaining very detailed knowledge about one particular aspect of such large systems.
Personally, I believe starting at a bigger company has many benefits, even though I would now never join one. Considering you never worked there, I don't think a short experience wouldn't be enlightening. Just to learn the rights and wrongs. Be vary about the teams you're joining, though. Sounds to me like you need to figure out first what kind of dynamic you're looking for.
At a bigger company, sure it can be a bureaucratic mess - but I have been much personally happier every time. I get more resources, better pay, and much better work/life balance.
I didn't realize how unhappy I was working at startups until I took a corporate job again and my wife made me promise not to do another startup until the kids are grown up.
It's a shock to go from this edge case will most likely never happen because we have at most 5 request per second to this edge case is happening every minute because we have 5000 requests per second. Your approach to monitoring, deploying, and writing software changes.
At the startup I set up Linux server instances on Google Cloud and Digital Ocean. I set up Apache web servers etc. I wrote Python REST APIs on the servers. I did Javascript web work on the servers. I also wrote code for an iOS app in XCode. I also wrote more than one Android app from scratch.
Now I work at a non-tech Fortune 100 company. I only do Android. 95% of the time I am working within one module. I also tend to work on similar features during a quarter and across quarters. How much coding I do can vary, but the amount I spend coding is less than the time I spend in meetings, or reading documentation another team wrote, or helping or asking for help from someone, or doing code review or handling the release process.
You're not necessarily going to learn "the right way" to do things, you're going to learn the large organization way to do things. You're better off at a small company with a good, experienced mentor than at a big company without one.
An example for a big company...HN is fairly simple, Reddit is a little more complex. Think of the notion of a post or reply or user on Reddit. Initially these concepts will be pretty simple, but as more features are added they become more complex. I can imagine what the internal data structure is at Reddit is of a post or a user. Not only is it probably very complex, I'm sure some of the data structure is vestigial, old stuff no longer used that was never cleaned up. Changes against these things are by teams, often tending toward the more junior, often on tight deadlines, and the codebase is an accumulation of many years of this. I don't know much about Reddit internally but it is an easy example to think about.
You're 30 years old, assuming you work for another 30 doing 1-2 years at 1 or 2 big corp isn't much.
I mean from my personal experience, it's really the team within the big corp that you work at that matters. The big corp can try to drive a cultural and larger goals but that the end of the day it's your manager and peers that has the most say in your work and happiness so if you're interviewing, I'd really focus on getting to know your peers, manager an if you get a chance, your manager's manager (director title, most likely)
I'd never say the experience at 1 startup would be the same as another - so why people are saying you'll have the same experience at 1 big corp compared to another, or even a team within the same big corp...is beyond me.
What you write reads like a typical ADHD Imposter Syndrom. Why do I bring ADHD? Because you are a jack of all trades[1], experience FOMO, work at startups, and are concerned with not doing things "the proper way". Been there, done that.
There is "Driven to Distraction" book by Hallowell & Ratay (https://www.amazon.com/Driven-Distraction-Revised-Recognizin...), which deals with ADHD in adults. This type of behavior is common. The crucial thing is to accept that one will never be (or should strive for) being a "typical [insert a job here]". So corporations and other well-specified jobs are usually (though not always) bad fits. And there is a lot of strength in that - startups, freelancing, consultants [2].
Furthermore, big companies push this narration that only "things at a scale" matter. I strongly disagree. All startups start from a small scale. And even in big companies, a lot of innovation comes from small, proof-of-concept projects.
[1] The complete phrase is "a jack of all trades is a master of none, but oftentimes better than a master of one".
[2] For me, school, studies, even Ph.D. were too standardized. Then I started to shine as a freelance consultant, and now I flourish as a founder. It is good to find one's niche!
My FOMO issue was wanting to work in one of the sexy Silicon Valley style tech companies, after having only worked in big enterprise non-tech companies for my entire career. Recently made the switch last year. In my case, the grass was indeed greener on the other side.
However you can also find small/medium companies that understand that they need to ship, but also understand how to properly run things. There is a much greater chance of that happening at a small/medium company than any big company.
I like the independence of working at a startup and the speed at which things get done. This is also a curse though, because it often feels like engineers are competing for who can own or take over a project first. Things are done quickly but also haphazardly; for example, I recently jumped on a project where the lead engineer whipped up the repository within a day and already added a Makefile that had a couple of completely broken commands due to a fundamental misunderstanding of the build process.
With larger companies, I liked that I can largely remain invisible if I want to. So long as I finish my JIRA tickets, I usually "sign off" early and leave my messenger on if I'm needed for any urgent matters. Usually the leaders aren't expecting me to go "above and beyond" like my current job often feels like. I fulfill my creative programming pursuits on my freetime, and I prefer it that way. Also, I do prefer designated PTO time as opposed to "unlimited PTO" like many startups now offer.
So right now I'm in favor of larger companies, but take this with a grain of salt because I've only been in the startup world for 6 months.
At a large corp, if you don't like the tooling, it sucks because changing it is akin to pushing against a mountain (doable but you will burn an insane amount of time and value doing so). At a startup, there's the instability and the nagging feeling that what you cobbled together could have been done better "if you just had more time."
It's a tradeoff between autonomy and institutionalization, and that really comes down to personal choice. Some of the best roles are where you can exercise your autonomy in a large organization (within bounds).
We’re bogged down in tech debt, legacy systems, endless migration projects, and worst of all, management chains on their way out being replaced by people managers. They’re in technical roles, bringing culture from legacy mega corps like IBM, or IT managers from cost center organizations who don’t give a shit about the product or customer experience.
My company’s corporate culture was unashamedly aggressive in doing big things, even if it meant burning people out.
Nowadays, teams working on critical projects are getting even more pressure than ever from incompetent people managers who don’t understand even the basics of what their team does.
And then you have entire fleets of teams who aren’t working on critical projects. They sort of just exist. Imagine a $400K cushy job where you write 10 lines of code in an entire quarter. Not just you, but your entire team just does random “investigations” every sprint. They ship nothing. It’s just a token job because a director or VP is focused elsewhere.
- Made a great company. Big deal, he's in his 30s.
- Cured cancer. Pfft. Einsted redefined relativity at 26.
- Booked a trip somewhere. Checking off yet another goal off of the bucketlist.
- Built a great body. Well he's just desperately trying to hold on to youth.
I mean it's not even 30 it's 3O. The O stands for Over.
Some things to look for include senior engineers who are happy to mentor (not teach or guide or instruct but to mentor), look for companies that are growing or making new products, and if all else fails look for a place with some sort of educational stipend you can spend going to industry conferences or what not.
Also, the grass is greener won't stop. Once you get to the megacorp you will wax poetic about your academia and startup days. You'll tell those fun stories to your coworkers because you stopped accumulating fun work stories when you joined megacorp. You'll occasionally think about going back to grad school, or joining a startup again; but, you'll remember you have an RSU vest in 2 months, better stick around at least for that, can't leave money on the table...
1) You should absolutely try both. You've already done some startups, so now would be a good time to try a big corp. They each have upsides and downsides, and it really depends on you as an individual as to which one you'll be happier at, as well as more successful at.
2) It's all about the people you work with and report to. Really, you should choose based on the team rather than the size of the company. If they are all smart, cool people you get along with, then you'll be fine even if it's a fucking bank (source: I work at a bank presently and it's great). On the other hand if they're incompetent, egotistical assholes, it's going to suck big time regardless of how many foozball tables or beer fridges the company has.
editing to add, at a big corp, a good manager should understand that their job is to insulate their reports from as much of the bullshit as possible. That's critical. You should be able to get a sense of this during the interview, even. If they're up front about the bullshit from the get go, that's a good sign. If they're actively trying to make you drink Kool-Aid... run.
Grass is always greener, so there is just a trade-off on both sides in terms of various vectors like money, culture, stakeholders, scope of work etc.
Now what I also always felt that in startups I just didn't learn things that I also needed to, to become a better PM.
For instance, in our $50m ARR company we ran production-driven development, no tests and very autonomous structure until the company hit around 100 employees and started shifting.
In the company that I joined - we have around 1000x microservices and my product touches around 25 squads that I need to get approval before we even ship a single change.
Is it bad? No, its just different. But the only way to know is to try it. I always thought startups are cooler but now I am humbled to admit that I was also missing learnings from BigCo's like management, structure, async writing of documentation etc. and I kind of enjoy it!
Larger companies can have better structure and mentoring available. They can also have more resources and work on more impactful problems. Public companies can have more liquid equity if that is part of the compensation.
Smaller companies can often provide opportunities with more customer impact earlier in your career at the cost of drinking from a firehose and with less resources available. Total comp wise, on average, startups will pay less because their equity is often illiquid and ultimately worthless, however the home runs can pay dramatically more than a large public company will.
I self identify as a roboticist and a generalist. Holistic systems thinking can be very valuable to a broad range of businesses in my experience. Keep learning the mental and mathematical models of your field and it is likely to payoff.
Your issue here is really tenure , there’s a lot of software engineering fields for which you won’t know anything after a year in the role.
Don't feel like you are missing out, you are only missing out on a bunch of headaches IMHO. I've only worked for smaller companies and I have no doubt I could swing a job at a larger place if I wanted, I regularly ignore recruiters from AWS and the like because I don't want to work in that type of environment. Do what you like and make sure you get paid well for it, past that don't worry about company size.
The small company gave me the confidence and experience to dig myself out of most situations and turned me into a "jack of all trades, master of none" (much like you describe yourself).
The medium company was a consulting firm so I got to work with other companies of varying sizes (including government organizations). Having worked multiple roles for a number of organizations, I gained the breadth but not depth. I was exposed to internal policies and workings of these organizations without having to actually switch jobs that many times.
When I joined the large company I brought with me the benefit and knowledge of having worked with multiple orgs, which is something that was lacking at the time for the teams I worked with. Having worked here a few years, I've gained invaluable knowledge I wouldn't have gotten at small firms. Being a large global organization I get to work with vastly different cultures and experiences, all of which is an overall benefit to me.
Having a variety of experience will make you well rounded. You will have positive and negative takeaways which you can apply in your future roles. And who knows, you may actually enjoy the large corporate life.
Is the grass greener at big companies? It entirely depends on what you are looking for and your personality. Is it valuable? Absolutely. Anyone who says otherwise is closing themselves off to invaluable experience.
With coarse grained detail, it's a fair characterization to say that big companies require more navigation of interpersonal politics and hierarchical structures within the company, but afford you the opportunity to work on (more often than not) bigger problems (but you may be a small part of that big problem). And on the other hand startups allow you more autonomy and the chance to work on a wider breadth of the product yourself.
I've been told more than a couple times in bigger company land to stay in my lane, while in startup world that more and more executive functioning is required of me.
Both are valuable and right now I'm in bigger company land, that is until I get the itch again ;) Bigger companies tend afford more work life balance and respect your time, but your millage will vary. If you plan on starting a family anytime soon then it might not be a bad idea to situate yourself at a big company for a while.
One key for finding fulfillment as a smaller contributor in a larger company is finding personal validation outside of work. If you find things are going too slow for your taste and this frustrates you, then realize it's by design; people have lives outside of work and would like to live them :)
Working remote is just as viable in either scenario for my case, but I'm less sure about yours since robotics can only be simulated up to a certain point before you need actual hardware, right?
The other major advantage of Big tech is typically financial, there is no guarantee that this will last indefinitely - but over the last 15 years the top tech firms have paid better than all other options by a wide margin. This isn't necessarily unique to big tech and could apply to any tech company considered a "top firm".
These trends will likely continue until tech firms paying top salaries either become too bloated to innovate and instead focus on building strange non-profitable vanity projects - or are outmatched by companies using lower cost engineers.
The main tradeoffs are
- Cash vs lotto tickets
- Breadth vs depth of experience
- Knowing everyone in the company vs being more anonymous
- Knowing more inner workings of the company vs being shielded from those details
- Having broader organizational support vs. doing/learning things for yourself
- Some will say work-life balance, but this varies wildly by company and team
> I never really learned "the right way"
Large companies often do things in very idiosyncratic ways that work for them. These approaches rarely directly translate to startups. Different scale, different tools, and when you're massive, the tools aren't commoditized.
The other part of this is your experience. There's a difference between hacking something together that works and intentionally designing something that works. Some of this comes with experience, some with focus and diligence, but it's orthogonal to the size of the company.
> I feel like I've also cornered myself with my resume / experience by only working at startups, and might not even be a lucrative candidate for larger organizations.
Big companies will happily consider you for mid-level IC roles. They want good engineers. I'd argue it's a little harder to go from a big company to a startup because it's easy to get pigeonholed in a particular role, and you're less likely to be familiar with standard tools everyone else uses. Big companies don't have this problem because no one they're interviewing is familiar with their in-house toolset.
That being said, you have to understand that your new job isn't at a "Big company", your new job is at Amazon: a completely different beast. I live in the greater Seattle area and I can tell you there are two types of Amazon workers doing software development - those who quietly work their jobs and never talk to non-Amazon folks about it one way or the other (e.g. "my Amazon job is great! You should work here!" or "My Amazon job is hell"), or people who are Ex-Amazon who have NOTHING good to say about working there (except for the fact that they left the job). Be careful.
Then I joined one and had an eye opening experience - it's not true at all. They might have better tooling (although that's not even always the case), and they might have better established ways to do things, but the engineers aren't any better than at a startup and they deal with the same problems as you.
A lot of work at large corps is "patchworking", and a lot of code is pretty awful and won't teach you "the right way" to do anything. Like anywhere else, there's a lot of v1 code that doesn't get substantially improved after it's shipped because the team has moved on to something else. There can be a lot of churn where code gets moved between teams, rewritten and discarded as priorities change and people come and go. Only a minority of core systems get the benefit of being iterated on and evolved over a long period of time.
I believe that the best way to learn how to do things right is to make mistakes yourself and learn from them. Work on a single project long enough so that you don't just write the v1, but also the v2 and v3 and v4 that make you see the mistakes you previously made and let you figure out how to fix them.
Startups can be a good place to do that, because unlike in a bigger place, you might actually be given the scope and responsibility to do that even as a junior engineer.
You are right that maintaining things is a good way to learn, but you could equally spend 3 years moving on from one new micro service to another as the roadmap priorities change every 6 months, with very little opportunity to spend some time with your own code and learn from it.
If you've worked at 3 different places in 3 years, you might not have seen the benefits yet, but if you try to stay and work on something for long enough, you'll learn a ton.
Since I left big corps 20 years ago, I've spent almost all my time in startups. Most failed, but two were successfully, if not terribly profitably, sold. (As CTO or similar for all, I'm happy to say that the failures fell for business or founding team issues, not technical reasons - my teams always delivered the technology/product, often on impossible schedules and budgets!)
Yes, it's true that (unless your startup is wildly successful) you don't learn to scale things as much in a small company, but in reality, scaling is overrated, and many people spend way too much time foolishly trying to optimize for it. What startups DO teach you is to think about building great solutions for the product at hand. The lack of time and resources inherent even in well-funded startups (I've had the fortune to work in one of those) drives more expansive considerations of options and creative approaches, and a focus on the end goal rather than the process. Big companies simply cannot think this way, and I am very fortunate to have had a couple of my own startups under my belt before I was invited to join others. I think that proved that I had not been made utterly useless by my big-corp experience. (I'd also done a lot of R&D work in the big companies, which is as close to startup mentality as they can get.)
I could go on for quite a while, but suffice it to say, you're not really missing much, if anything (except miserable, bigoted big-corp Diversity, Inclusion, and Equity (DIE) training and policies that will never let you speak freely for fear of HR reprisals...) When I am asked to build teams, unless the client is a big-corp culture that only another bi-corp mentality person can survive in, I strongly prefer to draw from people with smaller company experience - they are usually considerably more capable across disciplines, much more creative, and have an MIH (Make It Happen) mentality that you never find in the big corps. In short, having done both, I consider big-corp experience to be more of a detriment (especially true for PhDs IMO), and startup experience to be invaluable for developing real teamwork, creativity, and the ability to make it real!
But then I need the money of a big corpo (read: FAANG pay-band) to one day have a financial independence and dream of creating my own startup where I can go work remotely at my cheap COL (cost of living) country and be near my families, solving real problems than just another dating/ecommerce/social media/investing/real estate eque app.
Yeah, a lot of the startups these days also focusing on those dating/ecommerce/social media/investing/real estate business, which I don't find any enjoyment in.
So, why not just work and slave away at big corpo earning FAANG pays.
They can be both product and consulting companies and you can learn tons, meet great people, and have a good career.
What you won't have is the startup lottery ticket or the super cush bigco salary/reputation.
Only you can decide if the tradeoffs are worth it, so if you have the desire, give it a try.
Do note that every workplace has its downsides/warts, so the key, in my experience, is finding a workplace where the downsides are acceptable.
Not all large co’s act as a monolith. Some allow smaller depts to run their own shop while having access to their resources. This could be bad in terms of learning ‘the right way’ but that’s what interviews are for - to ask them questions too!
You really want to care about the mission of the large co though.
If you find one you like, get in touch with their recruiters, show them your resume and ask point blank if it needs restructuring to make it through their weedout filters. You bring things to the table that don’t always fit in the boxes.
Also widen the scope in terms of how senior you want to go if the co promotes well from within.
Good luck!
Compared to my peers/friends in larger companies, I've always had far less politics/BS to deal with at work. I would not say its non-existent; sometimes all it takes is one bad hire, and the smaller the startup the more outsized the impact of the bad apple. So in that sense, impact is a double-edged sword.
On the other hand, I've been able to build a super-generalist profile because of the startups I've worked at. Backend-engineering, frond-end stuff, DevOps, hands-on data-center experience, automated QA, SRE, growth hacking; you name it and I've probably checked that box off at some point in the last 10 years; mostly because I've been able to cultivate good relationships within the company to be able to move around different roles. This would be impossible in a large company, even with a lot of personal connections. A few jumps are possible, but not the kind I'm describing above.
The smaller size of startups also means that you have fewer people between yourself and key decision-makers. I've had the good fortune of being able to work directly with/report to CXOs for over half a decade, which IMO provides a lot more exposure to understanding how a business operates. I would not trade that for working with mid-tier management in most large companies.
With regards to not being appealing to large companies, I'd say that is not true. I've known folks who've moved from startups to FAANG companies in their mid-40s without any issues. The experience always counts. You may lack some of the specialization, but you can always compensate for that with breadth of experience.
Ultimately it boils down to what you want to accomplish. If your goal is to eventually start your own business, working at startups is a great way to get the requisite experience. It is definitely not a walk in the park though. Being able to work with little to no direction, constantly changing goal posts, and the lack of any structure does take its toll on you slowly, but surely. However, I can say from personal experience that I don't regret it one bit.
Working at a big company is much easier, but it's harder to get things done. You'll have at least 10 hours a week in meetings. The CEO or a guest speaker will deliver a Ted Talk speech once every 3 months.
Try getting a server deployed for an internal side project. Even if everyone wants it, your wading though miles of redtape.
Startups are more fun, but less stable. The stress is intense. I'm in my 30s and unless I personally know the founders, I'm never working in a startup again. The Company might just randomly shut down !
Here’s my ranking
1) working at YOUR OWN startup/for yourself
2) working at big co
3) working at a startup owned by someone else
Usually in these companies roles aren’t as formally defined, so you can grow in skills and experience even if the company is never going to be a unicorn or re-define the future of ‘XYZ’.
If you're a hiring manager in a large company, what are the pros and cons you see about hiring engineers who have only worked in startups?
Vice versa, if you're a hiring manager in a startup, what are the cons and pros you see about hiring engineers who have only worked in Fortune 500 companies?
If none of your startup peers or founders ever had any corporate experience - while it might be good (big corp didn't "ruin" them yet) it also might mean they will repeat mistakes or have to learn from scratch things that become common knowledge after a few years. How to run effective meetings, business writing, hiring practices, UX, scalable infrastructure and architecture. At AWS, there isn't a distributed systems concept that you can't just find someone who literally wrote the book on it and you can just ping them on slack.
So tl;dr - it all depends, I recommend diversifying your career, and just trying it out. I think that a mix of startups and big companies can only do good to your career.
The company burned through $7 mills, and went under in under a year. Such a mess. I will never ever work for a startup again.
If I owned that company, I would've already recouped the money many times over.