personal brand logoMatt McCarley
  • Front-end developer
  • UX designer
  • Wannabe CS nerd

For employment opportunities, potential collaboration, or just to connect—email me at

December 21, 2018

2019: The Year I Teach Myself CS

Failed Interview

I was recently interviewed for a front-end engineering position. I passed the first two technical screens (phone call and codility challenge), but ultimately failed the final technical interview with the head of engineering. Thankfully, he responded with feedback when I asked for it.

Here is what he wrote:

I thought that you showed a lot of promise, but right now we’re looking for engineers who are a bit more senior. I might spend some time brushing up on some CS theory (runtime complexity, for example) but I definitely encourage you to reach back out in 6 months.

Being Self-Taught

I wrote my first line of html in 2015. I was working for Medicaid as a Medical Program Specialist (I rubber stamped special Medicaid spending), when I stumbled upon freeCodeCamp. Eighteen months later, I started working fulltime as a front-end web developer.

Since 2015, I have been acquiring a tremendous amount of new skills and knowledge. I’ve gone through curricula at freeCodeCamp, treehouse, codeacademy, pluralsight, egghead,, and I’ve built three side-projects using the latest stack to try to keep pushing myself. Yet there are still large gaps in my knowledge—especially when it comes to computer science fundamentals.

Filling the Gaps

Each year, I set one major goal for the year and give that year that title. 2018 was the year of JavaScript.

2019 is going to be the year of Computer Science Fundamentals. Here is my plan for filling the gaps.

Computer Architecture
Alglorithms and Data Structures
Math for CS
Operating Systems
Computer Networking
Languages and Compilers
Distributed Systems

Learning in Public

As I go through this plan, which was borrowed from, I will be “learning in public.” A concept I recently heard on the podcast. This means I will be writing articles throughout my learning process in an attempt to explain the concepts I’m learning and also to make a stronger connection between them and the skills of a web developer.