Why I Left My Job and What's Next
Hi, I’m Matt Drake. I’m a network engineer turned data analyst turning software developer. A couple months ago, I left my public sector R&D job in order to work on a CS degree full-time and begin a new career as a software developer. Here, I’ll explain my short-term goals and my plan to achieve them.
I started college after a 4-year detour in the US Army, where I was the sergeant in charge of a computer networking squad. My first major was CS. I made A’s in a handful of courses and enjoyed the material. However, I fell in love with microeconomics and convinced myself that I would do a PhD in Economics. So, I took as many math and stats classes as I could (that’s what impresses Econ PhD admissions) and did a bunch of undergrad research. This helped me learn something important about myself: I don’t like research and I don’t want to be in academia. It’s great that I learned it, but with a year left in college, it was a little late.
A BS in Economics isn’t a sure ticket to a job. It’s probably better than English or Film, but definitely worse than any form of engineering, science, or Turf Management. I applied to 7 master’s programs in Data Science and got into all of them except the one I wanted to go to. It seemed dumb to waste thousands of dollars and a couple years to do a degree I wasn’t excited about, so I got a job as a data analyst at the Bureau of Economic Analysis. I love economics, they estimate GDP, what could go wrong?
I worked there for around 2 years and all things considered, it was a positive experience. I worked on a team responsible for the backend of a survey processing system. BEA gets a lot of survey responses and the data always needs cleaning. Even though I wasn’t a developer, I wrote a lot of SQL and Python code and came to realize that I enjoy using software to solve real world problems.
If it were financially viable, I would have finished a CS degree at this point. Instead, I got a different job that required me to do a lot more programming. I was mostly building internal tools and machine learning pipelines, and I learned a ton. Ultimately, the environment wasn’t a good fit for me. Most of the projects culminated in PowerPoint decks that got presented and promptly forgotten about. I need to be in a role where I’m delivering results in order to feel good about my workday. Therefore, I’m taking 9 months to finish a CS bachelor’s degree before starting a new career as a software developer.
Why not just work on changing careers in my free-time?
For a while, I thought this was the only possible approach. I built some projects in React/NodeJS after work but it became clear that my pace would take forever to get to the skill level where I’d be comfortable applying to engineering roles at Real Companies. I was also fairly inconsistent because I found my current role so emotionally draining. I work best when I’m all-in, so I think that’s the best strategy for me to try.
Why earn a degree?
I fully believe that it would be possible to get into a software developer role without doing a CS degree. The fact that so many developers don’t have one is clear proof of that. The reasons I chose to do one are:
- A CS curriculum can help me avoid blindspots that I might miss by self-teaching
- The combination of my prior CS credits and the program I’m doing makes it possible to finish the degree in 9 months
- This is a very low opportunity cost to avoid negative perceptions during job searching
The last point is unfortunate and like I said before, I 100% believe that a degree is not required to be a software developer. But not everyone thinks that and it seems to be a less common belief among HR people that scan resumes. There’s an argument that that could actually work as a filter in my benefit - companies where they filter out non-CS degrees are companies that I wouldn’t like to work at anyway. That’s entirely posible, but with such a low opportunity cost (for me - I’m not making general statements), it doesn’t seem like a necessary risk to take.
Where do you want to work?
I want to work with smart, driven people on software engineering challenges. I’d prefer to work on a product-focused engineering team, but ops & internal software are extremely important as well. The team matters a lot more to me than the product.
That’s it, really. I want to be able to help the project succeed and learn from awesome co-workers along the way. Big company or startup, I just want to work with optimistic people that are great at (and care about) their job.
The plan has a lot of parts. First, I’m going to finish my CS degree and excel at it. In addition to coursework, I’m going to launch a few non-trival projects. I think that this practical experience of shipping real projects will complement academic work nicely. I have an incredible opportunity, and I want to wring every drop out of it. Plus, some of the stuff I build might be good!
I’ve seen a lot of people talk about “learning in public” - I think this is a fantastic approach and I’m going to do it too. For me, there’s two parts - streaming and blogging. I’m going to stream on Twitch and my blogs will be right here. Between the two approaches, I can improve my technical communication skills (verbal and written) and have fun in the process.
About blogs, there’s more than enough blogspam on the internet. I’m not interested in writing blogs as though I’m a professional explaining the best way to do things. I want to write blogs in the style that Julia Evans has perfected - just learn something interesting and then write about it. No clickbait, no edicts, just cool technology.
The last part of the plan is to grind algorithm questions. I dislike it as much as anyone, but it seems like a reality of the industry and I’d rather be prepared than not.
That’s it. Wish me luck!