Hacker News new | past | comments | ask | show | jobs | submit login

Nobody denies that W3Schools is a terrible place to learn how to program. Their examples are outdated, insecure, and don't really explain why things work in a certain way. Their tutorials are optimized for copy & paste, and God knows how many security bugs in the wild are due to somebody copying W3Schools.

But W3Schools also carries some of the most easy-to-use indexes of pretty much everything related to web development. Can't remember the exact name of that CSS property and its possible values? Can't remember the order of arguments of a JS string/array function? Go to W3Schools and browse their lists, get the answer in 5 seconds.

Of course, there's Mozilla Developer Networks, too. But MDN's CSS Reference [1] is just an alphabetical list of CSS properties with no explanation. W3Schools' CSS Reference [2] is neatly categorized, and each entry has a short explanation next to it. Very useful when you're trying to remember, for example, "word-wrap: break-word", which is not the same as "word-break: break-all".

[1] https://developer.mozilla.org/en-US/docs/Web/CSS/Reference

[2] http://www.w3schools.com/cssref/default.asp

W3Schools is good ol' Web 1.0 stuff. Just some lists and a bunch of links. No need to ask somebody and wait for an answer. No need to watch any annoying videos. No need to follow an animated tutorial designed by someone who thinks they know how a person should learn programming. W3Schools is like an old dictionary. A dictionary isn't particularly helpful when you're trying to learn a foreign language properly, but it's quite handy when you're face to face with a foreigner and you need to think up a word for "toilet paper" quickly.

I use W3Schools when I need to remember something quickly, and MDN when I need to learn more deeply about it. When I write CSS, I always keep W3Schools open in one tab and MDN in another tab. I wish somebody would link W3Schools' lists to MDN's details. That would make the best of both worlds.

> But W3Schools also carries some of the most easy-to-use indexes of pretty much everything related to web development.

Which is why I use it. Any competitor needs to beat it in this department.

I find mozilla developer network (mdn) blows away w3schools in all ways.

e.g. compare these two for CSS "display":

http://www.w3schools.com/css/css_display_visibility.asp https://developer.mozilla.org/en-US/docs/Web/CSS/display

MDN is more detailed, more up to date, and says in which browsers it works or doesn't work. w3schools doesn't even have a list of all possible values.

Or for JS "getElementByID":

http://www.w3schools.com/jsref/met_document_getelementbyid.a... https://developer.mozilla.org/en-US/docs/Web/API/document.ge...

MDN just always explains more details and edge cases, and has much more browser compatibility info (including for mobile).

"I find mozilla developer network (mdn) blows away w3schools in all ways."

Couldn't disagree more.

Don't get me wrong, MDN has way better information but take yourself through the eyes of someone who just needs a quick reminder or sample of how to do something.

I'll use a 1280x800 screen sample since that's a common size.

Compare this: http://i.imgur.com/Tvg04Pr.png

with this: http://i.imgur.com/gG7BIJF.png

Above the fold, one is a very quick and easy way for users to copy code and modify it for their purposes. It's also stupidly simple language. To make a box shadow, do this. The other has undisputedly better technical data but forces you have to scroll below to just see a sample code. And most new coders wouldn't understand how to read their syntax section. On top of that, w3schools lays out values in tables whereas MDN has paragraphs of copy.

By no means am I arguing that MDN doesn't have more detail, but I can definitely see why W3Schools is still used by those who know better.

>MDN just always explains more details and edge cases, and has much more browser compatibility info (including for mobile).

It does so at the expense of speed of understanding. Better for some people, worse than others. As a speedy reminder of syntax or form, w3schools seems superior.

THIS! The thing that really ought to replace W3Schools is MDN.

Really? I just did a quick comparison, and w3schools was much better than MDN. Try looking for info on the 'required' attribute of the input tag. w3schools has all the attributes in a compact table making it easy to find the attribute you're looking for at a glance, whereas MDN has a big long list. In w3schools you can then click on the 'required' attribute to get more info about it and see which browsers it works on. In MDN there is no info on browser compatibility in the 'required' description - you have to scroll down to ANOTHER table (there is not even a link to it) to see what browser it is compatible with! Come on, even back in web 1.0 we had links to stuff!

The reason that w3schools is at the top of the search results is that more people find it useful that MDN. Perhaps it isn't as cool with the hipsters as MDN, but for people trying to get things done w3schools is more useful in my opinion.

I guess it's really just a matter of personal preference. I switched to adding 'MDN' to my search queries out of gut frustration with having to parse through the W3 pages.

I think the comment about 'hipsters' is a little shallow, but it's interesting that this is so divided. I really assumed that HN would be completely in the tank for MDN.

The hipster comment was related to the fact that the article is complaining about ASP, "tight layout" and "icky". I don't use ASP myself, but it really doesn't have any bearing on the content. I don't mind the ads myself (they're fairly unobtrusive), and the layout is acceptable.

I like nice designs myself (I'm currently building a new site and I'm getting inspiration from roon.io and other beautifully designed sites), but I'm also quite content using sites that have less-than-ideal designs if they do the job that I'm looking for.

I've never heard of mdn before this thread somehow. But w3schools is perfect for looking up the things I tend to look up (mostly CSS or HTML attributes) and it's really easy to parse. Plus it's always the first google result for me.

What do you use then as "official" reference for Javascript?

You never used MDN? How long are you developing web sites?

I've been developing websites since 1996 myself, and MDN hasn't really been on my radar for an html reference. I did use it extensively back in 2009 when I was doing work with <canvas>, and back then MDN didn't really have a general html reference. I think it's only in the last couple of years that MDN has really developed their reference documentation.

So, if you've always used MDN you really must be a young whippersnapper :)

I think MDN has an advantage in that they've only really been around since HTML5 has become standardized, whereas w3schools has had to deal with the changing standards of html4/xhtml/html5.

"I think MDN has an advantage in that they've only really been around since HTML5 has become standardized" => HTML5 is not a standard. Nowhere near so. Whatever you mean by that, MDN is as old as Firefox anyway.

"...whereas w3schools has had to deal with the changing standards of html4/xhtml/html5." => These differences are 99.99% additions, so don't impact documentation that much. In any case, documentations is more relevant is it documents implementations, not standards (which come after implementation most of the time, not the other way around until recently)

That's just not really needed, it's so elitist.

Since 2001.

Stackoverflow seems to be the place where my JS searches lead me.

Perhaps more useful if you already know enough to know when to ignore the awful or wrong parts of w3schools.

Damn those "hipsters" and their preference for valuing getting a real useful answer over an easy to read wrong answer!

Please give some examples of the "awful" or "wrong" parts.

w3fools.com had, at one point in time, a long list of "awful" and "wrong" parts: http://web.archive.org/web/20110117085131/http://w3fools.com...

I had a look through quite a few of these, and they all seem to be fixed now. Also quite a few of the things mentioned are opinions. There were also a few instances where I noticed w3fools was wrong.

Anyway, I see why w3fools decided to remove the list of now-fixed "errors". Thanks for wasting 15 minutes of my time - I'll bill you later :)

PS, your website fails w3c validation.

I'm also a huge fan of MDN. Fun fact, if you use Duck Duck Go you can add "!mdn" to constrain your search to just MDN. It's now my #1 way of searching for HTML tag properties and CSS syntax.

You can do that with Firefox's bookmarks (last I looked) and Chrome's "search engines" (and there's probably something in Opera or Safari) using any URL you want, %s in the URL will be replaced with your search.

Indeed. I'm always ashamed of using it, but I have a stupid tendency to forget css selectors from time to time (I don't do web design or tweaking that often) and the same goes for how string.match or regexp.test or the likes in JS.

Never be ashamed of looking up a reference if it saves you time, besides web standards are too much of a moving target to bother committing all of them to memory.

I suggest memorizing it. Knowing it from the top of your head is much faster than googling or looking it up. That being said, a reference is helpful in the beginning stage.

I been at this since the mid 90's and I really can't be bothered committing it all to memory every time it changes.

I keep meaning to buy a copy of this - http://www.visibone.com/products/everythingbook.html - although my standard memory jog for web development is still "view source", same as it ever was.

For me it's not only web development, is most of the CS stuff I need when coding.

Probably it is due to my training as a mathematician, but I usually just keep an index of what I know and what it's used for, but I don't remember the specific details. I.e. Implicit Function Theorem can be used for proofs involving X, Y and Z under hypotheses H, unless you are fancy and go for H2 and more work. I just know what I need and where I can look it up – Nirenberg for fancy, any basic Differential Analysis text for the others, that Russian book on my shelf for a neat simple proof, Moser's for a simple proof and application, the list goes on with 6 or more 7 items. Well, this is actually stretching it a little thin, I could prove the basic differential versions without much trouble, and some functional versions given enough hypotheses.

When coding I'm more or less the same. I know there's a Javascript function that returns true or false when matching against a regexp, I just don't remember its name. Since it's kind of shelved in my mind as regexp test, I just look for this, and it's hole in one. Once I learn something I may not remember it exactly, but I have a pretty good "indexed memory" in the fact that I know that piece of knowledge exists and I've seen it, so I only need a few moments to dig it up.

Of course, I'd rather remember all CSS selectors and rules, or most of the Javascript machinery and the Go standard library. But I'm not doing this every day, so I just use it, every time I do a little more sticks to memory and the rest is easily found. If it got me more than 1 minute to look something up, I'd stick a big post-it in front of me until it sank, so far I have not needed it.

Reminds me of the Einstein vs Edison story about Einstein not knowing the speed of sound when he tried the employee test that Edison had developed. I read a nice take on that here - http://www.scilogs.com/the_science_talent_project/einstein-v...

Another example of the same (or at least something similar) is Alexander Grothendieck. See http://www.ams.org/notices/200410/fea-grothendieck-part2.pdf (start at the last paragraph of page 1)

By the way: that text is in the past tense, not because Grothendieck has died, but because he retired from mathematics in a quite abrupt way. See http://en.wikipedia.org/wiki/Alexander_Grothendieck#Retireme...

I just can't memorise everything I use so sparingly. If I did I'd still remember useless VBscript (or VB for Applications,) or Pascal. When I'm in X mode (be it Go, Python, Javascript or CSS) I only need to look up things in the first few hours, after a while it's in working memory for a few days. Then it slowly fades, although I usually remember pretty well the general way to do X or at least, what to look for for what I'm interested in.

Why does speed (what, like at most a few seconds?) matter in this case? Just a waste of memory if you ask me.

Anything legal and ethical that saves you time is nothing to be ashamed of. :)

I forget function names or math formulas all the time too. :P

Exactly. I use W3Schools for reminding myself of certain CSS properties and tasks like that all the time. And I'm not ashamed.

For a long time I always forgot the order of the 4 arguments of the margin/padding properties (it's top right bottom left). I always used w3schools to look it up. I use w3schools just to lookup attribute and CSS property names/values etc. It has a nice tree at the left side and concise tables of possible values. If anyone would want to prevent me from using w3schools he/she has to replicate this. It could use some updating and better information about browser support (maybe from a shared source with caniuse.com). I didn't even know that there are tutorials and such on w3schools.

You might like to try http://devdocs.io/

This is fantastic, thanks for sharing. Now I just wish there were something like this for Python/Django...

Thanks for sharing this! I've spent only a few minutes in the site and loving it so far!

I much prefer MDN as a reference. The examples are better and overall it doesn't feel so outdated, important in web development. Just put MDN in your search query.

Agreed. Talk is big, but this person hasn't done anything. Heck, they could have thrown up a wiki and written a little one sentence starter page about each CSS tag in the time it took them to write the post, then ask for contributions.

Out of curiosity, what examples are insecure?

Pretty much every PHP + MySQL example.

For example, SQL injection: http://www.w3schools.com/php/php_mysql_insert.asp

Perhaps to their credit, they have a two-part tutorial on email sending, one titled "PHP Email" and the other "PHP Secure Email". Also, their form handling tutorial is followed by another tutorial on "validation" (by which they seem to mean a combination of HTML escaping and outdated defenses against SQL injection). But most people are just going to copy and paste the first tutorial without looking at the second.

I can't speak for anyone else as I don't and have NEVER used W3Schools for anything related to PHP or MySQL but used PHP's manual and MySQL docs for anything, but when someone needs help and asks me, I usually use my experience and write up a quick example and do not go through the whole sanitizing of inputs and that, as they're just an example and sometimes are written right on the spot but I do let them know it's only an example and not to be copy and pasted into their documents and that they should properly secure their stuff with input sanitization.

Their SQL examples don't seem to perform any kind of input sanitization. They just use raw $_POST.


I give them credit for using MySQLi and not mysql_* though. I still suggest PDO.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact