5 ms·
The Problem with the Node community
- spotman 11y agoI agree with a lot of the sentiments in this post, but I wouldn't go so far as to say beginners should not learn node at all. (i.e. - stop teaching it to beginners) It boils down to using the right tool for the job. As the author mentions, some people do get it right, but it leaves you a lot of rope to hang yourself. There is people who feel teaching rails or django to beginners is also doing them a disservice too, because at times it can mask how SQL or other things work, and can encourage developers to not learn how things work at a lower level. Developers should learn SQL before noSQL, but I don't think that will make or break a career, nor will learning node first or rails or php or java. One key to being a diverse developer, is not being religious about any one technology, but try as many out as you can reasonably, and learn from all of them. The author definitely nails this point, that people are often "unwavering" in how they support node (or insert another technology in that sentence). TL;DR - use the right tool for the job. Sometimes it's node. Sometimes it's not. At least that is my take on the article. Cheers.
- bigiain 11y ago"I wouldn't go so far as to say beginners should not learn node at all." I'm showing my age here, but… I remember a quote (but can't recall who to attribute it to) along the lines of "Perl is not a good first programming language. It's a great _last_ programming language"
- chriszhu12 11y agoYeah, I've been guilty of advocating for Rails for nearly every task when I first started out but it seems much more prevalent in the beginners node community. The fact about the SQL vs NoSQL thing seems to be a controversial one, but I think SQL databases provide a good set of tools of all the concepts that are needed to create a working data store. Primary keys, foreign keys, ACID compliance, etc. The fact that they are absent from NoSQL just means you, as a developer has to implement it yourself.
- bigiain 11y ago"But seriously, does anyone really think that a beginner should learn NoSQL before learning SQL?" Hmmmm - back in the day, I learned to use hashes, tied hashes, and BerkleyDB way before learning to use SQL and SQL libraries.
- chriszhu12 11y agoOriginal author here, I agree the depths of abstraction in CS are endless. But in todays day and age, it seems like SQL has matured enough to be learnt without too much background in CS
- bigiain 11y agoSure - it's mature and rock solid. But it's also overkill for many problems requiring persistent storage. If I were teaching a programming beginner how to save data for a program to persist across invocations of the program - there are tools I'd reach for before saying "well, first we need to install MySQL or Postgres, then the db abstraction libraries, then we need to talk about ORMs … ". Pedagogically, going from variables to hashes to tied hashes to NoSQL is a relatively direct progression - at least to me. Having said that - there's an enormous amount of PHP ( and Perl and …) code out there showing beginner programmers getting shit done with minimalistic but workable understanding of SQL.
- woah 11y agoInterestingly enough, the only people who have a hard time with callbacks are those who have been coding synchronous code for a long time. Anyway though, with async/await, the callback days are coming to an end. Other than that, the article is just complaining that express and mongo are too low level. Seems almost better to teach people low level stuff first.
- chriszhu12 11y agoOriginal Author here, I agree that it while it could be argued that express/mongo is more "fundamental" or low level than a stack like rails + mysql, I'd also argue that because its lower level, it could act as a barrier to learning. Having to wire together a database adapter with an ORM before being able to save data seems like a tall task to someone just starting out.
- ziahamza 11y agoThe only reason why Node is taken seriously is the fact that beginners only have to learn one language and switching languages initially can be a deal breaker for many. I have personally taught programming to a few people, and most people are really motivated if they get to see a usable web app rather then a terminal program, and for a web app NodeJS + Browser is far easier to teach then PHP,Rails,.. + Browser in my experience. They never really understand callbacks initially, but they can mash things up to see something on their screen. Another big thing about Node is the boilerplate to run NodeJS programs (compared to PHP where installing apache can be a nightmare for beginners, and makes it much harder to understand the big picture) Async is hard, and takes a long time to breath in I agree. But closures + callbacks nearly look similar to to sync code in other languages. Async code looks much more scary in other languages