Amazon Internship

January 30, 2007 /

I haven’t got around to talk about my internship experience at Amazon, so here it is.

Looking back now, I had a pretty good work term there. My recruiter put me under the very manager (Srikanth Thirumalai) that came to Waterloo to give a tech talk on the problems his team is trying to solve. I told the recruiter that it is because this presentation that made me interested in Amazon. In my mind, problems like these makes Amazon unique. Not because they are trying to solve large distributed systems problem. Many people are doing that.

The actual team itself is awesome. Everybody is so closely bonded that the team has team events and many people go to them. I go rock climbing with my teammates fairly frequently. People hold on-call parties and use “Super Brain” when tickets come in. I attended one of these on-call parties at Shailesh’s place. I even used his pager to notify him that I couldn’t get in the door. We eat lunch together and always have fun.

My project is daunting at the beginning. I got to tackle an open-ended problem for which there isn’t somebody that can tell me exactly how to solve it.

Srikanth gave me some ideas to start and I took off from there. I got him to help me set up a clearly defined steps to approach the problem, and the rest is on my ability to learn and tackle the problem.

I built the test system in which I can run my experiments and gather data. I did experimentation and measured system performance. I started reading research papers (SimRank, Co-citation, etc) and applying knowledge such as n-gram in my attempt to come up with a solution. In the end I came up with some ideas of my own, and tested out the algorithms I read about. All of these data give the team directions to move forward.

It was a good experience doing that and as Srikanth said, I got a little taste of what it’s like to do research. Well, I must say it’s interesting. Even though I don’t have THE answer, I have answers to what works somewhat and what doesn’t work.

Thanks to Srikanth, my mentor Grant and everybody on the team for making the internship great!

Below is Srikanth’s review for me:

Goal: Identify Test Cases

Your seeking out the right person to find out about SalesRank data was a great demonstration of your go-getting ability. Well done. Whenever you were stuck, you sought out help fast. Very good.

Goal: Experimentation

This was the point, where you made a good impression on me. We talked about this briefly when you were stuck and I explained some of the algorithms to you in not very much detail but you then followed up by reading up academic literature and consulted the web for other algorithms and software packages that you could use. This demonstrates the ability to tackle problems you haven’t had experience with before and not be flustered by the fact that you aren’t aware of the techniques to solve such problems. Excellent job.

Goal: System and Code Review

Your code review is in and has been favorable. To quote Grant:

“Danny’s code seems generally well written and maintainable. I had little difficulty understanding his code given the context of the final report he prepared about his work. He was able to integrate his experimental setup with the entire Amazon build and deploy infrastructure so that we could reproduce it later and his documentation of how to deploy and run the software was very good.”.

Strength: Reliability, dependability

You are excellent in this aspect. You demonstrate maturity way past your experience. I’ve known SDEs in the business for several years that aren’t as good at this as you have been. It has amazed me how driven you are to set and achieve milestones. This trait is your best asset.

Manager Additional Comments:

It was a pleasure working with Danny. I had about 8-10 people reporting to me while Danny was here and it was really hard for me to devote much time to him. I needed a self-starter who didn’t need to be guided and mentored a lot. I needed someone who could set and achieve milestones without a lot of monitoring. I needed someone who could ask around when they were stuck and continue making progress without much help. Expecting all of this from an intern is something few people would be comfortable doing. I had no choice. But Danny came through brilliantly. Any other intern would have had a tough time, but Danny was able to breeze through. We used to meet roughly once a week for about 30 - 45 minutes. But that was more than enough for him.

Danny will make an excellent software engineer if he continues down this path.