February 25, 2021
Rags to Rayman
The first few weeks after quitting my job and resolving to become a software developer were marked by relief, surety, and boundless optimism for the future. Suffice to say, these feelings didn't last long. In short order, they gave way to practical considerations and the ever-present weight of reality.
I was left facing the daunting task of turning my software development career from an aspiration into an accomplishment. And the question of the day, every day, was:
Where to start?
This is a question that likely dogs veteran developers as often as new entrants, because the landscape of software development evolves so rapidly. There seems to be a new best-framework-and-or-language-since-sliced-bread every day. Should I be refining my understanding of C++ (bloated, controversial, and ubiquitous) or taking courses in Rust (all the rage but lacking widespread adoption)? Is it worthwhile to spend time on dissecting the guts of a computer, or should I just expect high-level frameworks to take care of everything for me? As you might imagine, uncertainty abounds.
It quickly became evident that success would depend as much on knowing what to learn as it would on the learning itself. And yet, for someone in my shoes, there are no simple answers.
Perhaps the easiest (or most popular) path into software development is through a bootcamp. Going from zero to hero in just three months for the price of a single semester of college? That sounds interesting, anyway. Unfortunately, the vast majority (maybe all, if my search is any metric) of bootcamps are targeted at one specific role: web development.
This makes sense, of course. The biggest names in tech are Internet companies first. This includes the vaunted FAANG (Facebook, Amazon, Apple, Netflix, and Google) as well as other behemoths like Salesforce and LinkedIn. The bootcamps make money when their students get jobs, and there are more opportunities for their students to get jobs in web development than in any other specialty.
For those looking to go into other specialities--gaming, virtual reality, and embedded computing, in my case---there are no comparable programs. As an engineering manager at Riot recently lamented, there are few bootcamps that focus on the fundamentals of development. Again, this makes sense. Computer science is hard (as I am regularly reminded), and it would take much more time to cover the entire subject than it would to get someone up to snuff making websites. A poor investment from a commercial perspective.
One promising alternative is the Master's of Computer and Information Technology (MCIT) offered by the University of Pennsylvania. The program is pitched as a condensed computer science degree that can be completed in a year and a half. It has solid placement statistics and (crucially) focuses on core topics like data structures, mathematical foundations, and algorithms.
But the best part of a program like this, and my chief reason for wanting to attend, is the structure it provides. Indeed, I have already started reaching out to program professors to obtain course materials (because I'm just that DIY guy), and what I have seen so far is enlightening. At the very least, I think I have found the starting line.