I really do like the phrase “developer origin story”. For starters, the shades of Marvel simply cannot be ignored (superpowers pending). Secondly though, it’s fun to speculate whether or not people in other occupations similarly recount how they started out - know of any stimulating “toll booth operator origin stories”? There seem to be a few common routes into professional software development, and I don’t suspect I will break the mould with my narrative.
I do not have a STEM background, and I certainly never considered becoming a programmer when I was growing up. I got a degree in history, and in England, this means you can actually still expect reasonably good job prospects, as long as your university is a member of the Russell Group, of course. So with that in mind, either I (over) paid a coding bootcamp to swiftly remodel me into the superstar engineer that my city both needed and deserved, or I must be one these self-taught developers.
Given I used to see no point in spending money unless it was for skiing or for sustenance, and couple that with my shortage of enthusiasm for even more schooling, I basically realised that my best option was to embrace my inner autodidact by picking up a book and opening up an internet browser. To be honest, I think that most programmers will, in some way, shape or form, allude to a similar awareness for their own progression. Self-discipline is pretty much the bare minimum required to become a proficient developer. Applying oneself and being resourceful isn’t just a route into software development, it’s a mantra for success in the field, lasting an entire career.
Towards the end of 2018 an opportunity presented itself for me to start writing software professionally. As it was put to me, not unreasonably: there was a provisional job offer if I was able to teach myself web development fundamentals and practicably demonstrate my understanding, within three months. Simple. So, I got to work and did just that. Up until this point, I had explored elementary programming in python - I remember reading Automate the Boring Stuff and Python Crash Course. So I had to essentially forget all of that, pick up some ruby, and get started on unlocking the secrets of the rails framework. I was encouraged to begin with Michael Hartl’s popular tutorial (which at the time was free), but beyond that I was really left to my own devices.
So what did I actually do for three months? I started an inexpensive Team Treehouse course on the basics of the ruby language. Having already partially covered beginner programming in python, I didn’t spend too long on this - I don’t even think I finished the course, I just wanted to get started on actual web development with rails. This is where things got more challenging.
I followed the Hartl tutorial once through, and I remember finding it quite overwhelming - there was lots to it and I often wasn’t satisfied just accepting many of the abstractions and particularities that constituted the “magic” of the rails framework. For instance, I initially took umbrage at the wonderfully simple-looking Action View Form Helper, largely because I just didn’t know what was going on under the hood. Note I have since come to terms with why this Helper is, well, helpful. At the time though I was frustrated because I wanted to know exactly how and why it worked, and as a novice I didn’t really know where to begin trying to unpack it.
After spending a few weeks fiddling around with rails, reading blog posts, watching youtube tutorials, and generally just not really understanding how most of the framework worked, I stumbled upon Launch School, specifically their free e-book Demystifying Rails. This was the “Aha” moment for me - that book made everything click. Launch School describe themselves as the “slow path for studious learners”, with a focus on demonstrating how abstractions work from the bottom up. I found this teaching style incredibly useful, and it enabled me to piece together exactly how rails worked, sans magic.
It’s one thing learning about web development, but I still had to prove my mettle. My prospective employers asked me to design and build a rudimentary web app. I’d be lying if I said I’m gutted I cannot find any trace of this project. I remember a few of its trademark selling points. Instead of using the Devise library like everybody else, I thought it would be much better to run with my own authentication system - this shows initiative you see. There was a Post model because of course there was, and it might have been mobile responsive. In short, it was woefully bad. It helped me secure that job though.
Becoming a software developer is an achievement I am proud of. Two years ago I had no professional programming experience. These days the code I write is consumed by end users all over the world. If there’s a message here, it’s that dedication and no small amount of patience is necessary to break into software. If you possess both of these and are able to apply yourself, you will make it.