10 learnings from 10 years at Amazon
This blog post talks about my learnings as a software engineer while working at a fast paced company like Amazon. These were critical to my continuous growth over the last decade.
I have been at Amazon for more than 10 years now. Reflecting back, I want to share my ten learnings during this tenure. I hope this will help you in your own career.
Impact
- Favorite Leadership principle — Amazon has a set of leadership principles that the company follows while deciding solutions for any given problem. If you ask me what is my favorite leadership principle (LP), I will say its ‘Bias for action’. I believe this principle leads you to uncover paths for raising the bar in any other LPs. When there is a customer issue and you jump in to help even when not on-call — customer obsession, when there is an issue with your failing tests in your team and you go and fix it instead of bypassing it in pipeline — Insist on highest standards, when you go out of your bounds to help someone in your team unblocking a feature launch — Deliver Results and Ownership.
- Never think it’s not my job — In my last ten years, I have wore hats of PM, TPM, QA, Security Engineer, Dev Ops, (almost) SDM and of course SDE. This has allowed me to have a holistic view of things when time comes to build and own a product or even a feature. There is always a lot to learn and Amazon culture provides us this flexibility and opportunities to dive into any such area. So never think it’s not my job, think about solutions and work on making them happen regardless of ‘where’ it falls.
- Look for mechanisms and not good intentions — Good intentions are, well, good but are not enough to get things done consistently at a bar that you expect for your team, org or company. You need mechanism to enforce that bar consistently. That’s why we have change management tools, pipelines with blockers, alarms that pages you, and so on. These are all mechanisms to drive consistent behavior and keep that bar high ALL the time.
- Ask questions — At Amazon, I believe I have learnt more by just asking questions, especially during meetings. Questions are a great way to not only expand your knowledge but also to influence others. Asking questions always lead to an answer and then more questions (five Whys?) that leads to the crux of any problem and come up with right solution.
Career
- Failures are an opportunity to learn — Don’t be afraid of failures! I have failed multiple times in my own career at Amazon, some were small and some were big. But every such failure presented an opportunity to learn and grow further. The key point with failures is to learn from them and don’t repeat the same mistakes again.
- Follow your ̶p̶a̶s̶s̶i̶o̶n̶ what you want to learn next — My mentee asked me this question the other day on how did I manage to be in one company for so long. My answer was since Amazon always offered me the options to learn what I wanted to learn next. I wanted to learn from a team of 6 senior engineers so I moved to Appstore team where I learned about operational excellence. I wanted to learn all things AWS, so moved to Workspaces where I built a service that ran on TCP/UDP layer. I wanted to learn big data, so moved to DynamoDB and then to learn AI/ML on big data, I moved to CodeGuru. So for me, one metric to measure my growth in my career is what have I learnt. So it will be Day 2 for me at Amazon, the moment I realize Amazon doesn’t have the option for me to learn and grow.
- Take calculated risks — As for any business to be successful, calculated risks are super important so is for your own growth. Learn to take calculated risks, whether you are solving a problem or making a decision to what you want to do next. Calculated risks are those where you have thought through pros and cons, have a plan B and have kept a door open to reverse your decision with as least impact as possible.
Productivity
- Meetings with agenda — If you are looking to get most out of the meetings, always go in with an agenda and stick to it. Think of this as defining problem to solve and that meeting as a way to get possible answers. Same for the meetings you attend — always ask for an agenda (this is something that I am also looking to improve on).
- Contribute or else don’t join a meeting — I usually don’t join or accept the meeting where I think I won’t be able to contribute or learn something new. If you are joining a meeting but end up not speaking up or do other work during the meeting, then please don’t join that meeting. If you are attending a meeting, look for ways to contribute — ask questions, clarify, challenge — but don’t be the invisible yet visible person in a meeting room.
- Master your tools — Not only learn but master your tools. If you code, learn all the shortcuts in your IDE and make the most of your time using that tool. If you use terminal, learn all the utilities that will make you use it efficiently and make you productive. Over the time, I have learned and played around with tools like tmux, vim, various linux commands (grep, awk, sed) that has allowed me to do be very productive especially during operational events.
All these learnings have one thing in common - they all allowed me to grow as a software engineer in a fast paced company like Amazon. One last thing I want to add to this list is to always help other engineers to grow in their own careers. I have helped 15+ engineers at various levels to move past their blockers in their careers from how to influence others to solve large problems iteratively. I believe it is important to grow in your career but equally important to pass your learnings to help others grow.
Be notified about next articles from Hakim Hanif
Connect and Learn with the Best Eng Leaders
We will send you a weekly newsletter with new mentors, circles, peer groups, content, webinars,bounties and free events.