This post is part of our Summer Intern Blog Series! Each of our most recent class of interns wrote a blog post on their biggest accomplishments and lessons of the summer. This installment comes from Anna, a senior at Barnard College majoring in Urban Studies with a concentration in Statistics. She enjoys all things theater, New York and peanut butter.
Before my internship began, my manager set up a call with me to talk about my summer project. I told him about what I knew, the skills I had, and what I was looking forward to. Somewhat to my surprise, he asked me what I wanted to learn this summer. Throughout the hiring process, I heard that “learn and teach” was one of AppNexus’ core values, but this was the first of what would be many instances in which I saw that value play out.
“I’d like to learn to code in Python,” I told my manager, and he agreed that would be doable. I expected to use a little scripting here and there to complement my summer project. By the end of the summer, I thought I’d have a pretty good handle on using Python for data analysis. Since I had done some data analysis in R for statistics classes before, I didn’t expect picking up Python to be a huge challenge, nor did I think I would get to spend much of my time on the job learning—that seemed too good to be true.
Learning as advertised
My expectations were a bit off. Learning to use Python was tricky but my project was almost all scripting so I got plenty of practice. I spent a lot of the summer creating a script to report revenue changes for one of our publisher clients, pinpointing where revenue was lost and won.
But even more important than the scripting itself was wrapping my head around what the client wanted to accomplish and figuring out the auction logic that would help them do it. The industry context was complex and unfamiliar to me, yet essential for ensuring the script I wrote was accurate and serving the client’s needs. In this case, the publisher set the minimum price for their inventory so high that they barred many potential advertisers from bidding on it, resulting in lost revenue. AppNexus suggested that the publisher lower the minimum price to allow more advertisers to buy from them with the promise that this would win the publisher more revenue. It was my task to determine how much more revenue the publisher made when they lowered their minimum price and to understand the drivers of that boost.
I was excited to work on something that had tangible importance, but it was challenging. Python syntax was less familiar than I expected and I encountered roadblocks. Code that I thought to be perfect sometimes didn’t execute as I expected, and scripts that ran successfully one day seemed to fail the next. Although I could conceptualize what I wanted to accomplish for my project, matching that vision to the appropriate Python syntax came less naturally.
Beginning my project was difficult, but as the work ramped up, I learned not just how to write code, but also what resources to tap into for help. I asked my manager and other AppNexians via Slack to help me understand the error messages my code produced and clarify auction logic. I asked other interns and sifted through Stack Overflow posts to learn the syntax for commands I wanted to execute.
Moving past obstacles
At first, I just wanted to get some output from my code, but as the project progressed, I moved on to interpreting the results and noticed that errors were slowing me down less and less. I could spend a few minutes troubleshooting blockers that used to confound me and identify the roots of problems that once seemed inexplicable. The results I found transformed from random numbers to concrete revenue figures as I familiarized myself with the auction context. That code that returned empty after working just fine the day before? It turns out the dates I queried moved out of range as time passed, but if I changed those dates, the query ran perfectly.
At some point, I noticed that I didn’t need to look up the syntax of every command I wrote anymore. Without being totally aware of it, I was building a knowledge base of using Python.
As I finished up my project, errors still came up in my scripts from time to time. But I have a much better idea of how to solve them than I did when I first started. I can usually identify what part of the code doesn’t work and I know which resources I should utilize to find a better solution. It’s incredible for me to look back on the first scripts I wrote and the roadblocks I encountered early on and see how much more comfortable I am using Python now. Beyond that, I got to use the analytical skills and industry-specific knowledge I gained to explain to a client how the analysis I did showed that their revenue changed. I’m glad to end this summer able to pinpoint both the skills I’ve gained and the contributions I’ve made.