Learning Deep v. Learning Wide

In this article, I am going to make an argument for learning one topic deeply as opposed to many topics generally and my reason for this is so that programmers beginning their journey can perhaps be convinced of this to take advantage of the exponentially increased breadth of concepts deep learning will allow them over time. That’s right, learning more concepts in the same language as opposed to the same concepts in a different language.

The building blocks. Sometimes you have more, sometimes you have less, but generally, they are the same.

As I just mentioned, this will predominantly be directed towards web developers just beginning their learning journeys, setting forth to find their first jobs. It’s easy to get get the wrong idea from job descriptions, and we often get carried away by the overwhelming weight of knowledge that can be thought to be expected of ourselves.

Mostly JS, Git, and SQL. This is actually pretty damn reasonable.

Continue reading and let’s see if we can get that weight off your shoulders.
As a web developer just starting out, it is likely that you learn HTML, CSS, and JavaScript. You also quickly realize that these are minimum requirements for the industry. And so you seek to migrate to another technology to diversify your knowledge base.
I would say wait. With Javascript, there is so much you can learn without needing to pick up another language.

There are more… many more, 😂

With JavaScript web development, you can begin learning front-end libraries like React which is the most popularly used front-end app library in the industry today, you can learn more about it here. You can use Node with ExpressJS which is one of the most popular web app backend frameworks in the industry. You can even start creating mobile apps to be published on your favorite phone’s app store using ReactNative and ReactRedux. So the concepts you learn by knowing those technologies well can easily be conveyed to technologies in other languages because you’ll know what you need to make an app work with those technologies so when you develop an app with another language, you’ll easily be able to see conceptually what you are missing from that app and thus be able to ask the right questions to find the solution with that different library/framework/language.
React is rather unique in its interactions with the DOM by using the Virtual DOM, but still, JavaScript also has other frameworks like AngularJS, and VueJS which both interact with the DOM differently than how React does using its Virtual DOM. Additionally, there is always JavaScripts built-in API for interacting with the browser’s DOM.
So, as you just saw, a vast majority of the web development concepts you could possibly know can be covered simply by knowing JavaScript very well.

Erich Gstrein — Self-created diagram

Well, what about computer science? Algorithms and Data Structures I mean. Well, they can all be done using the JavaScript language and if JavaScript is your main language I highly recommend you learn all those Algorithms and Data Structures in JavaScript BEFORE you move onto another language. After all, how much more time will it take you to learn another language as well as React and Node allowed you to know JavaScript? And if you learn enough Algorithms and Data Structures as would make you comfortable in a technical interview, with JavaScript, how simple do you think it would be to learn how to write those algorithmic solutions in another language, knowing exactly what you need in your solution before you even begin writing it in any other language?

No specific syntax was used in these explanations.

By simply learning all these things well with plain old JavaScript, you’ll learn all the concepts you will need to know is all I mean. That’s the important part. Once you know those concepts, that is, to have the ability to explain to someone how something works simply, you can succeed in making something work even if you don’t know a particular language or technology because you will know what to look for, the questions to ask, and what is going wrong or right.

Standards are common across technologies. Just not as concrete as they are in other tech layers.

For example, if I know I will need two variables and a loop to solve an algorithm with the two-pointer approach but have no idea how to write Python, wouldn’t I just need to search for how to write loops, variables, and functions to write the algorithmic solution in Python? This is the ability that learning one technology deeply allows you.

Learning many technologies generally is actually a distraction from learning new concepts because all learning has an associated time cost.

Sources:

  1. What is React.js? — https://coreyjameslynch.medium.com/what-is-reactjs-17a5db6f53c2 — Corey Lynch
  2. Node.js — https://nodejs.org/en/
  3. Most Popular Backend Frameworks — 2012/2021 — https://statisticsanddata.org/data/most-popular-backend-frameworks-2012-2021/
  4. Express.js — http://expressjs.com/
  5. React Native — https://reactnative.dev/
  6. React Redux — https://react-redux.js.org/
  7. Introduction to the DOM — https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction
  8. Virtual DOM — https://www.youtube.com/watch?v=N3AkSS5hXMA&t=1s — Programming with Mosh
  9. AngularJS — https://angularjs.org/
  10. VueJS — https://vuejs.org/
  11. Algorithms and Data Structures — https://leetcode.com/problemset/all/

Frontend Software Developer and Security Technician with experience in Ruby, Rails, JavaScript, and React. Flatiron Software Engineering Alumni.