Around the same time I read The Cuckoo’s Egg, which showed me the world of possibilities that knowledge of Unix-like systems gives you, and other resources which showed me there was a whole free/open-source “hacker” culture out there to discover. What exactly I wanted to do with this sense of possibility, I’m not sure I knew. You might say I loved the idea of open source before I actually understood how I could participate, or what it meant. The one thing I was sure of was that the next step was probably to remove MS-DOS and Windows from my computer and install Linux instead, so that’s what I did. Over the next several years I forced myself to learn how to configure my Linux system and repair it when it got messed up. I got really good at googling error messages!
By using open source software, I felt connected to open source culture even though I still didn’t know how I could actually participate. I was vaguely aware of IRC but didn’t really understand that it was a thing I could use. There were probably forums where I could have met other open-source enthusiasts, but I didn’t find them. I think getting involved and finding people to collaborate with is much easier today!
After a few years of tinkering with Linux I started once more to try to get into programming, but I still didn’t know what to do to actually participate in open source. I had a feeling that I was not yet good enough to contribute to someone else’s project, so I started a few of my own projects, but lost interest before they went anywhere. I do remember the first open source contribution I ever made! It was a patch that I submitted by email in 2006, to Skippy, a task switcher similar to what is now the Overview in GNOME. I never got a response…
After several false starts like this, in the fall of 2006 I finally started a project that I was motivated to finish. I had always been interested in text adventure games, and in 2006 Inform 7 was published, a design system for writing these games. The core was closed, but the development environments were open source, and they were only available for Mac and Windows. This looked like a good learning project for me! I expected myself to lose interest before I got anywhere, like I had with my other programming projects, but I actually stuck with it until I got something working. I first published it in October 2006 and got some good feedback immediately from the Inform community, which motivated me to keep working on it. Eventually I was invited to join the Inform development team. Because I had somewhat arbitrarily chosen to build the app’s UI using the GTK toolkit, I also learned a great deal about GTK and started getting involved in the GNOME community. Learning many best practices from others led me to refactor almost the entire app around 2008. When I saw how much I’d improved in two years, I started to be able to kick my feeling of inadequacy and consider that I could be a good programmer who had something to offer to open source projects.
Around that time, Stack Overflow was launched, and I started answering questions about GTK on Stack Overflow. I don’t do much of that anymore, but I had lots of free time back then, and I spent lots of it writing little programs to answer Stack Overflow questions about GTK. Helping other people gave me a good feeling, but also gave me a lot of valuable practice in thinking about how to solve problems. To this day, I’ve still got the top number of GTK questions answered on Stack Overflow! Interestingly, I believe that partly enabled my career switch into software engineering in 2013, because I made a connection with my first software job at Endless due to showing up in searches.
My advice for others is a few things: one, don’t get discouraged! You can see that my journey at the beginning consisted of literally years of tinkering without really any plan or goal, and many false starts until something ‘clicked’. I have a feeling that this is not unusual. Two, practice! Although I attribute a lot of my journey to luck, I can’t deny that putting in those hours helped me meet the opportunities when they arose. Three, the single most useful skill I learned is how to approach making sense of an unfamiliar error message.
Let’s connect on twitter.