So, perhaps this is just my inevitable adoption of the current professional zeitgeist, but over the past two (three?) years I’ve gotten more serious about learning to talk and collaborate with computers. I’m not a computer scientist in any real sense of the term, but I’ve become somewhat of an interested learner more recently as I’ve started using more code in my day-to-day work.
I want to reflect more on what learning code/programming has made me feel, rather than how much I think I’ve learned, or the idiosyncrasies of specific languages. My learning has been motivated primarily from my needs working in a scientific field, where documenting procedure and analysis is important, along with the equally important steps involved with cleaning and processing data.
Perhaps unsurprisingly to any technically-inclined readers that might somehow stumble across this, the biggest star in my toolbox has been R, with Python and MATLAB riding along too (though these two have largely been benchwarmers for the time-being). Aside from some classes I took in high-school regarding how to communicate with servers (from which I now remember nothing-- oops), R has been my first and primary home in programming. As the story often goes for most with their first foray into a computer language, I was often confused and clumsy with my first attempts, eventually making friends with the cor() and princomp() functions that would help me during my independent research.
However, due to its compulsory use in a class, I ended up using SPSS more frequently for my final spring term, and over my first summer after graduation. When I arrived in Ann Arbor, as I continued to work on concluding my independent research, I spent many a night in UofM’s Shapiro library, doing data analysis on public computers after work. I attempted to document my work, saving output files, attempting to reconstruct my work with SPSS’s syntax. Yet, I always felt scattered and always felt like I had more files than I wanted. “Dataset6-28-13_RV1.sav” ... “Dataset6-28-13_RV2.sav” ... “Dataset6-28-13_RV2--EditsNoCasesUp18.sav”... etc.
Maybe it’s small in the long-run, but being able to look back and tangibly measure my progress from a set point has been a really valuable experience for me. At this point, I’ve finished 9 MOOCs from Coursera.org, completing almost all of the Johns-Hopkins Data Science specialization. There are a few nitpicky things I would change about a few of the courses, but overall they’ve been really valuable experiences. I had a fairly pessimistic view of MOOCs prior to this year, initially failing to grok R through a course on the same website during my junior year. Was it because I wasn’t ready, or because the class could’ve been better? Both? Either way, it’s amazing to use a set of practical skills tangibly and consistently in places outside just a classroom setting. I obviously use much of the background knowledge from my degree to inform my day-to-day work in my lab, but learning to program has been different.
There are some lots of things I don’t understand well about R, but at the same time, I feel comfortable being able to look inside a set of code and know what’s meant to accomplish. Being able to write detailed scripts and self-designed functions to match whatever needs I have in a given task is empowering in a way I enjoy, but still need to work on articulating how. I guess what I tell people makes me excited is the fact that I know whatever code I write will treat the input the same way every time, and give me the same corresponding output. In the methods classes I took in college, being able to document and reproduce your work was emphasized as something critical, but the classes didn’t have the space to fully instruct us on the best ways to do so.
At this point, whenever I’m working with raw data, I know I’ll be able to build a script or markdown that starts from this untouched step, all the way to final summaries and interpretation. R’s ecosystem is well equipped for this task, and I’ve learned enough about python to know it’s comparable in some respects. I think that’s what’s so liberating, just knowing that I could hand my work to someone and they could see my rationale plainly and transparently through each step in the process.
In addition to helping me with something that’s critical in my field, I really love this feeling of having found a modular tool that I can continue to develop. Two years ago, I was reading papers from researchers who were scraping Twitter’s API, or working with WoW’s Armory to test their hypotheses, and I was in awe, not having any real understanding of how that was possible. Now I have my own API keys that I’m using to explore the trails I’ve made across the internet, and make visualizations for my friends and family. And all of this feels transferable; I like being able to work deeply in R, and appreciate the more simply structured but shared logics of Python.
I guess that ties into what I was thinking about today, which is a genuine recognition of the scale of the things I’m learning. One of the things I’ve appreciated most, is how I’ve been able to look under the hood of everything I’ve been doing. So many of the things I interact with each day are built on similar logics to the things I work with each day. There are so many APIs from different sources, websites I visit and peer into each day, platforms I use to correspond with coworkers, friends, and those I’m closest to. The same skills I’m starting to nurture have been mastered and defined by so many people before me, and have made powerful and beautiful things. I don’t know how I’m going to make a mark with the things I’m learning, but I can speak a bit more of this world’s languages. I’ve gradually found out that I’m not a person who sits back and accepts that “this is the way things work”. I feel like I’ve been given a set of skills to go out and answer the questions I have about the world-- I don’t have to take things for granted if I don’t want to. And that’s powerful.
now I just need to find some more cool questions