Learning how to learn: My summer on the Data Platform Team
During the summer of 2014, I worked as an intern on the Data Platform team. One of the team’s main initiatives is to develop data workflows and reporting for other internal groups. My first project was to build a report using the programming language Scala.
The report I built was for the Site Uniques Workflow, which is the data processing pipeline for all video advertising campaigns. Specifically, this report allows you to group various campaign attributes together to obtain different metrics. For example, you can group by campaign ID, website, ad exchange ID, auction ID, etc. It pulls raw bid logs from Amazon Web Services (AWS) through my workflow, and processes the logs. The outputs are the customizable site uniques workflow reports, and it’s in production now.
But before I could build anything, I had to learn Scala. I was already experienced with Hadoop and AWS and familiar with Java and Python, so I was confident I’d be able to learn it quickly.
At first, I tried to learn by reading huge chunks of code. I did all the tutorials and read all the documentation. And what I quickly learned was that I didn’t have a clue about how to teach myself a new language quickly.
I talked to my manager Ian, and he suggested I try learning Scala by running small cases against a log that the team had created. I separated the log into small parts, and tested them in small pieces, trying to make each piece work. The tutorials had taught me the language rules and the basic syntax, but it was when I started conducting my own practical experiments that I really started to grasp the language.
I also learned how important it is to ask questions. I am a little shy, so at first, I was a bit hesitant. I wanted to just dig into the problems myself, but I realized quickly that this wasn’t the best approach. Without context for a problem, trying to dig into it yourself is a very inefficient way to find a solution.
This was where Ian’s second piece of advice came in: Ask your teammates for help. Your team is more experienced, and they may have even tackled a similar problem. They can probably provide relevant examples that will help you get to a solution more efficiently.
Throughout my internship, I found help, not just from my own team, but from other teams as well. I learned how critical collaboration is. Talking through problems and issues with coworkers really helped me to find solutions, as well as develop my own problem-solving skills. It required me to come out of my shell a bit, and it was well worth it.
My internship also taught me that it’s not so important to do something really big from the very beginning, but to develop a good foundation for learning new skills. In fact, one of the most satisfying parts of my internship has been the opportunity to learn all these new things. It’s not just that I learned a new programming language, but that I now have a clearer idea of HOW to learn something. New technologies are always being developed, so we can’t just focus on the current technology. It’s essential to have a good method for adapting to new technologies and being flexible in different working environments.
I have learned so much here at MediaMath. I only wish the internship could be longer.