Konstantin Kuzmin

One Year Later

March 22nd, 2021

I was between jobs at the start of 2020 when I decided to learn a little bit of programming. My intention was to keep myself busy and to stay sharp while I was looking for my next job. What I didn't realize at the time is that I was about to embark on a journey that was going to force a hard-turn in the trajectory of my career.

I had just read the book Ultralearning, in which the author describes strategies to pick up skills and learn material at an aggressive pace. He first gained notoriety for his method in 2012 when he attempted The MIT Challenge, where he would audit the entire MIT computer science curriculum online, in a under a year.

After finishing the book, I was thrilled by the opportunity to use my time-off to learn something new. I began looking for Ultralearning projects of my own, but nothing resonated with me as much as Scott Young's original MIT Challenge. I remember thinking to myself that if he could finish the work in less than a year, then I could probably do it faster. After all, I already had an engineering degree so I could skip through the material I'd already learned to focus on what was really important. Ultimately, he and I had divergent goals in our respective challenges. He was out to prove he could simulate the curriculum as closely as possible; I just wanted to learn to code.

Before I began, I had to make some adjustments. I knew that if I was going to give this an honest effort, I had to build a system that was going to keep me accountable throughout the entire process. I didn't want to rely on work ethic alone because I knew that my enthusiasm could waver even with the best intentions.

Here was the plan: I would shift my sleep schedule by a few hours and do all my MIT work in the morning when I'm at my best. I would isolate myself from the world and work six-to-noon, seven days a week, with a near robotic consistency. I knew that if I could turn the work into a strong habit, keeping up with it wouldn't be hard. I knew I would be successful if I could turn it into something I just did, instead of something I had to do.

Now, to be perfectly clear, I hadn't committed to anything long-term when I first started the MIT Project. I wasn't sure how long it would be until I would land my next job, but I was actively looking so I figured it would be a matter of time. I saw the project as something that could keep me busy and teach me some career skills during my job search; not necessarily as something I had to see through to the end. To me, if I could learn some things that would make me better at my next job, the project would be a success regardless of how far I took it. What I didn't yet know is that my next job wasn't going to come as quickly as I was expecting...

Code in the Time of COVID

Things started to change quickly once March 2020 rolled around. Over the course of a single week, I went from having several interviews lined up to having no career opportunities for the foreseeable future due to the pandemic. While the financial uncertainty was certainly scary, I was truthfully excited to have more time with the MIT project. It had been about two months since I started, and I was loving every minute of it. I saw the lockdown as an opportunity to double down on what I had been working on. It was at this point I knew I would not be going back to work as a mechanical engineer; my next job would be in software.

This was not a decision I took lightly. I spent four years in college studying to become a mechanical engineer. I had three years of experience working in the medical device industry. Choosing to make the switch to software engineering meant hitting the reset switch on my career, in a sense. I took a massive risk by delaying my return to the workforce so that I could build out my software engineering skillset. It meant taking a step back so I could take the next step in the right direction. And it was the right direction because I had absolutely fallen in love with programming.

It didn't take me much time to figure out that software engineering is what I should have been doing with my career all along. I grew up on computers so working with them has always clicked for me. Everything I was learning felt natural to me and I couldn't get enough. I didn't want to go on wondering what if.

Even now, I believe that software engineering is the skill I have the highest ceiling for. I love that it gives me the chance to be creative, but also demands technical problem-solving. I love the satisfaction that comes from taking an idea and turning it into something others can interact with. I love the fast pace at which software moves and the challenges that come with it. I love that there is a low barrier to entry for those who want to build exciting projects and publish them to the world. I love that educational resources are readily available and that all the tools needed to get started are free. I love that I can become a better programmer every day I choose to work on a project whether I'm employed or not. I know that with enough hard work, it won't be long before I find the opportunity I'm looking for.

Moving on from MIT

After I doubled down on my commitment, things were business-as-usual for a while. I continued my education through MIT OpenCourseWare and by mid-summer I had completed 7 courses in full. I learned about software architecture, algorithms, data structures, recursion, computational complexity, programming paradigms and more, I understood what it meant to write clean, maintainable code in both Python and Java, and I was committed to perfecting my craft in the face of ongoing challenges. In other words, I was well on my way to becoming a software engineer.

It was also at this time I started running into a bit of friction. While MIT served me incredibly well at the start of the project, the curriculum was starting deviate from my ultimate goal. My focus was to learn and master the skills needed to get hired as a software engineer. To me, it seemed that the remainder of the MIT curriculum wasn't going to serve my goal as well as some other things could. I deemed that there was more immediate upside in learning new technologies and practicing building applications. For this reason, I decided to put the MIT project on hiatus in favor of starting something new.

The time had come to build my first major web app. I knew I was only going to get so far doing small projects for classes. I had to start fleshing out my portfolio so I could have something to point to as a culmination of my progress. I've always had a fascination with music theory so chose to create a music theory reference app to make complex musical structures more accessible to composers and songwriters. It uses algorithms to compute relevant chords and scales from given musical contexts. Since music is something I have always been passionate about, it made a lot of sense to combine my love of two things to create an app I always wish existed.

It was around the time I started working on this project that my progress began to really accelerate. In a short span of time, I learned the ins and outs of web development and a number of important libraries and frameworks. I was starting to round out my skillset and by the start of 2021, I was felt confident that I could succeed as a developer.

Since then, I've started to ease into applying for jobs and testing the market, but my number one priority is still to improve my skills as a software engineer.

What I Wish I Knew

I am not going to pretend that everything I did in the last year was a perfectly efficient use of my time. Education, especially self-guided education, is this nonlinear process of traversing a complex network of ideas, not a simple series of lessons. The choice to learn something now is the choice to prioritize that thing over another. I don't necessarily believe that there's a wrong sequence to learn things in, but I do believe that some are better than others. It took me a while to realize that it was my responsibility to navigate the network instead of following a set curriculum. I think that's part of the reason why I was making more progress after I stepped back from MIT.

If I had to start over today, I would be more conscientious about spending too much time working on one thing. My music theory app was an ambitious project that took several months to complete, but I could have done a number of smaller projects in that same timeframe and potentially learned a lot more. On the other hand, the skills that my app demanded probably wouldn't be as developed if I chose to go for quantity instead. It's the classic dilemma of whether you focus on learning a lot, or a few things very well. Of course, the real answer is some nuanced position in between, but for the time being, I believe I have erred on the side of not spreading out enough.

Where to Now?

Without a doubt, the last twelve months have been some of the strangest I've ever experienced. It's been a time of great focus, but also of great uncertainty. I've been both engaged by and lost in everything that's defined the last year for me. I set out to meet an exciting, ambitious goal but I had to make many sacrifices along the way. I hold this time in high regard, but I also yearn for the next big moment in life. In the meantime, there's nothing to do but to keep learning.