Editor's note: This backdated origin story combines and revises two posts I originally published on Medium on October 25, 2016, and July 29, 2017. It keeps the journey from those posts while leaving their period-specific commentary in the originals.
I did not always know what I wanted to do for a living, but I always liked computers as tools for creativity and general fun. My list of possible futures was long:
- movie director
- film editor
- script or book writer
- mobile app developer
- web developer
- 3D motion graphics designer or digital effects artist
- preacher, pastor, or minister
- Linux or Unix administrator
- television motion graphics artist
At the time, that looked like a list of unrelated choices. I thought I had to pick one. It took years to notice that I kept reaching for the same thing in every field: a tool that would let me make something that did not exist before.
The yellow camera
Growing up, I did not have access to many technical things, but I did have a camera. It was a bright yellow, splash-proof film camera my parents gave me for my birthday. I did not care how it looked. It was awesome. What I hated was waiting a week to get the photographs back. I do not think I can locate any of those photos now, but I remember the feeling of making them.
That camera introduced me to creating with a technical tool. Computers became the next version of the same idea. In high school, I made a project declaring that I wanted to become a computer programmer (and misspelled "programmer" on it). The ambition was real even if the spelling was not.
During my freshman year of college, I became convinced that programming was not for me. The computer science path came bundled with chemistry, biology, and physics. I found physics too abstract for a subject that was supposed to explain the physical world. More importantly, I interpreted struggling with those classes as evidence that I did not have the capacity to become a programmer.
I transferred to a community college to pursue digital media instead. I thought I was walking away from programming and toward creative work. In reality, I kept finding programming inside the creative work.
Code hiding inside creative work
I edited XML for Final Cut Pro timelines. I added small expressions to After Effects to make objects fly. I created 3D building structures in Modo and mini programs inside Excel. I was not calling myself a programmer, but whenever a creative tool exposed a programmable seam, I pulled on it.
My first computer that felt entirely my own was a 2007 MacBook Pro with an Intel processor. I used it to learn video editing in Final Cut and multimedia work in Adobe's suite of creative tools. I can get lost in a project when I find the flow of it, and those tools gave me plenty of places to disappear.
One of my first jobs was web design, but I relied heavily on Adobe Dreamweaver to turn designs into code. The machinery behind a website was still a mystery to me. Code looked foreign and cryptic, and the web itself felt disappointing. Internet connections were slow, the iPhone had not arrived, and Flash was king. Video editing seemed more exciting, so I became a video editor full time for a few years.
The web changed while I was away. The iPhone helped end the Flash era. HTML5 and CSS3 matured. JavaScript gained ES6. Browser APIs such as local storage and the History API made websites feel more like native applications. When I returned, the web had become a much more interesting creative medium.
Finding languages I could understand
In 2013, I started watching Udacity's Python courses to learn backend web programming. I looked for excuses to use Python at work, including a small web application that generated XML files with pictures embedded in them. Python was one of the first languages I could read without feeling that the language was trying to keep me out.
I had wanted to make iPhone apps, but Objective-C never clicked for me. Then Apple introduced Swift in 2014. I was literally jumping up and down because I could understand it. Swift made sense. I followed people on Twitter to learn everything I could, and when Apple open sourced the language, I followed the evolution proposals to understand how it was being built.
Learning Swift gave me a bridge to other languages. I picked up Java, returned to Objective-C with better context, and then learned enough C++ to describe its templates in terms of Swift generics. Each language made the next one less frightening.
I made my first iOS game in 2014. It was a small Breakout-style app, but seeing it work felt like watching a baby crawl for the first time. My first attempt to contribute to open source was not even a proper pull request. I was trying to start a conversation about problems I had implementing the game.
In 2015, I began submitting exercises to Exercism. That community taught me how open source collaboration worked. I barely knew how to use Git from the command line, and the command line still scared me. Patient maintainers showed me a few tricks and helped me recover when I made a mess of a pull request. I later completed Udacity's beginning iOS and iOS developer nanodegrees, shipped a regex bug in a popular Swift linting library, and rebuilt my portfolio with modern web technologies after attending Code Fellows.
I did not have to choose
When I look back at that original list of careers, I think the list was asking the wrong question. I am all of those things at different times and in different capacities. I still enjoy writing, making movies, working with graphics, making videos for my church, experimenting with shell scripts, and building motion graphics. Software development did not replace those interests. It connected them.
The thread was never a particular job title. It was the pleasure of creating something, learning the tool deeply enough to stop being afraid of it, and then using it in a way I could not have imagined at the beginning. The yellow camera, Final Cut, Dreamweaver, Python, and Swift were not separate detours. They were all part of the same path.
This is the background to the software engineering career that followed. A decade later, the next part of the story will ask what changed after programming stopped being the intimidating option and became the work itself.