Turning a Hobby into a Job
Like most blog posts, someone linked me my own GitHub with the message - "Do you think you'll hit 10k this year?". I didn't understand the context, but it was in relation to commits in a year.
Around 8,000 commits seems pretty far from 10k, but then when you look at each year before that does it seem sane.
- 2011 - 21 commits
- 2012 - 553 commits
- 2013 - 678 commits
- 2014 - 559 commits
- 2015 - 1,460 commits
- 2016 - 2,495 commits
- 2017 - 2,303 commits
- 2018 - 5,206 commits
- 2019 - 7,313 commits
- 2020 - 7,926 commits (rolling year, not complete)
So the first question is, what the hell happened to pump those numbers up? Well lets take this year by year and figure out how a little hobby became a full time job.
The Early Days
Before the era of online source code sharing in the public space, I worked on projects with revision control being various iteration of renamed files. This would be like "rewritten-function-2.txt" and "final-loop-test.bak.3". The problem though is I had no idea what I was doing. Progress was slow or non-existent for any project I began. This is what led to shoveling snow and doing errands just to earn enough money to PayPal it to some random people across the world. They would sit with me in Skype sharing their screen teaching me programming questions I had.
I was addicted to programming, but really had no idea about the true concept of it. One of my Skype sessions was because I had asked - "How do you build an auto updater for a VB program?" - That $25 Skype call really helped cement an understanding to problems for me.
I couldn't wrap my head around what a program needed to do in order to auto-update, but this training session showed me. All the various pieces for a server to hold a text file to represent the current version. Another small application that could handle closing and downloading the intended application.
Shown above is my 21 commits I did throughout 2011 in the public space. My first foray into the world where anyone could provide feedback or flat out insult you for what you programmed and how you did it. I had the drive now, but not the skills to succeed.
The Joint Effort
At one point in a Halo related hobby project, I started a project with someone I never met before in the real world. We worked together and this led to the wonders and stress of team programming.
- We both worked too much without sharing work, leading to merge messes.
- We didn't communicate who was doing what.
- We both wrote our own style, undoing the others when we conflicted.
- We both had our own idea of what the project should be.
With all the bad, there was some good.
- I learned from him and I hope vice-versa.
- I learned how to break problems down to allow parallel effort.
- I learned our interests were in success of project, never personal attacks.
Though, we could never quite solve our problems and the project ended. This just furthered my addiction to programming. I thoroughly enjoyed working on projects where I wasn't the smartest - just reading and learning from the peers around me.
The College Years
The years of school began the increase in working in the open source space, no matter the project whether it was Android, Ingress, Destiny, Halo or Minecraft - I was working on some project for it.
This was also where projects started getting abandoned for the sake of not having enough time to dedicate to them all. Projects would start with this intense drive to complete them as soon as possible, eventually dying off into the next great project. Though it didn't matter, each project was unique and interesting and fed that drive to just solve a problem.
Looking above, I remember my summer of 2014 programming activity nearly halted completely as I started dating a girl. Looks pretty interesting once you had the data and the reasoning to correlate it. Just shows how something so dumb like a count of commits over time can tell a story with the correct background.
As school was nearing the end, I had developed a few styles of programming that developers could spot once working with me. It had been years and years of working with others on projects. Years of failure and success. Years of debugging and solving complex problems.
I remember working with a great group of friends to attempt to use x,y,z coordinates of deaths in Halo to lay on top of a map to find the most "dangerous" area of a map. We just couldn't get overhead screenshots of maps to draw on top of nor could we figure out what point 0,0 was or our directions. We attempted to take screenshots in game from high levels and merge them together, but it would never work.
So we would start a game, kill someone in a corner of the map. End the game, rinse and repeat until we discovered the bounds of the map to help orientate ourselves.
The image above is from a copyrighted game guide by PrimaGames which we took to build the feature. Unfortunately due to the legal copyright, it was never released. Funny enough, a few months after we abandoned the project, the company behind Halo released overhead images for all Arena maps. It wasn't all maps and the project was abandoned by the time they were released.
With all the hobby projects over the years I had built a pretty nice collection of work on GitHub, which now as someone who interviews people is my favorite place to start to search. It resembles how you work when no one is watching and shows how you solve a problem (if you commit often).
My little hobby projects helped me get my job and I continue to make them. So if you need a piece of advice when looking for a programming gig, please have some sort of open source (GitHub, Bitbucket, Gitlab) contribution of code.