Ten years ago I started programming professionally and now I’m a Senior Engineer at GitHub. This blog post begins with a retrospective and ends with what I’m looking forward to in the future.

How did I get here?

Growing up I was always building, repairing, using, and teaching people how to use computers. With a steady stream of spare computer parts from my Uncle John and encouragement from my parents it was easy to get started and advance quickly. Most of my friends were into computers too and a couple of them got into software development but for some reason I didn’t start considering it seriously until 2006. I had done some html, css, and javascript hacking starting in the late 90’s but everything I had built up until 2006 was for myself (like my first blog).

In 2006 everything changed when customers of my company SabreTech started asking if we could build software for them. The opportunity to make money was enough to get me interested and I asked my friends Christian Metts, Daniel Parker, and Joshaven Potter for advice and help. With their help we shipped a couple of projects for customers (foreverrememberme and sixsigmaforms) and I started to catch the programming bug. That same year I attended the first RailsConf in Chicago and started building software to run SabreTech’s operations.

The first half of 2007 we took on more projects including building a centralized billing system for a chain of tanning salons and a network and computer monitoring system with remote access infrastructure to make helping customers faster, easier, and cheaper. Programming work was still my secondary job though, my primary responsibilities were building, installing, and repairing computers and training people how to use them. At this point I was driving an average of 1000 miles per week for work and I would continue to do so for the next 3 years.

lawrence kansas

The second half of 2007 brought major life changes including getting married and moving to Elkhart, Indiana. Shortly after moving I did a google search for “ruby south bend” and came across the SBRB group that met at the University of Notre Dame. I attended my first meeting that fall and met John Nunemaker and Steve Smith.

Over the next three years I would continue doing programming projects for customers (jukeman), for my business (suitecs), for family (globalauto), and one little side project with John Nunemaker and Steve Smith.

That little side project turned into a job offer in late 2010 and I sold my share of SabreTech to my business partners and started working full time as a software developer at Ordered List. Brandon Keepers joined our team a few weeks after me and then Matt Graham joined a couple of months after that.

Over the course of 2010 our small team built a new product while maintaining our existing products Harmony and Speaker Deck as well as paying our salaries by consulting for companies like Zynga (we helped Zynga scale Words with Friends and helped design and build the javascript version of Words with Friends for Facebook).

Along the way our friends at GitHub noticed our products and our work and in the fall of that year made an offer to acquire our small company. The five of us joined GitHub on December 5th, 2011.

speaking at failcon

Since joining GitHub I have helped serve our support team, finance team, sales team, customers (specifically GitHub Enterprise admins and Organization admins), and now our security team by designing, planning, building, and maintaining software. I’ve built and led teams along the way but my responsibilities have mostly been solving problems for my coworkers and our customers using software. Earlier this year I was promoted to Senior Engineer. This promotion was especially exciting for me as I looked back at the previous ten years and what it took to get here.

What did I learn along the way?

So. Many. Things.

The importance of mentors as accelerators to growth. Being a leader is often about building trust, giving ownership, and avoiding surprises. That figuring out a process that works for your team matters. That deliberate iteration paired with discipline is a driver for success. That it is important to know your weaknesses and deal find ways to deal with them. That focus is an ongoing struggle. That solving the right problem, doing the simplest thing first, and failing fast are things I value. That listening to friends and family can save your life.

But I’ve written about all of those things already. So what haven’t I written about?

Retrospectives

This blog post is a result of reflecting on the past 10 years so I figured talking about my process for retrospectives would be fitting. Consistent retrospectives are probably the largest contributing factor to who I am today compared to 10 years ago.

Taking time every day, week, month, and year to analyze decisions I’ve made, actions I’ve taken, and the actual outcomes versus my expectations is how I learn what I need to change who I am into who I want to be. A recent example, taken from a personal SWOT analysis, was that I have a tendency to talk over my peers when I get excited about an idea ☹️ As soon as I identified this behavior I started working to change it.

A retrospective goes something like this:

  1. Set aside distraction free time.
  2. Think about something that has happened, whether it was something I did or that happened to me.
  3. Consider the situation, how I feel about it, what I can do better the next time I’m in that situation.
  4. Follow up homework if needed. This could be anything from repeating the situation so I can get better at handling to reading about the subject to learn how other people think about it.

Setting aside time is the hardest part for me, so I’m always keeping an eye out for these distractions:

  1. Social media
  2. Entertainment (TV/movies/podcasts/audiobooks)
  3. Speeding through life

Likewise these are opportunities for reflection that I’m constantly looking for:

  1. After personal devotions (or meditation)
  2. After receiving feedback (good or bad)
  3. After pretty much every conversation
  4. After reading, watching, or listening to something (entertainment made both lists!)
  5. The end of the day, week, month, and year

I like to write down the things I’ve learned through my retrospectives and I often use frameworks like Start/Stop/Keep or a SWOT analysis to help me organize my thoughts and find patterns. This gives me a great opportunity to find repeating themes over the years and track my personal progress. And sometimes it even turns into a blog post 😃

Where do I see myself going in the future?

I’ve been interested in Machine Learning for the past year and recently took a new position at GitHub working on the Security team where I get to use my current skillset and learn some ML and computational statistics techniques. I’m really enjoying it so far and I think I’ll be focused on Machine Learning and Artificial Intelligence for the next few years. I’ve also been hardware hacking as a hobby for the past few years so maybe I’ll get to build that robot butler someday.

robot-walk