My Path (Back) to Software Engineering

Posted by Alex Engelhart on December 20, 2019

Back in 2005, I entered college with, if not a clear vision for the future, at least an idea of what I wanted to do when I graduated. I was studying for a bachelor’s degree in computer science, which I was going to get in four years. I was studying Japanese, which I was going to use with my computer science education to find a job in the video game industry, either in the Pacific Northwest or possibly in Japan itself. All of this was, of course, going to be smooth sailing, because why wouldn’t it be?

So how is it that fourteen years later, I find myself with a sociology degree instead, and am now getting back into software development while living in the middle of Wyoming of all places? Well, ultimately it’s because I am really bad at predicting the future.

Failed Prediction 1: Tech jobs are going to be harder and harder to get, and I shouldn’t bother trying to get into the field.

It is no exaggeration to say that I have been interested in computers my entire life. I am told that the day I came home from the hospital after I was born, my dad sat me in front of his old Apple II computer while he played a baseball game on it. As I grew older I got interested in programming, and ultimately took all the programming classes available to me in high school. At that point in my life, I knew that I wanted to do programming full-time.

However, not long after I got to college, I started hearing about how corporations were outsourcing all of their software divisions overseas, apparently in a bid to save money. The conventional wisdom at that point seemed to be that before long, there were going to be no jobs available in technology, and that your best bet for secure employment in the future would be to find a job that required direct face-to-face interaction by its very nature. This, of course, was back in 2005, with memories of the dot-com bust still fresh in people’s memories but before the iPhone and the present online economy were even on anyone’s radar.

Thus, I made the decision to switch from a computer science major to a sociology major, with an eye to either become a social worker or get a job at a non-profit of some sort. Now I won’t say that I regret studying sociology - it gave me a much broader view of the world and a more nuanced understanding of the way people interact with institutions and vice-versa - but my prediction that I would have a better chance getting into full-time social work proved disastrously wrong. Meanwhile, the tech industry in the US boomed so fast that there were far more positions than could be filled.

Lesson learned: be skeptical of predictions that line up with your fears, as you are likely to overvalue evidence in favor thereof.

“But wait,” you say, “I live in #{location} and there are plenty of social work positions available!” Or, “You could have done #{thing} and been just fine in that field!” Well, you’re almost certainly right, but I ceded a lot of control over the course of my life as I was getting to the end of my formal education by making my next failed prediction…

Failed Prediction 2: The workflow that got me through my first three years of school - doing things at the last minute - was infinitely scalable.

Over the course of my education, I had been able to get by with doing my work at the last minute, relying on my understanding of the material, my letting assignments “percolate” in my mind, and the adrenaline of a fast-approaching deadline to put out a finished product in a short period of time. I justified this by saying that I was, in fact, working on things over the period where I appeared to just be slacking off because I still had them on my mind and was coming up with ideas.

The trouble is that this strategy relies on a few assumptions. For one, it assumes that you already know everything you need to know in order to get the project done; if there is any amount of research involved, you need to do so in enough time to allow those ideas to “percolate” as well. For another, it assumes that your workload is small enough that even if you fail to plan how much mental processing time you devote to each task, you can still get it done in a timely manner. Lastly, it assumes that you are the sort of personality that never gets overwhelmed under any circumstance - a personality type, I might add, that almost certainly doesn’t exist.

Without getting into too much detail, these assumptions did not pan out, and projects accumulated too hard and fast for me to keep up. While I did ultimately get my degree, I lost my chance at connecting with employers right out of college and thus had to move in with my family after school. Since my family had moved while I was in school, I wound up in an area that, while probably better for my mental health overall than my hometown would have been, had almost no jobs in my field or obvious networking opportunities.

Lesson learned: Momentum matters. Staying in motion can be more effective than time pressure. (Mind you, time pressure can be a good way to stay in motion; however, it should not be your primary tool).

Failed Prediction 3: My weaknesses, rather than my strengths, are what defines my possibilities.

Despite everything that happened above, and despite feeling like I had blown my chance of ever mattering as a human being in the future, I ultimately got a job in IT. The funny thing there is that even though I came into that interview without the level of technical know-how that I should have had, it was my willingness to learn and my commitment to customer service that convinced them to give me a chance. Sure enough, it was those skills that enabled me to succeed for as long as I did; I learned enough technical skills go handle the day-to-day tech support requests, help out with projects, and, eventually, work on the redesign of our website. It was the website project that ultimately reminded me of my affinity for code and gave me the confidence to make this leap into full-time software development.

**Lesson learned: Other people do see your strengths, even if you can’t. Learn those strengths and RUN WITH THEM.