Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save JohnReedLOL/c21ce8d122e4f5538a47971bf93ae59b to your computer and use it in GitHub Desktop.
Save JohnReedLOL/c21ce8d122e4f5538a47971bf93ae59b to your computer and use it in GitHub Desktop.
Advice as a former Amazon software engineer
There are a lot of CS majors who aspire to work for the FAANG/MAMAA companies the same way some high schoolers aspire to get into Ivy League universities. As a former Amazon engineer who worked on the AWS Virtual Private Cloud service back in 2017-2018, let me explain to you what is wrong with that line of thinking.
The first thing you need to keep in mind about any real job is that work is normally exploitative, and big tech jobs are no exception. They give great starting salaries compared to other junior developer positions, sure, but there's a catch. They lose money on you during your first year working there with no experience with the expectation that they will make that money back from your labor later on when you know what you're doing there. Big tech companies like Amazon and Facebook often use their own, internal, company-specific tools that aren't used at other companies. For example, Facebook created and uses the Hack programming language that nobody else uses (it started as an offshoot of PHP with types added and became its own seperate programming language sort of like how C++ started as C with classes and then became its own seperate thing). Amazon's core services run on Amazon's unique internal deployment engine called [Apollo, which you can read about here](https://www.allthingsdistributed.com/2014/11/apollo-amazon-deployment-engine.html) and are built by Amazon's unique internal build system, [Brazil](https://twitter.com/GergelyOrosz/status/1568190805948473344?s=20). Most companies put their applications that run on servers in containers like Docker, deploy/scale their containers with say Kubernetes, and can use the AWS Elastic Container Service (ECS) that handles the deployment and scaling of your containerized apps automatically. For building, they may use a common, open source build system like Maven for Java, sbt (Scala Build Tool) for Scala, or whatever build system your programming language normally uses. The problem with only using and mastering tools that are only used by one specific employer like say Facebook or Amazon is that they don't teach you what is commonly used outside of that company, so what you were taught isn't as readily transferable to another employer if you get fired or choose to leave. Essentially, there is some "employer lock in". You may look around at the facilities at say Amazon or Google and go "golly, gee, there's the Super Smash Bros videogame in the lunch room as well as games and free food, wow", but that stuff isn't just there to make you happy, it's part of the "employer lock in" to keep you from leaving. Once you're locked in and are acquainted with their tools and processes and stuff, they're making profit off of you. If you instead worked at a "regular" company using "regular" commonly used software tools like say (on the backend) the ASP.NET Core framework if you're coding in C# or Spring Boot for Java Spring, or perhaps React if you're doing frontend JavaScript development, you will have skills that you are already deeply familiar with that you can immediately transfer over to another company. At Amazon the backend was in Java which is a common programming language, sure, but they used their own unique custom internal framework called [CORAL framework](https://www.teamblind.com/post/Why-amazon-uses-CORAL-framework-and-not-spring-boot-OPgpbvqu) which I think had some Java Spring in it but was a totally custom thing, not the usual stuff that's used at other companies with Java backends. Also, unlike with common open source frameworks and tools, there are no books on say CORAL Framework or the Hack language that you can buy on Amazon and read before bed the way there is for say Java Spring or Docker or whatever (which is an issue for me personally because I learn by reading technical books).
When the money supply shrinks or a recession happens causing layoffs, or your performance isn't great, you can get fired, and when that happens you want to be able to find another job quickly and be useful at that job. Sure, having "Amazon" at the top of your resume gets the attention of recruiters from India on LinkedIn, but once you get past that stage you have to actually demonstrate your usefulness to prospective employers on their particular system. I've had prospective employers tell me, as part of their interview/hiring process, "build a JSON API that can be used to play a simple card game" or something like that, where the deck of cards is represented as an array of integers. I can't build that HTTP REST API with Amazon's CORAL Framework because that framework doesn't exist outside of Amazon. Instead I have to learn some common, open source framework that is generally used, like maybe Java Spring Boot or Express on Node.js for backend JavaScript. And like if I work for Facebook and I've been exclusively programming in the Hack programming language for 4 years and then all of a sudden I get fired because there's a recession, I can't do the coding interview at other companies in the Hack language, other company's coding test probably doesn't even support it. I have to learn and use something more common that other people and companies know, use, and support.
So definitely keep that in mind and have a second/backup tech stack and skill set handy with demo projects that use it in case you ever get fired and need to find another employer outside of the FAANG/MAMAA companies. Ultimately a job is just an exchange of your time for money and an employer is just a source of money. Some people embrace the idea of living to work, but really you should be working to live. Before you accept an offer, establish how many hours a week you will be working so you can have a life outside of work. Don't make your employer think that putting in Herculean (like Hercules) effort is the norm, causing you to get burnt out in the long run. First and foremost, watch out for yourself. Amazon is just another company, and they will put their customers, their shareholders, and their leadership before you, their worker.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment