A large part of my first month at the RAC has been spent learning Python, Git, and GitHub. As a processing archivist, who is also fairly new to the profession, I had no programming experience and was vaguely familiar with these tools. I began with a goal-orientated learning plan that essentially required me to learn enough of Python to be able to interpret an ArchivesSpace script. This experience not only taught me that programming is a powerful tool – but that it takes a sense of fearlessness to conquer a programming language.
At the initial stage of this project my level of understanding of these tools was the mere fact they existed. In most cases, I had overheard conversations about them, the majority of which were conversations between archivists and IT/technical services staff trying to bridge the gap of understanding between what the archive needed and how the IT staff could make it happen through various scripts and software. It became obvious to me that having both traditional archival training and a toolbox of technical skills would be particularly useful in an age where workflows have the ability to be more efficient through automation.
Learning the jargon and basic commands was the first step in this process – the Codecademy course was especially helpful with this. I also searched online for beginner-level documentation to aid my understanding. I quickly realized that the majority of the guides tailored for beginners used other programming languages to explain Python, which is not super useful when you are starting from square one. At this point, I was noticing that I was struggling to comprehend documentation labeled “beginner”, which was particularly terrifying.
Luckily, having a task-based plan for learning Python helped me stay focused and not become inundated with the idea of learning everything about programming. By the second week I was able to understand what the script did, just not how it did it. In most cases, knowing the “how” is more important than the “what” – so I began taking each command and tackling it line by line. As I went through the script I began to write a plain-language narrative of what I thought each command was doing. I referenced various online guides, open forums (Stack Overflow), and text resources to identify the commands I didn’t recognize and began applying their definition to the script.
Of course, typing away on Codeacademy and comprehending one script does not cover the large abstract language that is Python. When it came time to run the script on my own machine there was another opportunity for troubleshooting. Editing paths and installing python modules (both of which I can now confidently write about) were two obstacles I ran into when trying to run the script. I perused Stack Overflow and spent a significant amount of time trying to address the issue myself before I could freely admit that I had tried everything I knew how to do. After guidance, patience, and a crowdsourced effort from the D-Team, the problem was resolved and the script worked.
Notably, there was a single point in this process where I can say it all “clicked” for me. After talking through the script and discussing some of my misunderstanding and misconceptions about Python scripts, the proverbial light bulb went off. I began to understand how powerful and just plain cool Python scripts can be. I started to think of all the mundane, tedious, clicking I have done in the past and how the majority of it could have been automated had I learned Python (or another programming language). The possibilities that came to mind made me excited for what’s to come.
Here are a few of the resources I found to be particularly useful:
Learning to Program, Alan Gauld
CodingBat, Nick Parlante
A Visual Introduction to Git, Ashley Keller
Visualizing Git Concepts with D3, Wei Wang
The Git Parable, Tom Preston-Werner