DEV Community

David Disu
David Disu

Posted on

What is the right learning path for an absolute beginner?

thinking smiley

Yesterday, an old friend of mine requested that i teach him javascript, without him having any pre-requisite knowledge of computer programming. I decided to throw at him a couple of video tutorials and programming books, but he rejected them saying he wanted me to walk him through the learning process till he has learnt enough to carry on.

With some reluctance, i took the challenge and here i am, confused! I've never thought about teaching a total newbie programming. I myself never had a one-on-one programming teacher. I'm confused! I'm confused because i don't know where to start from, what path to follow in his learning journey. I have questions like "should i start with data types?" or "should i introduce him to github first?" or maybe we should just discuss about programming in general. Then what next???

So @ben and @jess and all developers with experience as tutors to newbies, help me out here. What is the right learning path for an absolute beginner?

Thanks.

Top comments (7)

Collapse
 
somedood profile image
Basti Ortiz • Edited

For me, don't start with JavaScript at all. Briefly tackle HTML and CSS. Upon having prior knowledge of those two languages, there will be a reason to learn JavaScript and more. Having a direct way of applying newfound knowledge is the best way to learn. I believe that HTML and CSS does that job well as a way to complement in learning JavaScript.

Then once comfortable with browser JavaScript, only then will you introduce Node.js to your pupil. After that, you can introduce Git and GitHub (because of the open-source nature of NPM modules).

As for the individual topics to learn about JavaScript, focus on Ground Zero (not necessarily in order):

  • Data Types (except Symbols)
  • Variables
  • Operators (assignment, arithmetic, comparison, and logical ones for now)
  • Arrays
  • Objects (describe objects as an "array" with names as indices rather than numbers for now)
  • Functions (emphasize what return means)
  • Conditional statements (if, else if, and else)
  • HTML DOM (teach this so that the pupil can apply newfound knowledge)
  • Events and listeners
  • Loops and array iteration (while first, then for)
  • Teach your pupil how to use Google and Stack Overflow in case the time of desperation comes
  • Teach your pupil how to read documentation (especially from MDN)
  • Introduction to object-oriented programming with ES6 classes and the new keyword
  • Callback functions
  • Introduction to functional programming with array methods (map, filter, and reduce)
  • XMLHttpRequest (with a bit of an introduction on how clients, servers, and HTTP work)
  • Promises (mention "Callback Hell")
  • Explain what EcmaScript is
  • Introduce other ES6 features
  • Introduce Node.js and its module system (I wrote an article about it one time)
  • Introduce the world of open-source software
  • Introduce Git and GitHub

I think that's enough of a curriculum to get started with for now. Just a disclaimer, I am not guaranteeing absolute results.

Good luck! I hope your pupil learns well.

Collapse
 
ioedeveloper profile image
David Disu

This looks really helpful, Thanks.

Collapse
 
somedood profile image
Basti Ortiz

I got you, bro. 😉

If I know anything about teaching, it's that you should be patient with your students. Always put yourself in their shoes. Explain the topics like how you would have wanted to be taught.

Collapse
 
picocreator profile image
Eugene Cheah • Edited

I would say having a small project/goal, that a newcomer would personally be motivated for. Goes a long way.

Each of the project, would only focus on one small item in the stack, with possibly the rest being the bare minimum to execute.

This would also give the sense of accomplishment from each project, as they grow in complexity. Giving them the much needed motivation for the next learning project. And more importantly the skills needed to google solutions and perform self-learning.

Learning to be a developer after all can be extremely frustrating. Where persistence and motivation beats out any particular tech stack or path.


So if the developer-to-be is more visual or into blockbuster games, perhaps starting off at unity might incrementally make it fun or exciting, with each mini game level. Even modding games like gary-mods could be a start.

If the developer-to-be is a math enthusiast. Perhaps python with datasets would be more interesting.

If the developer-to-be is a designer, perhaps HTML and CSS, with a sprinkle of jQuery for animation (to keep the JS minimal).


Probably one of the worse ways to start learning programming in my opinion, is by teaching C++ pointers (which horrifyingly is an incredibly common starting goto, for many school courses).

Especially seeing as its nearly impossible for me to explain "how is this useful/important" to an absolute beginner.

Collapse
 
ioedeveloper profile image
David Disu

C++ Pointers, LOL. Working on a small project will definitely interest him. Thanks for your insight.

Collapse
 
ogwurujohnson profile image
Johnson Ogwuru

I would ask you to first figure what the interest of this student is, work towards that, build the students interest around concepts used toward achieving this fantasy of theirs

Collapse
 
ioedeveloper profile image
David Disu

Odogwu! Thanks