2016 has been a transformative year for me. At the beginning of 2016 I had little interest in computers and had no intention of making software. I did have a blog (awesomedrifter.com) that I was writing to regularly, but wasn’t hosting myself. Career wise I was working a dead end menial labor job in a dairy, with part-time status and the threat of a looming lay-off.
Now, at the start of 2017, I am competent with multiple programming languages and frameworks. I now write software full time for a Vancouver based startup (Koho) with no shortage of work, and reasonable expectations to advance in my career. Software has been something I have improved at quickly and I feel comfortable considering it my vocation.
I didn’t really consider software as a career path until February of 2016. I was watching Eli the Computer Guy on YouTube and he did a video talking about coding bootcamps. I had no idea what those were until that video. The idea of taking a three month course and being able to get a job out of it sounded good to me. I took 4 years of university, majoring in chemistry, only to find myself with job options not much better than high school grads. This put the idea in my head, but I didn’t start exploring the idea immediately.
It wasn’t until I started reading about Ruby that I actually started investing time into programming. The emphasis on aesthetics in code Ruby had appealed to me. I did some C/C++ programming in university and those always required boiler plate code to even get a simple program to run. It seemed cool to me that Ruby would just work with nothing unnecessary.
I guess what really got my motivated to learn programming though was Matz and DHH (the creator of Ruby itself, and the creator of Rails, which was responsible for the popularization of Ruby). When I was introduced to programming in university the instructors would only talk about the mechanics of the code. With Ruby there is talk about elegance and making the code read like natural language. Listening to DHH I felt we saw the world in similar ways and if he found programming rewarding than maybe I could too.
At the time I was focused on developing my writing skills with hopes of making that a side hustle. I was blogging regularly and started reading up on writing fiction. I was starting to feel more comfortable writing longer pieces and was reading “Write Great Fiction, Plot and Structure” by James Bell, who was a former lawyer. I knew it would be a lot of work, but the idea of having a hobby I enjoyed that I could make some money with was appealing.
When I heard people talk about the artistic side of programming and seeing what programmers made I figured I should give writing Ruby a chance. I started doing tutorials and got some books on Ruby, I then started learning about Rails and did Micheal Hartl’s Rails Tutorial, two times actually. I had no idea what I was doing, but I dutifully followed the tutorial step by step.
I also started watching SimpleProgrammer (aka John Sonmez) on YouTube who recommended having a programming blog, which lead to this, Eric on Rails, my second blog. As much as I like being Awesome (or Awesome Drifter when Awesome is already taken) on the internet, I felt it might be useful to have a more “professional” online presence if I was going to start out in a new career.
It was also around this time that my first blog, in a round about way, lead to an opportunity to get into financial planning. Someone from my gym, who read my first blog, knew someone looking to bring fresh blood into their company, and told me about it because he read my blog. From a monetary perspective the role seemed pretty good, comparable to software. It was for a more sales oriented role though, which I feel doesn’t cater to my strengths as well, since I am pretty introverted.
It was nice having conversation at the company. When I turned down going further down their process I realized I was committed to software. While I might not have been a good fit for the company, I would have tried a lot harder to make it seem like I was if I talked to them a few months prior. It was a chance to make a lot more money than I was making before at least.
Feeling confident in my choice to pursue software, but having my skills still far away from being able to make money with them, I started to look into coding bootcamps. Deciding on one was pretty easy for me. Ruby and Rails were what got me into coding in the first place so I wanted to further study them. Although I have never been I didn’t want to move to Toronto for some reason I can’t quite explain. I also didn’t want to go to an American bootcamp due to the poor CAD to USD exchange. With this criteria CodeCore located in Vancouver was pretty much my only option.
I had some money saved up by living at home and not owning a vehicle. I was actually considering getting one for a while, since I wasn’t sure what else I could do with my money. In hindsight I am really grateful I didn’t end up buying one. Moving to Vancouver from Thunder Bay wouldn’t have been viable if I made that purchase.
I wrote extensively about my experience in the bootcamp already. It was a really good experience by itself and I got to meet a lot of cool people. I ended up getting a job at a cool company straight out of it.
While getting a job right away was the case for me and a few of my classmates it shouldn’t be regarded as the norm. The advice giving to me was to have three months of living expenses after the course. After making the decision to attend a bootcamp I started living a really disciplined lifestyle. I cut out every unnecessary expense I could before and during the bootcamp to make that happen. I didn’t want to move back to Thunder Bay because I ran out of money before finding a job.
I feel if approaching finding a job with a do or die mentality three months of living expenses should be enough to get most students by. Of course even going through a bootcamp getting a job is never a gimme. You will need to show you are dedicated to the craft and serious about improving your skills independently if you want to succeed. As much as you might learn in a bootcamp, three months isn’t enough to develop the skill set and employers know this. At one company I interviewed with it was phrased “There is no place for a junior developer who is going to stay a junior”. Luckily I choose a challenging final project to dispel this concern.
The last few paragraphs might seem like an aside, but I am leaving them in. I feel it expresses my mind set that has let my do relatively well for someone who went through a bootcamp. I also don’t want to inflate anyone’s expectations if they aren’t willing to work hard. While I would strongly recommend a bootcamp for beginners who can afford it bootcamps aren’t, by themselves, a ticket to a good career either.
Since graduating from a bootcamp and starting to work as a developer my mindset is a lot different from when I started. I wrote that what drew me in was Ruby’s notions of aesthetics in good. While these are romantic ideals to strive for I have abandoned them after being faced with the complexity of real production systems. With large amounts of money and effort riding on the code base, reliability and business concerns take precedence. Error checking and logging are essential, but they do take away from the beauty of the code.
I guess beauty in code is a vague notion, so I’ll clarify what it means to me. I think code is beautiful when it abstracts aways complexity, leaving only what is essential to solving the problem at hand, while making no assumptions. Much like a beautiful melody in music gives the impression there are no unneeded notes.
Now after writing software for a while I think code that is reliable, easy to maintain, and testable is far more important than aesthetic notions. If this means you have to write 12 extra lines, so be it. Getting the job done is far more important than satisfying abstract ideals that are unique to each individual. Still without the notion of these ideals being able to exist in code I probably wouldn’t have gotten into software in the first place.
Overall 2016 for me has succeeded a lot of my expectations. I didn’t think I would be able to switch and establish myself in a new career so quickly. Although I still have a lot to learn I feel I am on the right path to achieving my goals. Right now it seems like all I have to do is grind out this skill set. While this means I am faced with new challenges on a daily basis, it is simple in the sense I know what I need to do, compared to the uncertainty I was facing at the begging of the year.