Staying Sharp as a Solo Programmer

How to learn from others when you’re by yourself

The Backstory

My job title used to be CTO[1]. In an early stage startup, this usually translates into “only person writing the code”. And for a decent portion of Versa’s existence, that’s exactly what I was: the solo programmer. Even when I started hiring others, they were all on the other side of the country from me, so I was still physically alone.

Unsurprisingly in hindsight, my time running the tech side of Versa[2] also marked a time of significant leveling up on my part. For the first time in my career I was solely responsible for a Rails codebase, all of devops (a term popularized at about the same time), as well as sourcing and hiring talent to build a tech team…all remotely.

I don’t know about you, but I enjoy being dropped into completely foreign environments. I mean, it’s not enjoyable at the start — far from it — but I’ve learned that it is under these extreme conditions that I grow the most. Being the CTO of a nascent startup was a terrifyingly perfect fit.

The Musical Montage

That said, it took a month or two to stifle my near-constant imposter’s syndrome panic to a point where I could start to strategize how to evolve. In retrospect, I visualize this period as the musical montage — the part of the story where the protagonist puts their nose to the grindstone and “suddenly” becomes the hero worth making a movie about. And it’s exactly that montage scene I want to share with you today. Specifically because it is normally not sudden an it is where all the actual work happens.

I’ve discovered over the years that I learn quickly by doing or watching someone else do. Prior to Versa, that process happened with the help of other programmers on my team — of which I currently had none. So my first practical step was to watch good programmers do their thing. To do this I spent many lunches eating in front of my laptop, watching episodes of Railscasts, Destroy All Software & Ruby Tapas. Interspersed among them were some YouTube videos, but I kept coming back to these three because I thought they were (1) relevant to what I was doing day to day & (2) well polished & digestible.

Quick sidebar on Railscast: Although no longer active, these screencasts were the most helpful while building out our Rails app. It seemed like every time I wanted to add a new feature (i.e. an activity feed) or wanted to know more about a particular concept (i.e. Service Objects), Ryan already had an episode ready to go. Truly phenomenal work.

In addition to screencasts, I would add some variety to my viewing by watching conference talks. Confreaks.tv was (and still is) my go to source.

Another thing I discovered working solo is that I didn’t really have anyone to talk to (or specifically, listen to) about programming. There were others in similar situations as me around my coworking space (I’ll get to that in a minute) but they were also busy working on their startups. I found that podcasts about programming filled the void quite well. I have lots of opinions on podcasts and my preferences (as well as the podcast landscape) have evolved since this time but I’ll save that for another post. Suffice it to say that walking to the office, listening to programming podcasts like Ruby Rogues, JavaScript Jabber and The Changelog was another factor in leveling up my software engineering game. It was good to listen to other coders talk about building things, obstacles they’ve run into, lessons they’ve learned, as well as talking about whatever the new hotness was. As someone with introvert tendencies, it was great to be a fly on the wall for their conversations.

Now let’s get back to those other humans in my coworking space I mentioned before. As a former fellow at Code for America, I was offered a great desk rental deal in their office, along with other civic tech-minded startups. After a few months working there some friends and I started meeting semi-regularly for lunch. We were all in basically the same position so we called it the Civic CTOs Lunch. It was where we could catch up on what everyone was working on, maybe offer suggestions, maybe just listen and, if needed, kvetch a little among our tribe. It was fun but had the a typical ad-hoc system flaw: no one (a.k.a me) prioritized it enough to keep up on scheduling the lunches; but it was fun while it lasted 😀

The other nugget of wisdom I learned during this period of growth is that if I don’t work learning into my daily schedule it will never happen. As I mentioned above, I watched screencasts (something I might not do) while eating lunch (something I never miss). I also had a 3 mile round trip walking commute everyday. That fit in nicely with a 45–60 minute podcast.

The Aftermath

It has been two and a half years since I stopped being a solo programmer and started working on a large team of people in the same physical space again. Looking back, I’m a little amazed at how much my skill set and my mindset have evolved. I consider myself an expert (or almost 😉) in a handful of buckets in which I was definitely a n00b before (i.e. Rails, JS, distributed systems, devops, management, product development). And knowing myself, it wouldn’t have happened as quickly had I not been forced into it by being the only one there.

You know, sometimes I amaze even myself. – Han Solo

[1] According to LinkedIn it was “Chancellor of the Nerdery” — but that was to stave off recruiter spam.

[2] Damn near EVERYTHING else in the company was handled by my AMAZING partner in crime and chief instigator, Keya Dannenbaum.