Yesterday was the last day of my three-month-long internship with Amazon. Compared to the other two companies where I’ve interned, Amazon was by far my favorite company to work for. I got to work on a great team and learned a lot. Today I’ll be talking about the three most important things I learned from Amazon (note that any views represented here are my own and do not necessarily represent those of Amazon).
1. Define your Culture
Even before I started the internship, Amazon began sending me emails asking me to become familiar with their leadership principles. The leadership principles are 14 points that define Amazon’s culture and help them make decisions. For example, they talk about customer obsession, taking ownership, and thinking big, among others.
At first glance, these may just seem like cute ideas that would look great on some cheesy inspirational poster you would see in a fourth-grade classroom. However, I quickly learned that Amazon takes its leadership principles seriously. They are key to how the company operates on a day-to-day basis.
This made me realize the importance of defining your culture. Whether you’re running a business or just want to improve yourself, solid principles to live by can change everything. For example, one of the principles I choose to live by is to be completely honest. Once I decided to be fully transparent and honest with others, I felt a lot more secure in my life. This isn’t a blog about ethics, so I’ll stop there. But I do think that firmly sticking to certain principles can help every aspect of a business or a person’s life.
2. It is Possible to Enjoy your Job
I’ve loved coding ever since I started in high school. There’s nothing like having an idea for a project and then bringing it to life with code. However, I started becoming concerned when I began working for actual companies during my first two internships. A lot of times I felt like my only job was to fix bugs. I got bored easily and the hours passed by slowly. I looked forward to my end dates. I wondered if I’d be able to find a full-time job that I enjoyed.
When I began working for Amazon, this changed. I was given an interesting project to work on. I stayed busy all day and never got bored. There were times I would get frustrated when things didn’t work, but that was to be expected. I was mostly relieved that I had found a job I looked forward to each day.
I don’t know if I’ll return to Amazon full-time. It’s a big decision and there’s a lot to consider. But the fact that I liked my job is a huge plus. At the very least, it gives me hope that I can find a job I enjoy. Maybe you don’t even want to be a coder, and that’s fine. Whatever it is you want to do, I believe you can find a job you like.
3. Refactor Early, Refactor Often
I know that this point might sound like a bit of a cliché. But I believe that refactoring my code early and often was key to my success at Amazon. This didn’t necessarily mean that the first time around my code was bad. It just meant that I found a better way to do things.
Most of the refactoring I did wasn’t that big. Most of them involved changing the structure of my components so that they were more testable. This goes back to one of my previous blog posts about writing more testable code. It’s a lot easier to refactor your code so that it’s testable instead of writing code and then trying to figure out how to test it.
Nobody likes trying to implement huge refactors to an entire app. I think that performing small refactors along the way saved me from having to do this with my project. Had I tried to work around my old code instead of refactoring, I might not have been able to finish my project on time.
Overall, I had a great experience at Amazon. I learned a lot of valuable lessons that I believe I can carry with me throughout my life. Regardless of whether I return to Amazon as a full-time employee, I’m grateful I had the opportunity to intern there. Interestingly, some of the most important things I learned didn’t have to do with programming at all. But that’s what I love about software engineering - there will always be chances to learn new things.