Author’s Note: This is a modified version of the presentation I gave on the last day of my summer internship at Tulip. If you’re into impractical but cool data viz, then this may be for you.
What does learning look like?
It was 8PM, the night before my final intern presentation, and I couldn’t get this question of out of my head. Tomorrow I supposed to present the culmination of all my work this summer by doing a demo of my main project. But something about that felt wrong.
This summer had been the most intense period of learning that I could recall. My 5 years of programming in languages like Python, Java, and Haskell left me completely unprepared for the convoluted, crazy world that is modern web programming.
The hardest thing I did this summer was learning how to be a web programmer. The scheduler I wrote was simply a result of all that learning, not the learning itself.
What if there was a way to quantify learning? If there was some way to put into numbers all the things that I had learned this summer, maybe I could present that.
As a programmer, Google is arguable my most useful tool. The Hypothesis is that as I learned more, I would have to look up less and less. Turns out you can download all the searches you’ve ever done from Chrome. My brain is split about 50/50 on whether this is crazy scary or crazy cool. Probably both.
Although there the line points downward, the trend wasn’t very big. After mulling this graph over some more, it started to make more sense why there wasn’t a bigger trend.
When I started out at Tulip, I had to constantly get help from my mentor because I didn’t even know what questions to ask. As I learned more, I was able to leap-frog my learning and seek out my own answers. This data didn’t seem helpful, but I realized that it was useful for something else. Quantitatively proving my lack-of-sleep schedule this summer.
Every time I learned something new this summer, I wrote it down on a google doc. By the end of my time at Tulip, these notes had grown into a giant encyclopedia totaling just under 100 pages. It felt like at the beginning of my internship I was writing pages and pages a day, and by the end I barely had to write down anything. Maybe this was the statistic I’d been looking for.
Turns out, the length of my note entries were pretty much constant throughout. On second thought, doesn’t that mean that I was encountering new challenges and learning new things constantly? It was about midnight, I was really tired, and I could have stopped here. In fact, I probably should have stopped here, but at this point I was hooked. I had one last idea and I had to try it out.
For non-technical folk, is a commit is like a save point in a video game. It contains all the lines of code you’ve changed in a project since the last commit.
Commits are definitely not a perfect metric. They don’t track the 4 hours you spent digging through your codebase trying to find a mystery bug that resulted in a 1-line change. That just looks like one, tiny commit.
Still, I was hopeful that when viewed cohesively, these commits could tell a powerful story. Unfortunately, there were no pre-existing libraries that could plot my commits in a nice, simple view, showing when each commit was made and how big each commit was. So, I had to write my own.
Now, this is what I was looking for.
This graph told the story of how I started learning about our codebase with a bunch of small, self-contained projects. You can even see the time period that I start working on my main project, which I finally land on July 5th. At that point I had fluent enough to be able to see where code could be made better, and as a result my commits again drop to almost zero while I’m working on a major refactoring which finally lands on August 4th. And, in the last month I really hit my stride and pump out refactorings and updates to my main project consistently up until the last day of my internship.
I was happy. I was looking for something quantitative which I could point to and say this is what learning looks like, and I found it. My final presentation ended up consisting of a demo of my major project followed by the story that you just heard, and people loved it! They suggested I put it up online, which is what I’m doing now.
All the source code for these graphs is available on GitHub.