DEV Community

Cover image for If I were to restart JavaScript again from scratch then I will follow this roadmap.
Ankur Tyagi
Ankur Tyagi

Posted on • Updated on

If I were to restart JavaScript again from scratch then I will follow this roadmap.

Every time I work in a new JavaScript framework I learn a bit more about JavaScript Fundamentals.

Every time I work in a new JavaScript framework I learn a bit more about JavaScript Fundamentals.

If I were to restart Javascript again from scratch then I will follow this roadmap.

A Thread... pic.twitter.com/LptUXS7jui

— Ankur💻🎧💪 (@TheAnkurTyagi) October 6, 2021

If I were to restart Javascript again from scratch then I will follow this roadmap.

It is worth noting that as a beginner in the subject, much of the learner’s interest lies in the hands of the tutor.

An inefficient tutor can pretty quickly lead to the learner losing interest in the subject.

This can have implications for your career growth.

JavaScript basic steps:

  • What is JavaScript?
  • Declaring JavaScript Variables: var, let, and const
  • Basic math in JavaScript — Numbers and operators
  • JavaScript syntax
  • ES6 let VS const variables
  • Arrays, Data Types, Strings
  • Conditionals & Looping code
  • Object basics
  • this
  • Objects and Classes
  • Functions & Scope
  • Functions — Reusable blocks of code
  • Function return values
  • Arrow Functions
  • Reference vs. Copy
  • Inheritance in JavaScript
  • Working with JSON data
  • JavaScript Dates
  • JavaScript Timers
  • DOM & Events
  • Asynchronous JavaScript From Callbacks to Promises, to Async/Await.
  • JavaScript Event Loop
  • UI Events
  • Forms, controls
  • Document and resource loading

Advanced Topics:

  • Functional Programming in JS
  • Advanced Working With Functions
  • Closures
  • Regular Expressions
  • Unicode in JS
  • Object prototypes
  • Storing data in the browser
  • ES6 Modules
  • Object building practice

What many JavaScript students make mistake is that they keep on reading JavaScript tutorials one by one, and do not implement any of them.

Time to build more projects:

A Simple and Effective Way to Learn and Practice JavaScript:

JavaScript runs over the web today, no doubt & for every front-end developer, no matter if already experienced or at the start of your career.

Frameworks come and go, but JavaScript will stay Forever.

Projects You Can Build With Vanilla JavaScript.

If you are going for your next interview then I encourage you to check my blog where I shared

12 Common JavaScript Questions I Used to Ask in Interviews:

If you like this.

I encourage you all to sign up for my newsletter.

It's free.
You can ask me your questions via email.

Check out the latest edition ⬇

The 2-1-1 Developer Growth Newsletter by Ankur

Thanks for reading.

If you’re a regular reader, thank you, you’re a big part of the reason I’ve been able to share my life/career experiences with you.

"Don't miss out" Follow your mentor on Twitter 👉 TheAnkurTyagi

If you like this you might be you are interested in my eBook as well.

I have written a book for developer growth & shared my 12+ years of experience.

Awesome feedback I received from the community. Check out the book below.

Grab the book now... ThePrimeGuide

book.png

In the end,

I would say the better you understand why and how JavaScript works and doesn’t work.

The more solid your code will be...
The more you’ll be able to effectively harness the true power of the language...

Happy coding.

Discussion (43)

Collapse
sakko profile image
SaKKo

I love how you arranged everything.
People have different ways to learn.
It's all about learning and not stoping.

Happy coding

Collapse
tyaga001 profile image
Ankur Tyagi Author

Thank you

Collapse
damiisdandy profile image
damilola jerugba

😂😂😂😂 this comment section is filled with people that have no idea what abstraction is.

I get it’s painful to see that you spent thousands of dollars on a degree and people only watching a $10 course and reads some dev articles is considered on the same playing fields as you… but commooonn a degree is just a sheet of paper to try and prove that you have knowledge on something, it doesn’t automatically mean you truly have knowledge on that subject 🙂.

Self taught or not, even you with a degree most of your knowledge is gotten from you reading personally.

So please stop the gate keeping and reduce the toxicity. ✨🌈

Collapse
johnnymccodes profile image
johnnymccodes

abstraction is when you just use typescript, right?

Collapse
damiisdandy profile image
damilola jerugba

Hehehe, just went to your profile you really love typescript, and nah abstraction isn’t just typescript

Collapse
damiisdandy profile image
damilola jerugba

My roadmap to JavaScript was so weird, I knew Python then a learnt ReactJS 🤡, as time went by I became well versed in JavaScript and now have a job writing it.

Collapse
vijayst profile image
Vijay Thirugnanam

JavaScript is really difficult to learn because there is so much to learn. All of that is not required to build a web app. As an integrator who puts together a web app using various libraries and frameworks, I don't see a need to learn all the nuances. Yes, I flunk interviews. But I have developed and am maintaining a robust source code that other developers can understand, if needed. So, learn JavaScript the way you want to. There is no recommended path that I can think of.

Collapse
z2lai profile image
z2lai

I think you got too many "fundamentals" in your list. The fundamental concepts that need "understanding" in order to develop anything should be pass-by-reference vs pass-by-value, lexical scope, execution context (hoisting and this), and asynchronous JS/event loop. The rest of your list is just learning syntax or working with specific APIs which you can learn about when you need to use it.

Collapse
glowkeeper profile image
Steve Huckle

clickbait article

Collapse
lluismf profile image
Lluís Josep Martínez

As many others.

Collapse
fbolaji profile image
Francis.B

To be honest this is the exact road map most programming languages will take you through.. as you get involve in more and complex javascript applications or projects, you will learn to apply different aspects of javascript you will need to resolve design and architectural flow of the project. In my opinion after learning and understand how javascript works and interact with html, css and etc. I will suggest that you learn modular, class and prototype patterns very well before diving into frameworks.

Collapse
ihtesham_haider profile image
Ihtesham Haider

Thanks 👍🏼😊

Collapse
egotr profile image
Luong Van Nghia

Why don't you mention TypeScript dude ?

Collapse
johnnymccodes profile image
johnnymccodes

TYYYYYYYYPE

SCRIIIIIIIIIIIIPT

Collapse
tonyedgal profile image
Tony Edgal

@peter_brown_cc2f497ac1175
Mr fundamentals and cs degree.
It's funny how you read and gave this article engagements without addressing a big problem with this roadmap.
Objects, this and classes before functions and scopes.

I guess you've been too busy looking for unimportant things like people with no cs degree.

@tyaga001 I personally think learning methods before basic function is borderline mentally suicidal.

Collapse
peter_brown_cc2f497ac1175 profile image
Comment marked as low quality/non-constructive by the community. View Code of Conduct
Peter Brown

Truthfully the 1st step to understanding a new programming language is to understand the way its interpreter and or compiler operate. What steps does it take? What affordances does it give? Next understand core language constructs apart from syntactic sugar. Before even getting to this point though one need a firm understanding of the fundamentals which is why no on without a degree in CS or EE or CE has any business writing a single line of enterprise code. Bootcamps will not give you sufficient theoretical knowledge nor will being self taught, unless you are some genius level coder and even then you will be stuck in an industry that can just as easily offshore your job to some third world country. Degrees DO matter.

Collapse
lukeshiru profile image
LUKESHIRU

🤣 r u ok, bro? There are excellent devs out there that don't have a degree and they don't know anything about how the compiler/interpreter they are using works and create amazing apps, and also there are lots and lots of devs with a degree that don't know how to create even a "hello world" with any modern technology, but hey! They know that JavaScript is single threaded and has an event loop! WOW!

Degrees have nothing to do with knowledge, what matters is what people actually know, and said knowledge is measured in quality, not quantity.

Collapse
peter_brown_cc2f497ac1175 profile image
Peter Brown

We show 95% of our career worth in those 5% of situations. These situations generally involve a deep knowledge of interpreteors compilers garbage collection or some other advanced topic. Those without the required training are not equipped to face these technical challenges. Just because one has a degree does not mean one is qualified, but not having the degree is an immediate disqualification. This is true for all high level professions. Lawyers, doctors, architects, dentists, accountants and the list goes on and on.
I come with facts and you attempt to recant my words with cliche, disrespectful addresses and other such constructs.

Thread Thread
lukeshiru profile image
LUKESHIRU • Edited

Not having the degree is an immediate disqualification.

And then:

I come with facts.

All in the same comment 🤣 I would love to see the proof for those "facts". I have 10 years doing WebDev, nobody asked me for a degree, never. I moved from my country to the US thanks to my work, again without a degree. I gave talks and classes to folks with degrees that didn't knew the things I knew at that time. The only "disqualification" I see is from folks like you, that try to gatekeep a profession that moved past lawyers, doctors, architects, dentists and accountants and actually looks for people that has the knowledge instead of having the "degree". I understand that maybe you're one of those folks that actually has a degree, but that doesn't give you the right to say that folks without one should be "immediately disqualified".

Thread Thread
peter_brown_cc2f497ac1175 profile image
Comment marked as low quality/non-constructive by the community. View Code of Conduct
Peter Brown • Edited

I do much of the hiring where I work and not having a degree is in fact an immediate disqualification. Computer programming is an engineering discipline and as such requires in general an engineering degree especially if you want to operate at the elite levels. This is not about someone being better than someone else. All humans should have equal respect. That being said the individual that is without a degree cannot achieve the highest levels in the industry. It is not a commentary on their personhood but it is a reality of the situation. I'm sorry that offends you. perhaps you are upset of your lack of a degree and the barriers that you see it causing you and that much of your discourse to me is mere projection.

Thread Thread
lukeshiru profile image
LUKESHIRU

I do much of the hiring where I work and not having a degree is in fact an immediate disqualification.

Those folks surely dodged a bullet, I'm in the interview process of my company as well, so hey! Interview bros! :D

Computer programming is an engineering discipline and as such requires in general an engineering degree especially if you want to operate at the elite levels.

  1. I literally laugh when I read "elite levels", are you working for NASA or something? 🤣
  2. That's where you're wrong, it requires engineering knowledge not degree. Degree and knowledge aren't the same thing.

I'm sorry that offends you. Perhaps you are upset of your lack of a degree and the barriers that you see it causing you and that much of your discourse to me is mere projection.

It doesn't offend me, don't worry. And you're wrong again, no barriers so far :D ... I even encouraged friends to drop so they could focus in knowledge that was actually useful for them, and now they are working thanks to that. It might be the moment to take a look at other companies besides yours, and see if they are actually interested in degrees as much as you believe ^_^

PS: Is funny that you accused me of "projection", but then you disqualify people based on if they have a degree or not x'D

Thread Thread
peter_brown_cc2f497ac1175 profile image
Peter Brown • Edited

You will see as you advance in your career that not having a degree will limit you. Most industries that do not require degrees are very easy to offshore to some 3rd world country. With advances in global telecom it is very possible that most of these industries will be very quickly be offshored as it is more cost effective. In a very few number of years the only good paying computer jobs will be those in the realm of embedded systems and safety critical systems. These most certainly require advanced degrees. I do wish you the best of luck, but as someone so young in your career I am fearful that you will be on the other end of a layoff notice and not have the ability to get the remaining jobs due to your decision to not pursue higher education.. I do sincerely hope I'm wrong, but industry trends would dictate otherwise.

Thread Thread
lukeshiru profile image
LUKESHIRU

Oh man ... you keep on going ... lets do this, I'll answer to your comment so you don't feel that you have a point (because you don't have one), and lets call it a day (I really don't want to deal with you any more):

You will see as you advance in your career that not having a degree will limit you.

You mean when I'm 40 or 50? I have 31 years old and I'm not only not limited by the lack of degree, but as I already said, I trained folks with degrees that don't know the things I know. Degree didn't meant anything to them or me, they are just interested in the actual knowledge.

Most industries that do not require degrees are very easy to offshore to some 3rd world country. With advances in global telecom it is very possible that most of these industries will be very quickly be offshored as it is more cost effective.

That's partially true, I come from one of such countries, but still folks in the US wanted to pay more to have me here in the US working "next" to them (WFH actually). So your argument about "cost effective" kinda falls short.

I do wish you the best of luck, but as someone so young in your career I am fearful that you will be on the other end of a layoff notice and not have the ability to get the remaining jobs due to your decision to not pursue higher education.

That sounds more like you're wishing the contrary, but tbh I don't care much about the wishes of someone that can't see the difference between degree and knowledge. I mean you are able to understand that folks with degrees might not know what's needed for a position, but for some reason you're not able to understand that folks without a degree can.

I do sincerely hope I'm wrong, but industry trends would dictate otherwise.

Again, take a look outside. I don't know what industry trends are you looking at, but companies every day care less about your degrees, and it makes complete sense if you think about the speed in which tech evolves compared to the speed in which degree curriculums are updated.


I'm not trying to change your mind, because folks like you don't learn (pun intended), I mainly replied to your comment so if folks read your uninformed and subjective opinion, they have another point of view just next to it.

TL;DR for anyone else reading:

  • Peter here believes that you can't get a job nor grow in the software industry without a degree, which is equivalent to having knowledge.
  • Me and anyone that lives in 2021 will tell you otherwise: A degree is not equivalent to knowledge. You can have a degree and not know anything useful, and you can have no degree and be extreme knowledgeable. What matters is the actual knowledge.

Before I go, here, have a degree certificate because you like them so much:

Worthless degree

Thread Thread
optimbro profile image
Rahul

Dil jeet liya sir aapne...

Thread Thread
paulcanning profile image
Paul Canning

Pete got wrecked

Collapse
tarunfy profile image
Tarun Sharma

LMAO 🤣 this guy peter... 💀Man livin' 90's

Collapse
lluismf profile image
Lluís Josep Martínez

You're totally right. Studying a CS degree to end up building JS crap is a waste of time. The CS degree allows you to design a language from scratch and ditch JS.

Collapse
vladudenis profile image
vladudenis

Every single self-thought web dev I personally know has studied V8 and learned the ins and outs of the the interpreter, the optimizing compiler, minor and major GC, as well as the neat tricks used under the hood like hidden classes and inline caching.

There are plenty of articles out there that can condense this knowledge into a 15 minute read and a list of dos and don'ts to maximize the performance of your program, which is something any beginner coder can read and understand without much experience in the field.

Ex: blog.logrocket.com/how-javascript-...

Obviously, it takes more than superficial understanding of the V8 engine to make noticeable performance-improvements, but mastery takes time. You begin by reading articles that can convey these concepts clearly, then you go ahead and read the official V8 docs and its blog.

In summary, just because you don't have the ambition, focus and patience to study these concept on your own, that doesn't mean others must be on the same level. Devs are not hand-held in the real world -- they must go out of their way to fill in any gaps in their understanding and continuously improve their mastery.

Have a nice day!

Collapse
scholarlyart profile image
Wayne Logan

Correction, following your logic, you first need to learn the instruction set of the processor your interpreter runs on. And learn how the logic gates that make up processors work. And how transistors make up logic gates. And how semiconductors make transistors.
So anyone with a CS degree shouldn't write a single line of code. Leave it to electronic engineers.
It's called abstraction, genius 🤦🏾‍♂️

Collapse
nombrekeff profile image
Keff

BS, I think your ego is obscuring your view. They do matter, but are not required. Not everyone wants to work in enterprise, neither should they want to. As a matter of fact I know 10s of devs that come out of CS degree and have less knowledge than self taught devs. Yup they might have the theory on some random algorithms, or how assembly works. But that does not make you a better dev in any way.

Good devs are the ones that have the most experience in their field, not the most amount of degrees. You can have 10 degrees, but if you don't put it into practice, you're as much as a noob as any other self-taught developer. Practice makes the master

I think this comment does not offer any value what so ever. Don't discredit other developers choices because it's not the same as yours.

Collapse
leob profile image
leob • Edited

You gotta be kidding, this is total rubbish, it's the most elitist and nonsensical comment that I've come across on dev.to since a long time ... I'm 100% certain that there are tons of competent devs out of bootcamp who write great Javascript code without knowing compiler theory ... but let me ask you, are you serious, or is this satire, maybe?

Collapse
soulfiremage profile image
Richard Griffiths

Honestly, I think he was just provoking to see what would happen. TBH I feel bullets are dodged when I avoid a company requiring a degree - I just know I'd not fit.

Thread Thread
leob profile image
leob

Yeah this was pretty extreme ... maybe he was just trolling, and obviously he was getting slaughtered - but well, real trolls like that, they tend to be masochists LOL

Collapse
patrickkyei profile image
Patrick-Kyei
  1. Oh u need to see this 🤣 youtube.com/channel/UCsAjtT-RYQRtM...

  2. And mentioned you are a hiring manager, you don't do the coding so hey this area is not your expertise. It's you are saying this but a self taught engineer could learn all these abstractions if they want to, but it doesn't matter.

  3. The guys who are winning huge bug bounties, reverse engineering programs are self made engineers

Collapse
alchemist09 profile image
Luke

Sorry to say this, but I think your opinion is not only wrong, but highly outdated and totally misguided. Some of those folks you've listed like lawyers and accountants, have switched careers and ended up as being very competent software developers.

Unless you want to be a language designer, knowing the internal details of how a compiler/interpreter works is not necessary to shipping working software. In fact, most CS graduates don't know that stuff since it's just a single unit in the vast CS curriculum as recommended by ACM, and it's impossible to cover it in its finest details together with other course units within a 4-year period. Language designers are more of researchers, than active day-to-day software engineers. So they are more likely to submit their recommendations to standardization bodies such as ECMA-262 that specifies the standards for ECMA-compliant scripting languages such as JavaScript. This is normally a long process, and developers of applications will most likely not have that time to wait before a new standard comes out before they can ship working software. Instead, the best bet of software engineers is language documentation, and not SPECIFICATION. The ECMA-262 is formal document for implementers of ECMAScript-compliant JavaScript engines. But it's the Mozilla Developer Network's(MDN) Web Docs that document how to use the various features of JavaScript. So software engineers use MDN docs to build applications, not the formal ECMA-262 docs.

In short, a programming language is a TOOL. And software engineering is about using that tool to build a working product. So Ankur Tyagi's advice is right. Someone learning JavaScript will benefit from his outline of what to learn, rather than going to ECMA-262 docs and try coming up with a new JavaScript engine, which we're not sure who will use if the existing browser vendors refuse to switch their JavaScript engines.

Software engineering is a SKILL that's best acquired via internship at software engineering firms, or firms with active product development divisions. Those firms higher devs to BUILD software, not tinker with interpreters/compilers, unless that's their core line of business.

Collapse
soulfiremage profile image
Richard Griffiths

"which is why no on without a degree in CS or EE or CE has any business writing a single line of enterprise code"

This is crap.

I'm self taught and I started at age 33. A decade later I've written and refactored code in VB, C#, a little F# and a lot in SQL.

My highest formal educational qualification is a GCSE (Is that high school diploma in the usa?).

I've worked alongside CS degree holding coders of various standards and none of them have expressed the need for their degree in what they do.

Anything I don't know, I go and find excellent teachers online for: books, videos, Stackoverflow.

Given that various companies have relied on my work for their business, I would say in the real world a CS degree does not guarantee depth or quality of workmanship.

Patient, methodical learning, in depth is required along with a lot of real world experience.

It's the wrong gatekeeper qualification and many, many employers know this.

I've purposely avoided hide bound companies that mistakenly set this as a gold standard.

It is down to the individual to do a proper job of his or her studies.

Yes, a bootcamp, a short course, a little time with a book isn't a substitute for in depth study over an extended period.

But, to date, I've never ever felt a short coming from not wasting a fortune on a university course - especially not when the material they cover, one can easily obtain from a myriad of sources online as long as one is reasonably methodical about it.

Point of fact, with a little work, one can even just go right ahead and FIND all the various syllabuses these degrees cover, just to ensure you understand where your gaps are.

For example, no I can't write a compiler just now but given 99% of business scenarios are getting data, handling data, displaying data and handling user input, I don't see this as a weakness.

Perhaps you merely wanted to provoke discussion to be honest.

So, I'm provoked :P.

Collapse
mertayasa profile image
Bali Merta

wow,, what industries and what country you're working in sir ??

Collapse
darthbased profile image
Comment marked as low quality/non-constructive by the community. View Code of Conduct
Arthur Callahan

Praising God 🙏 that I will never be qualified enough to work under your insufferable ass.

Collapse
peter_brown_cc2f497ac1175 profile image
Peter Brown • Edited

What I say is not out of disrespect. Every human being deserves respect.. Not every human being however has the technological skill educational background et cetera to work in certain industries. That's bread that's just a fact. I would never call you an insufferable ass. If you applied for a position that required a degree that you didn't have I would promptly dispose of your resume without a second thought, but I would not think of you as a less of a person. This is not about feelings it's about knowledge. I don't understand why so many people are so upset when they're told they can't do something. I do hope that your account is deleted and banned for vulgarity and disrespect.

Thread Thread
darthbased profile image
Arthur Callahan

You're right. I would be a under qualified ass.

Thread Thread
scholarlyart profile image
Wayne Logan

@peter Brown,

Computer engineering is an engineering discipline.

Sorry to pop your bubble, I am an engineering student and it's common knowledge that all engineering disciplines have a governing body that standardizes the practice. Does software engineering have a governing body?

Thread Thread
mellen profile image
Matt Ellen • Edited

100% what I was thinking.

Software is a soft job compared to jobs like nursing, where a governing body can stop you from practicing if you don't at least keep up with professional development and follow the rules of good practice.

"Nurse" is a protected profession, not just anyone can say they're a nurse. Literally anyone can say they're a "software engineer".