Working as an SDE Intern at Amazon
During the time of August 22, 2022, to November 11, 2022, I worked as a Software Development Engineer (SDE) Intern at Amazon in Boulder, Colorado. I worked as part of the Ad/Media Planning team, who develop and maintain a platform known as Plan Manager. The platform provides communication planners, video channel specialists, and traders with reach forecasting and modeling to enable them to build plans that take advantage of the full opportunity presented by Amazons streaming TV. It is a full service, full stack advertising platform using a tech stack of RESTful APIs, React JS, Java, HTML5, CSS, Typescript, and Native AWS technology (Lambda, DynamoDB, S3, EC2). I worked as part of an agile development team together with product managers to scope, design, implement, test, and launch a new feature. I was responsible for owning, designing, and delivering a product feature that will be used by advertisers.
At the start of my internship, I was tasked with completing some initial onboarding training and becoming familiar with the platform and stack. My time was spent completing training readings and exercises, meeting with and familiarizing myself with my coworkers, and learning about the platform though exploring the code and talking with team members. This period of the internship was challenging as gaining a proficient understanding of the platform required a lot of discussion with team members and reading. After this time, I had already felt that I had gained a strong understanding of AWS technologies and the platform, as well as established good relationships with my coworkers.
Once my initial training and acclimation was completed, I was introduced to the project I would be working on. I was tasked with designing a shared feedback component that would be integrated into the platform, allowing users to provide the team with feedback on UI/UX, Bugs, and other experiences. The project was given to me along with a requirements specification document, and UI mockups. The goal was to have a customizable react component that could be configured easily to collect a variety of feedback and accept a variety of user input. The component would need to integrate with an API and database that allows for storage of feedback objects containing different datatypes. My first task for this project was to research and complete a technical design document. I would then participate in a design review with the rest of the team.
During researching for the design of my project, I discovered an existing project owned by another team. This project was quite similar to mine and fulfilled nearly all the requirement specifications given to me. After discovering this I promptly reached out to my managers and others on the team to discuss next steps. It was decided that I should continue with my research with a focus on how the existing project could be implemented by our team. I also finished up with the high-level design of my own version of the project. I compiled all this research and design into a document comparing the two approaches and giving my opinion on what should be done. A design review meeting was held shortly after, and I explained my work and held a discussion with the team. It collectively decided that going through with building my own component would be redundant as the existing one met the requirement specifications. With this I awaited a new assignment and continued acclimating myself with the team and code base.
The new project that I was assigned was a backend only project dealing with improving the accuracy of ad rate data provided to users and lowering the workload of the sales team who were manually correcting this data. I was to modify an existing API by interfacing with another API to get the correct data for the end user. This required understanding the microservice architecture of the Plan Manager platform and working with separate teams that maintained other services to retrieve necessary information and documentation. I also added testing to ensure all edge cases were handled.
Once the modifications were fully implemented, tested, and approved by the team, I was tasked with wrapping my changes using an internal tool that allowed for incremental deployment of the changes. This proved to be more challenging than expected and required more discussions across teams and an ever deeper understanding of the architecture. An initial oversite by me and others on the team lead to the changes being unable to be incrementally deployed due to http headers related to the incremental deployment tool not propagating to the API where the changes were. I was able to discover this short fall on my own while continuing my understanding of the architecture. I reached out to others on the team to alert the of this issue and explain my proposed solution. After some meetings and discussions, I went ahead with the needed changes and my code was deployed.
In conclusion, my internship at Amazon as a Software Development Engineer (SDE) has been a valuable and enriching experience. Over the course of three months, I had the opportunity to work on challenging projects, collaborate with talented professionals, and gain hands-on experience in the industry. The initial phase of my internship involved a comprehensive onboarding process, where I immersed myself in the intricacies of the Ad/Media Planning team's platform, Plan Manager. This period not only allowed me to grasp the technical aspects of the full stack advertising platform but also fostered strong relationships with my colleagues. The initial project I undertook designing and implementing a shared feedback component, was originally envisioned as full stack feature I would develop over the course of the internship. However, through thorough research, I identified an existing solution within the organization that aligned with the project requirements. This experience taught me the importance of communication and adaptability in a professional setting. The subsequent shift to a backend project focused on improving the accuracy of ad rate data provided me with exposure to the intricacies of microservice architecture and collaboration across teams.
Throughout my time at Amazon, I not only honed my technical skills with a diverse tech stack, including AWS technologies, React JS, Java, and more, but also developed essential soft skills such as effective communication, problem-solving, and adaptability. Engaging in design reviews, collaborative discussions, and addressing challenges strengthened my ability to contribute meaningfully to a team. My internship has been a transformative experience, providing me with practical insights into software development. I have learned a lot, both technically and professionally, and will undoubtedly take this experience with me in my future endeavors in the field.