The Importance of Reviewing the Basics
Tags: computerscience, motivation, webdev, todayilearned
Published: 2020-03-18 03:28:56

*"I should know this."*

*"I don't really know why this works, but..."*

*"I don't need to review this. I've done this before."*


As a current CS grad student who also has a Bachelor's in CS, I often hear these little scripts playing out in my mind when I sit down to tackle coursework and new projects. In fact, these thoughts flooded my mind today as I started a course on CodeAcademy to learn some new skills.

In the past, I would have simply complied with these thoughts and skipped over of the introductory material. After all, as an ~experienced programmer~, I should not have to review the basics, right?

Yet today, for some reason, I challenged these ideas because I realized how wrong they really were.

Now don't get me wrong - when I say basics, I don't necessarily mean understanding what `int x = 3` means (yet, if that's what you need to review, by all means , review it!). On the contrary, reviewing the basics is all about slowing down and reinforcing your foundational knowledge of a programming language or concept.

For instance, I was working through an Intro JS course and realized that although I've completed frontend dev internships, I've never really stopped to dig into the differences between `let`, `var`, and `const`. After an in-depth tutorial on the MDN and a great overview from an article on Dev.to (s/o [Rob Lauer](https://dev.to/rdlauer/javascript-101-var-or-let-or-const-5epj)), I walked away more informed and - gasp! - a marginally better programmer.

But, outside of my self-satisfaction, why is reviewing the basics important?

* **Simply put, things change.**: New languages are created. Old languages are improved. People find more efficient ways to complete tasks. Reviewing the basics and seeing how they have changed can help to keep you up-to-date with the latest developments. 

* **Your foundational knowledge probably has gaps.**: I learned two of my favorite frameworks, Vue and Angular (in that order), during summer internships. As such, I know enough to be productive but that doesn't mean I have a true understanding of the syntax, best use cases, etc. Furthermore, if you are not a language-specific developer, you're probably using some languages and tools more frequently than others. Taking the time to review the basics, whatever level that is for you, helps you to strengthen those weaker areas. 

* **It enables you to make progress.** Building off of the last point, reviewing the basics helps you to create a stronger foundation to continue learning new things. It can be super tempting to just ignore some of the gaps in our foundations (i.e: me in college when I tried to implement A* search for a class without first understanding BFS and Uniform Cost Search). However, you can't out run your foundational gaps, as they show up down the line. By going back and solidifying the basics you give yourself a great launching pad to learn new things and avoid frustrating errors.

So, where do you go with all of this? Start by answering your "why" questions. Why do we care about `let` versus `var`? Why do we use BFS here but DFS somewhere else? Why am I using this specific module and is there a better one available? Reviewing the basics is not elementary, but fundamental!