I often get asked questions about how long I’ve been coding for, how I got started, whether I have completed any formal studies in programming / computer science, and so on. The reality is that my path is far from linear. Most of what I’ve learned to date has been more opportunistic than strategic, curiosity-driven rather than being part of a master plan to acquire professional skills for the workplace. To illustrate, it might help to go back to the beginning, to tell my coding origin story…
My first foray into programming was in the late 1990s. These were heady times; public access to the internet was just becoming a thing, yet the security protections on school and business computers were remarkably poor. I began learning to code when I figured out how to access the MS-DOS prompt on my primary school’s computer to change settings at my leisure.
Fast forward to my high school years. At this point, I basically lived on the internet so I could feed my various obsessions for my favourite musicians and TV shows. I spent hours on Myspace, on Yahoo! Chat (remember Yahoo! Chat???), and on fan forums. If you frequented an online forum or message board in the early 2000s, then you know full well how important it was to have a cool avatar or banner to highlight your fandom. It was at this point that I decided to learn some basic graphic design skills, and in the process I also set up my first websites and blogs so I could showcase my homegrown (read: rough as guts) fan art. Building websites in the early 2000s was not the near-seamless drag and drop experience that it can be today. I spent hours hard-coding (!!!) webpages in HTML, and then I discovered the magic of CSS.
Somewhere in the mix of my teenage years, I also logged many days and weeks questing on the PhoenixMUD - an online, text-based, medieval fantasy role-playing game (MUD = Multi-User Dungeon). To control your character in the game, you had to type in commands to navigate the game world, interact with other users and built-in game characters, solve puzzles, and execute various skills. What I realise now is that I was inadvertently developing coding skills while I was playing.
What I also realise now is just how nerdy I was, how super geeky my pastimes were, and how these experiences are inexorably linked to what I do now as a scientist and a coder - YAY NERDS!
PhD in CTRL + C, CTRL + V
Throughout my undergraduate studies, I continued to build websites and blogs but I wasn’t really making an effort to develop my programming skills. It would be several years later when I would make the deep dive into statistical programming in the midst of my PhD. At the time, my data skills largely centred on Excel and SPSS, which served me well during my Honours year. However, since I was working with larger, messier data sets throughout my PhD, I quickly grew tired of the tedium and error-prone nature of manual data manipulation in Excel. On top of that, the analyses I needed to complete for my research could not be executed using the SPSS general user interface, but it could be achieved via SPSS syntax (i.e., code!).
From there, my programming skills rapidly improved. After learning to create Excel macros and write SPSS syntax, I finished my PhD studies and adapted some of my analysis procedures into Stata syntax for others to use in similar research projects.
With my new skills, I became comfortable working with increasingly bigger data sets. Then, I started running into problems with the processing speed of my Excel macros. I continued to encounter significant errors that were accidentally introduced during data cleaning, errors that required me to start all over again from the raw data (or a version close to it). I would spend hours carefully preparing Excel workbooks to share with collaborators, who would then review and make changes to the file, not knowing that they had simultaneously made changes to the underlying structure of the file and its embedded analyses (WHERE ARE ALL MY FORMULAS?! #headdesk). At this point in my career, I started to take on a few data analysis projects concurrently. I kept copious notes in Evernote to document my analysis ‘recipes’, but found it difficult to keep these notes up-to-date with all the changes that might be made in a single analysis session.
There had to be a better way.
I happened to glimpse the power of R (and its horror) in 2011, when I participated in a longitudinal data analysis workshop during my PhD. I thought we’d be covering the conceptual and theoretical bases of working with time series and using multilevel models, but when everyone started loading up R I realised that we’d be practically learning to implement these analysis techniques (yay!) and that I was way out of my depth having never used R before (oh no…). I spent the rest of the workshop simply trying to keep up while everyone else was punching commands in with apparent ease.
For the unitiated, it was quite the introduction and one that admittedly scared me away from properly learning the language for a few years.
In 2015, I put those experiences behind me and dedicated much of my time and effort to learning R. The impetus was to learn R well enough so that I could provide adequate support to my Honours student and her research. I think I managed to do this (just), and in the process I was able to develop a new skill set that has served me well in subsequent years. Now, in my work as a sport scientist and researcher, I use R nearly every day to clean and merge data sets, conduct simple calculations and build models, create static plots and interactive data visualisations, generate reproducible reports, and build dashboards.
Of course, learning never stops for a perpetual student like me. I’m keen to further develop my skills in R and other languages, and launching this blog is a big part of that process.
TL;DR I am a massive nerd and have been coding in some form since primary school.