Going Indie

I put my two week notice in yesterday.

But why give up my comfortable, well-paid job with benefits and all the free candy and ice cream you could ever want?

It doesn’t make sense. Just look at those photos. Why would I ever give that up?

About a month ago, I got a performance warning that snapped me out of my sugar-induced coma. I was on auto-pilot, cruising along a path that wasn’t for me. Even though I was learning from being in close proximity to experienced practitioners in the field, I wasn’t learning what I wanted to be learning and I wasn’t passionate about the product. As a result, I wasn’t motivated and I wasn’t doing well. I needed the wake up call.

There are a lot of great things about working at Aggrego. For more experienced technologists, there’s a lot of leeway to problem solve and use any solution you can think of. One of my coworkers, Ross, thought of a use for a graph database and was able to start building it that day. My coworkers are all incredibly smart and learning from them was a great opportunity. Just being able to see how they approached problems and how tenaciously they dug into bugs.

For instance, Dave always got to the root cause of the problem, never just flipping switches randomly until things worked, which is oftentimes what I did early on. You learn when you get to the root of the issue. You do not learn when you rely on flipping switches to magically fix problems.

I was also given the go-ahead and a budget to start a meetup that would gain over 100 members in less than 6 months at Aggrego. It’s a really cool place to work.

But sometimes, tough choices have to be made. When I signed on, I was under the impression that I would be learning front-end development, an urge that I held onto even though most of my work became bug fixes or back end work. When I was given a chance to do front-end stuff, I loved it. I loved working with Erick because I could see the fruits of my work visually, and he could take pure data and dress it up for Sunday brunch. Unfortunately, this consisted of a fraction of my work.

In the beginning, I was also under the impression that, because I had worked in newspapers and because I liked writing, I would be passionate about the publishing industry. This turned out to be a false assumption. I am much more passionate about people and the products that serve them than I am about the publishing industry. I would rather be creating something newsworthy rather than the tools to publish that news.

Now, back to that performance warning. I immediately started speculating – what would I do if I had to find a new job? In fact, what would I do if I didn’t even program? Did I even like programming? (As it turns out, I do.) What if this was just not the field for me? What would I do?

After getting over the fact that, given a choice, I would just not do anything, the alternatives I had thought up started to dominate my thinking. Even a week after the performance review when I was told that I had improved, I still felt the urge to leave. But it wasn’t a fight or flight response to the threat of being fired. It was more like being on the runway in an airplane. I was ready to go.

So…the alternatives. There is a dizzying array of things I could do. I could: find a new job as a Rails developer (San Francisco? Boulder?!), get into consulting, become a street performer. I could stick with Ruby or learn Javascript, Go, or any number of things. I could freelance. I could join a startup, create a startup, or disappear into the woods. Or Canada.

I had begun to work on a friend’s startup already, and I began to realize that I relished the responsibility and the programming. I discovered that I did like programming. To be honest, I’m not sure that I had ever liked programming before. I was never one to get lost in my own code. Tutorials and guides, sure, but I was never able to create something I liked. The closest I came was my original tic tac toe submission to 8th Light, before I had even started Code Academy. I was proud that I had gotten something to work, more or less, even though the AI wasn’t perfect. Again, I found joy in developing the user-facing elements. But otherwise, programming anything non-trivial was an exercise in frustration. I didn’t know that the most difficult part of coding wasn’t the algorithmic wizardry or the syntax, but the organization and the human contexts in which code is executed.

I had also long been in talks with Kelly, an apprentice at 8th Light, about our experiences learning to program, both from Code Academy (now Starter League), which we both attended, and her experiences as an apprentice. I’ve long felt like I’ve had this weird quasi-relationship with 8th Light. I’ve attended many of their events and I know a lot of craftsmen at 8th Light. But things never quite worked out. I was poor at the time and needed a job, so I couldn’t really focus on my apprenticeship application or take the risk of starving to death in order to complete an apprenticeship. I also didn’t know what it really was. A significant number of those factors have changed since then. I think I am ready to reapply now.

So right now, I’ve got a startup to nurture and an apprenticeship application or two to complete. After these two weeks are up, I’ll take a week or so to veg out, and then I’ll be going indie.

† See Organizational Skills Beat Algorithmic Wizardry and the fact that the “weed out class” of the Rails Tutorial is setting up your development environment. Let’s not even get into deployment, because I still don’t know shit about that.

Apprenticeship

“How long will it take to master aikido?” a prospective student asks. “How long do you expect to live?” is the only respectable response.
-George Leonard, Mastery

Week 4, last week, was about Apprenticeship. In short: Never stop learning. This book was about useful methods (design patterns) the authors found for learning. While they were primarily talking about software development, the patterns can be applied to any pursuit. Wherever I look, whether it’s software craftsmanship, movement arts, or writing, the Long Road is daunting. I found the problem statement for Retreat into Competence to be very fitting:

“Problem: As you are introduced to the vast reaches of your ignorance you are overwhelmed.”

I became obsessed with the idea of software development apprenticeships, so I compiled a list of apprenticeships that I found online. I drew my own map by reading all the blogs of all the Code Cadets (Code Academy students) that I could find and scouring them for Ruby and Ruby on Rails resources. You can find them here.

I highly recommend reading Mike Ebert’s blog, which chronicles his 12 weeks at Code Academy as he goes from zero development experience to “adhering to Agile standards” in authentic, captivating prose.

I worked my way through Chris Pine’s Learn to Program and did some more Ruby Koans and Project Euler problems. Anxious to work through Beginning Ruby by Peter Cooper and finish the Rails Tutorial, this time for Rails 3.2.

I applied to Code Academy and my fingers are crossed, but I think I’ve started off with a good foundation – whether I’m accepted this year shouldn’t matter in the long run.

This week: Tranquility.