I finished my 2 month internship with Amazon on the 5th of July. I was able to complete the coding part of the project assigned to me but the testing & deployment phase took longer than anticipated. So I spend the last week doing knowledge transfer sessions to a new hire to take over the project. The fact that I couldn’t see my code reach production was slightly disappointing but hopefully it will be in use by this month end. 🙂
Let me straight away get down to how the experience at Amazon has impacted me.
- Industry standard programming methods and paradigms
I was able to understand and see top class programming practices in action (related to Java & more general ones). These include coding conventions to use of interfaces, hibernate, factory patterns, logging mechanisms etc. I was also able to understand how important planning is to the timely completion of projects – sprint plannings, daily scrums etc. Each code goes through thorough peer review process after which it gets a ‘Ship It’. Amazon also had home made building and deployment tools as well as systems for version management, RESTful web services etc.
- Effective use of data structures
Each design decision was carefully taken – the bigger ones were taking over series of meetings, consulting with UI designers, principal engineers, senior developers etc whereas even the smallest ones are made with much forward thinking – the efficiency of chosen data structure in terms of time & space complexities, relevance to the use case etc are considered. Hash Maps, Hash Sets, Array Lists etc were put to regular use.
- Testing frameworks
I was totally new to software testing. At Amazon, I had to write test cases for each change that I made and thus got the opportunity to extensively use JUnit testing, DBUnit testing and the concepts of mocking classes using EasyMock, PowerMock etc.
- Familiarisation with AWS – SQS, EC2 etc.
Our team was making the transition from other platforms to AWS for most purposes. Thus I got to see how the various services are put to use.
- High level understanding of various interesting programming fields – distributed computing, machine learning etc
Our team used to have a weekly technical speaking session – anyone could take a session on upcoming technologies. I was able to know about Apache Hadoop for big data processing, R for machine learning etc. These sessions were really informative and interesting.
- Lots of fun time and good memories 🙂
I was lucky to be part of an awesome team. Everyone was really good at what they do and were also really fun people to hang out with. There was a lot to get done in the last two weeks – I had to stay late at the office. Once I remember leaving office at 5am only to return by 9am again. But it was fun. There was also the Amazon Global Intern Hackathon which as a 24 hour hackathon for interns across the globe. We were given a real life challenge and asked to come up with efficient solutions. I had missed the registration for the event but I joined a team (interns had to form teams of 5 for the hack) simply to see them work on it – Team ThinkOutOfTheBox. It was an awesome experience – their team had got internship at Amazon after topping the Amazon Ninja Coding contest conducted all over India, so yea pretty much a mean team. 🙂
Our team (the actual project team) always had lunch together – with interesting discussions. Also, on Fridays we used to order lunch from outside – pizzas at times. 🙂  We had a team outing the day before I left – very memorable. We went out for bowling, dinner etc and partied hard that night. I ended up sleeping at a team mates place since we were really late.
To sum up, after the internship Amazon’s motto makes perfect sense to me:
Work Hard. Have fun. Make history
dude, i didn’t know you were writing a blog… Cool..Keep up. Good work…