I make it a habit to never respond directly on The Orange Site, but a recent post there caught my attention and I wanted to respond to the poor guy. He said that he was on his third startup since getting out of university, but he'd never worked at "a big company" and feared that he'd somehow made it to 30 (OMG!) without ever learning "the right way to do something."

So here's the scoop: While I've never been in a FAANG, I have been at four middling-large corporations, the ones with "real" HR personnel nicked from Microsoft or Amazon or Google and "real" programmers lured away from Netflix and Apple: AOL, F5 Networks, Isilon/EMC, and Splunk. I've also been at a half-dozen startups, and here's the basic truth:

There is no right way.

Every company, hell, every team, has to learn on their own how to move forward in their environment. This world changes fast when it comes to management and when it comes to deployment. In the past twenty years, on the front end I went from raw Javascript, to Prototype, jQuery, Backbone, React, and now NextJS, learning a new "how you do the front-end" framework every four years. On the back, I went from C to Perl, Python, Node, and now Go.

The only skill that hasn't changed in all that time is SQL. It's gotten richer and faster, but it's still pretty much SQL.

And every software project is just a bunch of people working together, trying to get the product out the door. Some things are better: TDD, Linters, and IDEs are so much more effective now, the languages and idioms are more powerful.

There are some things you'll find at a bigger company. First, you'll find faddism. "We have to do microservices!" "I'm imposing completely artificial requirements on this project because I read about it in a blog entry on Forbes!" "Why aren't we running this thing on Kubernetes?"

"We're not Google-scale" is not a good answer. Management doesn't want to hear it. Every project has to be distributed, off-the-shelf, and self-administering, and apparently big companies are willing to pay for that. It just is.

Along with that, you'll find bureaucracy. There will be long sessions of sitting around listening to an HR person explain policy to you: health & safety policy, cybersecurity policy, and if it's a multinational corporation you, software developer writing QA tooling, will spend an hour learning why you shouldn't bribe a government official in Guatemala. You'll have to sign forms in triplicate asserting you won't misuse or damage the VPN you need to access the company's source code, which will be hosted on Github anyway, and you'll have to install both Okta Authenticator & Google Authenticator on your phone, and every morning you'll perform the authorization dance of giving your name, your at-least-sixteen-chars-with-other-silly-rules password, typing in the TOTP authentication number and then telling Okta Authenticator "Yes, that was me" before being allowed to do anything.

And finally, you're unlikely to be doing anything fun. At a BigCorp, most developers spend their days toiling away at the plumbing, implementing some new pipeline or moving the login DIV three pixels to the left or something. You'll be working off a queue, and it'll be a few years before you have a reputation, voice, and title needed to be able to influence development policy at all.

You'll never, ever have the reputation, voice and title to influence company policy about how to treat customers, ever. Just accept that.

Unless you're a high-level, we-had-to-have-you hire, the only reason to go through this is simple: money. BigCorps pay insanely well. The BigCorps routinely paid me north of $200K per year, plus decent health insurance.

Most managers at BigCorps are pretty good. They've been through the program, they mean well, and they usually retain many of the tools they were given during their MBA courses.

Startups don't have the money. What they have instead is a chance to make the world a better place; to influence the decisions on deployment and process; and a lot less bureaucracy and cruft between you and the work of shipping. Managers at startups are a complete crapshoot; I've had a few terrible ones just because they got where they were because they knew the founders and promised they understood the project, but they weren't people-persons and managing the small team of wild-eyes greenfielders eager to "make a difference" or "IPO and cash out" isn't in their skillset.

But I've also had some great ones who trusted me with the project, and some of them hit big and some of them hit small and one crashed and burned so spectacularly the CEO fled the country.

But they were all a hell of a lot more fun. You get a voice immediately about customer needs. My last startup, I said, "I'll work for you, but one of my conditions is simple: no dark patterns, ever." The founder agreed and has been true to his word on that.

So that's it. If you want stability, reliability, and a ton of money, go work at a BigCorp. If you want excitement, real responsibility, and a chance to either save the world or cash out with a million bucks, go work at a startup.