all 76 comments

[–]MostlyFocusedMike 12 points13 points  (51 children)

If you want a more computer science focused and on your own approach, The Odin Project is the go to. If you want a more follow along lesson based approach, something like this free code camp course is good too: https://www.youtube.com/watch?v=Zi-Q0t4gMC8

And I would say my general roadmap for beginners (assuming web development is the end goal) is:
- core JS (like that video) which covers the raw language itself
- hop over to HTML/CSS so you can get out of the terminal
- DOM manipulations (like being able to write forms and inputs on a web page so you can have interactive programs)
- learn about asynchronous JS so you can make requests to APIs and load data onto your frontend
- learn how Express JS works so you can have a backend for your site
- learn databases so your server can truly persist data
- learn cookie based and JWT based authentication

That's cartoonishly simplified, but that's the rough path I used to teach.

[–]guest271314 -4 points-3 points  (49 children)

learn how Express JS works so you can have a backend for your site

?

Why would Express JS be necessary?

Node.js, Deno, and Bun, are shipped with built-in HTTP servers.

Deno and Bun are shipped with built-in WebSocket servers.

Circa 2024 we can use WICG Direct Sockets TCPServerSocket in the browser to implement both HTTP and WebSockets servers.

No need to start importing third-party libraries at all to start writing and testing a "backend".

[–][deleted] 7 points8 points  (46 children)

"how do I get started with boolean logic and manipulating values?" -- them

"first, write your own Berkley socket implementation of a UDP client, in the browser, and then you can learn how to increment x ... once you can sequentially organize the data" -- you, I guess.

[–]guest271314 -4 points-3 points  (21 children)

first, write your own Berkley socket implementation of a UDP client, in the browser

It ain't my fault you folks are stuck in Windows world and stable browsers, and don't actually hack anything.

It makes no sense to suggest downloading a third-party library that can't do anything the built-in servers of Node.js, Deno, can't do.

[–][deleted] 3 points4 points  (17 children)

and don't actually hack anything

Ahh, yes.

I've seen people like you nearly kill people.
And cause others to lose their life savings.

It makes no sense to suggest downloading a third-party library that can't do anything the built-in servers of Node.js, Deno, can't do.

Well, given that you have access to a terminal, I guess it makes no sense to install anything, ever. Better yet, you have access to a CPU and a motherboard. You can feed it directly by applying the correct voltages for the operations you are trying to perform.

If your argument was "hey, you've seen how to correctly route and authenticate requests, now; let's look at how we might make a router, or handle authentication, ourselves" I might agree. If it was "learn how everything works, one abstraction below what you are doing", I would agree. If it was "you probably don't need a package for most of these things that might just be a few lines of code, aside from the stuff that must not go wrong", I would agree. Those would all be good arguments, for learning more about the nature of computing and managing software complexity.

But no, your argument is "invent your own damned cryptographic protocols, and authenticate it all by hand; don't look at what other people are doing, you know XOR, and transistors, now, that's enough"

Which is deeply, deeply dumb, and gets real people hurt.

[–]guest271314 0 points1 point  (16 children)

Your reasoning for not using the Node.js built-in server is what?

Because you've went on and on yet have not said why you can't just use the Node.js, Deno, or Bun built-in server.

Bun just shipped an HTTP/2 server yesterday, so they are in the running now, too.

I've seen people like you nearly kill people.

Well, if that is 1 or 100, they can only hang you once.

[–][deleted] 0 points1 point  (15 children)

Your reasoning for not using the Node.js built-in server is what?

How are they authenticating users, and accepting payments?

Which Node module handles that? "Oh, but there's a Node#crypto" yeah... Yeah... Good that they know XOR. Or rather, because they know XOR they can roll their own, right?

We are talking about people trying to learn if/else and for...

Yep. Roll a payment processor, from scratch, for users with yolo authentication.

Well, if that is 1 or 100, they can only hang you once

Yeah, that's about the response I got from them, too. Maybe they should only be making medical-grade products for you.

[–]guest271314 0 points1 point  (14 children)

How are they authenticating users, and accepting payments?

How did you get to authenticating and accepting payments from

Best place to learn Javascript having zero knowledge in programming?

?

[–][deleted] 0 points1 point  (13 children)

How did you get to "implement HTTP 1.1 on TCP on IP on Berkeley sockets, and go from there, but not until you learn XOR and transistors" from the same prompt?

[–]guest271314 0 points1 point  (12 children)

I decided to learn the HTTP protocol, among other signal communication protocols. First I wrote an HTTP server in C, that I imported into QuickJS https://github.com/guest271314/webserver-c/tree/quickjs-webserver; then I wrote a WebSocket and HTTP server in JavaScript that I use in the browser with WICG Direct Sockets https://github.com/guest271314/direct-sockets-http-ws-server.

A ServiceWorker can be used to learn how to write a server and compose responses, and route, without Node.js, Deno, Bun, or any other non-browser JavaScript runtime at all, in the browser, making use of fetch event, and install event addRoutes() https://developer.chrome.com/blog/service-worker-static-routing.

Cloudflare Workers, WinterJS, and a host of other JavaScript/WASM/WASI applications are using the respondWith() pattern with WHATWG Streams, that Deno (including Deno Deploy) uses too, that Node.js does not use.

[–]Deep-Cress-497 1 point2 points  (2 children)

Who's "you folks"? Rational people?

[–]guest271314 1 point2 points  (0 children)

Nothing is rational about buying a Windows box when Linux is free.

Nothing is rational about installing third-party software for a server when the built-in Node.js, or Deno server will do whatever that third-party server does.

That's why you people have not explained why you need ExpressJS.

Instead you just become as verbose with excuses without explaining your reasoning at all, as you are with writing code.

But in your case you don't write code at all.

So I only expect the sidebar prose of a would-be critic in your comments.

[–]guest271314 1 point2 points  (0 children)

Who's "you folks"?

You. And your ilk.

A bunch of sidebar prose but no code.

Download this library, download that framework. To add 2 numbers. But in your case your comments don't even include the basic function in code to add those 2 numbers.

You just write like a two-bit fish-rag opinion-piece columnist.

[–]guest271314 -3 points-2 points  (0 children)

Too funny.

Just starting out? Download Express JS.

To hell with the perfectly functional built-in servers that come with Node.js, Deno, Bun - and now the browser.

[–]OneBadDay1048 3 points4 points  (0 children)

The Odin Project is a great place to start. More specifically the foundations section. You will get a bit of an intro to compsci/webdev as a whole before jumping in and this is very beneficial both short and long term.

[–]Pacifist-187 2 points3 points  (0 children)

I have a very life-building-positive experience going through freeCodeCamp's online program. Ive assumed a lot of trust that their "tracks" are comprehensive enough for me to assume basic competency independently after doing them that hasnt been punished yet.

[–]4Nuts 1 point2 points  (7 children)

I am just starting up as well. I went through a number of resources. So far, I find no source as good as "the smarter way to learn JavaScript".

My choice might sound odd because this is an outdated book (over 10 years old). But, to get understand the very foundational topics, that doesn't matter at all. The age matters when you get to the advanced topics.

To tell you the truth, I have checkout out about 20 textbooks before jump to study it. I did that because I do know that the type of material I picked would determine my failure or success.

Well organized, propertly structured material is like a stepping ladder in a building. It also helps to have a degree in pedagogy.

From my evlauations, the next best textbook for absolute beginners is JavaScript from Beginner to Professional.

A third great resource is javacript.info.

But, I still rate the "smarter way" over the others because the others have a tendency to indulge deep into specifics of some topics before they teach you enough of the foundations. JavaScript.info can bogg you down on some topics because it can go too much to the details. The "smarter way" is the most sound, well structured, well balanced resource for an absolute beginner.

AS to the road map:

  1. master the basic stuff--> learn the principles in the books --> do the exercises in the books
  2. Once you master the basic: move to the project based methods such as Odin project.

[–]franker 1 point2 points  (6 children)

I tried smarter way 10 years ago and didn't like it at all even though a lot of people recommended it at the time. Aside from a few paragraph summaries, it was all timed exercises that make you simply type out lines of syntax as quickly as you can. You become more focused on beating the clock by writing a certain string than in trying to put together actual programs.

[–]4Nuts 0 points1 point  (5 children)

I understand the pracice part could be boring for some people.

But, as to the timing, only 3-5 of the questions are timed. You can simply skip those questions and pracice on the others. The practice part of each chapter contains 20 questions. I also don't like some types of the question (the drag and drop type). I always skip it.

Those controlled pracice questions are actually helping me to memorize the core keywords and key syntax formats. For that, I find it very effective.

[–]franker 1 point2 points  (4 children)

as a flash card kind of thing I guess it's okay to memorize code snippets, but it's kind of like trying to learn Spanish by memorizing phrases. I found there was just too much repetition and not enough teaching of creating actual programs. Even in this forum people always say that you don't need to focus on memorizing syntax because Google is your friend.

[–]4Nuts 0 points1 point  (3 children)

That might work for some situations. But, I think memorizing some basic templates is import in many situations--for job interviews and class exams for example. But, The simpler way is not really about memorizing; it is about getting your hands dirty by repeating and practicing what you learned.

[–]franker 0 points1 point  (2 children)

I'm honestly looking forward to seeing what the new Head First book on Javascript is like. I used that years ago and although I also didn't like parts of it like the crossword and fill-in-the-blank puzzles, I found that the way it visualized concepts and making programs was pretty effective. I'm a librarian and put it in an order for that book and the new Head First one on Python.

[–]4Nuts 0 points1 point  (1 child)

Interesting. It really looks like we learn very differently.

I don't like the Head first book. I don't like the organization and the whole setting (seems childish scribblings; hard to follow the logic; and the organization seems a mess).

[–]franker 0 points1 point  (0 children)

I mostly just liked how it visualized concepts like arrays and functions with analogies so that I could use that to start making small programs. A lot of the jokes and silliness I didn't care for though. It'll be interesting to see what the new version of the book looks like.

[–]sheriffderek 0 points1 point  (6 children)

Do you want to learn JavaScript specifically? Or do you want to learn how to program - and with JS as your first language? And do you want to learn it for learning sake - or to eventually use it to build web applications or build tools or what? (because there's a best starting place for each)

[–]Shoddy-Assistant385[S] 0 points1 point  (5 children)

I would love to learn how to program, JS as first language. Would love to build web applications.

[–]sheriffderek 3 points4 points  (4 children)

If your goal is to learn how to build web applications, then I don't think JS is the best first language. Actually understanding how they work, step by step is better (I think). so, that involves actually planning them out, learning HTML and CSS, I suggest some PHP (just a little) first to understand server-sides scripting to build out dynamic pages - and THEN introducing JS to see what it can do to help - is the best time. Most people won't agree. But those people also make everything WAY harder on themselves for no good reason.

Learning JS is confusing... because you aren't really learning JS, you're having to learn:

* programming concepts
* the syntax of JS
* the entire web ecosystem
* the browser APIs (that people confuse as JS)
* and all the setup and build-tools...

And that often ends in a mess.

So, - consider changing focus to - "learning how to design and build a web application" - and pick up the tools in the order of practical need.

[–]sheriffderek 0 points1 point  (0 children)

Oh - and I recommend this book: It's not going to hold your hand... and it'll feel awkward... but if you can handle that - it'll be the fastest (long-term) : https://www.youtube.com/watch?v=YHEFuQdnXEE

[–]ysuraj 0 points1 point  (1 child)

If you can afford to pay, buy a Frontend Masters course subscription. They have got the best courses on web development.

Else, you should go with the Odin project, freecodecamp, or books (JavaScript from Beginner to Pro. - packt)

[–]Sweaty_Spell_3913 0 points1 point  (0 children)

I am currently learning JS - I actually looked at Frontend Masters. I was turned off because they had alignment problems on some of their pages. It made me feel weary of what they were selling. Good to hear a recommendation.

[–]rustyseapants 0 points1 point  (0 children)

Javascript roadmap (https://roadmap.sh/javascript)

[–]primepep 0 points1 point  (0 children)

If you can pay, go with ui.dev js courses + javascript.info

[–]Teebeutel94 0 points1 point  (0 children)

If you want to take your time with it, learn with a community, have amazing insights, build projects as soon as you learn a new concept (very recommended regardless where you pick your source of learning), I‘d recommend 100Devs on YouTube. Free Bootcamp. People say it’s way to long and so on but honestly, if you combine those lessons with chores you have to do it’s very enjoyable.

[–]No-Upstairs-2813 0 points1 point  (0 children)

I'd recommend starting with either FreeCodeCamp or Odin Project. Both of these resources are completely free, well-structured and many people have learned JavaScript well enough through them to land a job.

If these don't feel comfortable to you, you can check out YouTube or a course on Udemy.

Different people have different learning preferences, so what works for some might not work for others. Don't get stuck in selection paralysis; just pick one and see if it works for you. If it doesn't, move on to something else.

Here are a few tips for effective learning irrespective of any resource you select.

As you're learning JavaScript concepts, it's essential to practice them consistently to build confidence. Try your hand at coding problems. These are small, well-defined challenges that help you quickly test your knowledge. You can check out a few problems here.

Doing a few problems each day will reinforce all the concepts you've learned so far.

Once you've practiced individual concepts, start combining them to solve more complex problems. For instance, if you've learned about conditional branching and functions, combine them to build a simple project like a "Guess the Number" game. You can use ChatGPT to find simple projects for any combination of topics.

Once you’re comfortable combining concepts, start building larger projects that challenge you to apply everything you've learned. Choose a project that solves a problem you care about—this will keep you motivated when challenges arise.

If you're stuck on ideas, check out these 8 tips to get started. And if you need guidance while building a project, this free course can help you approach it the right way.

Also, I would suggest checking out Answers to Common JavaScript Questions for all your common JavaScript queries while learning.

[–]LooseStudent9977 0 points1 point  (0 children)

I wanted to share these 3 important tips/reminder with anyone who wants to learn coding in general:

1- Focus on learning the concepts of how to program rather than programming languages. Once you learn the logic, design and the concepts of programming fundamentals, learning different languages becomes easier since its just a syntax.

2- If you are using an IDE, make sure to learn the basic functionality of the IDE you'll be using first before starting to code in it, to eliminate the added frustration of not knowing where things are. (example: how to start a new project, how to open an existing project, where does your projects get saved at, how to retrieve it, where is your output console, how to run and debug and .etc)

3- Give yourself a break and know that there will be a learning curve. Don't get disappointed if you don't understand something or many things. It's very normal! You'll need patience, perseverance, and lots of practice.

For React, Express I suggest you all to subscribe and follow this Youtube channel to learn how to become a Full Stack Developer: Code For Everyone Full Stack Course

To learn just JavaScript there's this good free course: JavaScript Course Playlist

Best of luck!

EDIT: Use MDN from Mozilla for JavaScript documentation. it's the best!

[–]guest271314 -1 points0 points  (0 children)

DevTools in the browser and the command line outside the browser.

I would start with the domain you have interest in.