Lay off W3Schools
sagegerard.com
sagegerard.com
Let's look the page for explaining 'div': http://www.w3schools.com/tags/tag_div.asp
"The <div> tag defines a division or a section in an HTML document.
The <div> tag is used to group block-elements to format them with styles."
Oh, I get it. Its for grouping block-elements(??) to format them with styles(??).
The above is followed by this fantastic tip: "Tip: The <div> element is very often used together with CSS, to layout a web page."
Looking at their "examples" its an in-browser html editor with un-annotated code that makes a table suitable for the web circa 1995.
Then it trails off in to sparse definitions of the attributes for the div tag with an excessive amount of discussion about web standards compatibility.
Normally I wouldn't gripe about an awful tutorial site but w3schools consistently ranks high in google queries for questions about html tags. Personally I've never left w3schools with an answer to the question that led me there. That signals to me that it is indeed a failure.
My experience says the opposite. Sorry.
I made websites sporadically from '97-'03 and then started again in Dec '11. My criticism of w3schools is from my personal experience with the site over the last year.
I was surprised when I found out that w3schools actually intends to teach people html/css. Until recently, I thought it was universally acknowledged that they're a content farm.
I too had the exact opposite experience. I found the HTML, CSS, and Javascript tutorials extremely intuitive and well-presented when I was in 7th grade. I ate them up.
Yes, some people find it useful when they don't know better, but I suspect those people at that point they would have found almost any tutorial useful.
Google downgraded w3schools in search. It used to be constently the first result. Now it is rather 5th or 6th.
A little late to the game, there.
This post ignores two important points:
1. There are a lot of much better sites out there (linked to from W3Fools, even). Selectively highlighting a single post is misleading.
2. W3Fools is not so much for the benefit of W3Schools, but for people who link to W3Schools as reference in blog posts, SO answers, etc. There are lots of great reference sites (MDN!) that provide much better material, but circumstances have given W3Schools a lot of GoogleFu. That needs to change.
#2: Yes, this point is ignored because it was not really the focus. The benefit you speak of can be realized without statements like "W3SCHOOLS IS TROUBLE" in big scary letters on W3Fool's homepage. The attitudes of the people involved and the clarity of their content are the focus of the article.
#2: OP misses the point of why there is so much hostility. If W3Schools was on page 3 for (chosen utterly at random)"getElementById" on Google, no one would care. Predictably, however, it's number 1. That's pretty dire - I would hope that the top results for common questions would be quality resources. Which W3Schools is not. There is a greater good here, which is not served by continuing to promote W3Schools the top developer resource.
#2: getElementById returns developer.mozilla.org as the first result for me. Anyway, what about the point of why there is so much support? Convenience beats accuracy. I don't use W3Schools much now because I know of the inaccuracies, but I loved it as a beginner since not many sources I found were as intuitive as it.
That's awful advice for beginners, who have no idea why some things are good and others are dumb.
Some people will validate their pages. Some of those people will know what the errors mean, but decide that it's okay to have those errors. Other people will get a bunch of errors, and not really understand what's going on, and will just publish anyway because "it works in the browsers I tested on".
It's not bad advice to suggest that developers be stupid if they are the type to learn from their mistakes. If they are not the type to learn from their mistakes, why are we worried about them?
Being given incorrect information, and making mistakes, and not knowing you've made mistakes, is not a useful learning technique.
And while these people are making mistakes and learning from them their customers are suffering buggy code and everything that goes with that - data loss and insecurity at the extreme end and unexpected behaviour at the mild end.
W3Schools has pointed out that users take a risk with its content, and it made no claim over the quality of its code. The only element they have authority over is its clarity, and that is what's important. The information may be lacking, but I stick by my guns when I say that crap code can still make some concept that a tutorial revolves around clearer. If other elements are not relevant to the tutorial, I do not believe it is fair to blame the author for excluding them.
Some common examples:
- What values does CSS attribute white-space take? #1 result on Google for "css white-space" is http://www.w3schools.com/cssref/pr_text_white-space.asp which has exactly what I need to know.
- What members does the Array object in JavaScript have? For the query "javascript array", the first result is an overview of what an Array is, but the second result is the object reference which is exactly what I need.
When learning, looking things up is one of the most common actions. Whenever w3schools comes up, it doesn't necessarily make me smile but it's reliable^Wconsistent so I know what to expect. It maintains a lot of utility, unlike good ol' experts-exchange.
> it's reliable
That's the whole point of w3fools: w3s is not reliable.
This unreliable (albeit crystal-clear) source did not stop me from scoring a good portfolio and happy clients (http://linkd.in/ON5eHL).
Your point seems to be that w3schools has a special place in your heart. Okay.
> "Your point seems to be that w3schools has a special place in your heart. Okay."
Yep.
It's possible that you have worked on more projects than are listed on Linkedin, but that's what you've offered as evidence of your "good portfolio" and growth as a developer (the reason, I assume, that you keep distancing yourself from those hapless beginners), so that's what I'll reply to.
You have three web projects and a personal website all listed on your profile.
1. "Metasyllabus Initiative": This is a generic Wordpress site using a contributed theme. I assume this is your first attempt at a personal blog. There doesn't appear to be anything technically special about it, and it hasn't been updated in 8 months. If you stick with web development, get used to that. I haven't updated my blog in a year and a half. Wordpress is great, though, because anyone can set it up and use it. Anyone.
2. "Decision Tree Generator": About as simple as it can get. An independent multi-page Javascript-dependent (Did you learn that on W3Schools?) post form that's easily broken and seems to offer very little utility to the user. The most complicated styling used in this project is probably the absolute-positioned results.
3. "OmicronAlpha.org": This site is down.
4. "www.sagegerard.com": I don't know any serious web developers who would use Concrete5, and the comments I've received even from novices about it (it seems to appeal primarily to novices) have all ended with disappointment.
My point is that you're still a beginner. As a beginner, you don't know as much as the people you're arguing with, and you're making yourself look a bit foolish. W3Schools is a fine resource for anyone who knows that it's often unsafe, inaccurate, and wrong. However, the people who know that don't use W3Schools. My biggest problems with W3Schools (other than the inaccurate information) are that 1) they don't explain that they are not associated in any way with the W3C and 2) they sell overpriced certifications that require a user learns inaccurate information.
I read an article a few years ago (that I'm not possibly going to look for now) about best practices when creating examples and guides. The most important lesson in the article was that you should almost never show wrong examples or antipatterns. I.e., don't show an example of what NOT to do. The reason was that the novice ends up remembering the wrong examples as often (or possibly more often) as the good examples. At that point, the example/guide has failed. That's what W3Schools does. They can add as many disclaimers to their site as they want, but that doesn't change the result. They aren't just not doing as much to help people as they could. They're doing harm to the internet.
And by the way, the second sentence of your blog post is both ambiguous and wrong. Was W3Fools created in 2008 (It wasn't.)? Or did W3Fools teleport back in time to only criticize a 2008 version of W3Schools (They didn't.)?
Nothing is wrong with choosing an easy to use tool for the kinds of requirements clearly described in the about page.
> "Decision Tree Generator"
My client for this project insisted on many design decisions that I disagreed with. I also adopted broken code I was not allowed to fix, which includes the markup and CSS for the theme.
Not all of the code there reflects my knowledge, and anything that does might not be there because I wanted it to be. Not even all the bugs are mine. In fact, most of what you SEE there is not mine. Focus on the generator app only.
Also, I am writing a new version of that as we speak. It actually took a lot of convincing to abandon the horrible pop-up stateful form. Point is, I got repeat business because the code I wrote was well-tested and appreciated.
In short: The design of the site is not my own, but the generator itself is. Even so, I could not decide how it looked so I just pulled the levers. Whether you like the code or not, I am always in a process of learning and improving my craft regardless.
> "OmicronAlpha.org: This site is down."
I was the webmaster for one year and passed the title over as per the rules of the organization. I am no longer responsible for the site, so the listing shows only that I made it. Should it ever come back, it could be all blinking text for all I know.
I do appreciate you pointing out an outdated LinkedIn entry though. This has been fixed.
> "I don't know any serious web developers who would use Concrete5"
This is not an argument. I looked over my requirements, I wanted to use something new for my personal web site, and I picked something I'm happy with.
> "My point is that you're still a beginner. As a beginner, you don't know as much as the people you're arguing with."
I am certain I am still extremely ignorant, but that comes with the territory. I won't make an attempt to rank you, because I am sure you have your own experience to bring to the table. I respect you, and I have every right to ask that you respect me.
I don't aim to be the cock of the walk, but I will not allow you to push me to the level of a beginner in a public forum. While I am by no means a guru, I am competent, and am willing to have opinions you don't like even if I risk looking silly to those who misinterpret my claims.
I've been working for six years, and I have been doing more than what is listed on my profile. I am happy, my friends are happy and my clients are happy. I'm not rich, but I make enough money to support a good, healthy lifestyle and invest in my own retirement at an early age. I have used plenty of languages and tools, although I do not always take the time to share content because I tend to keep my services local. What you see online is only parts of me, and I am sure we would get along great if we met.
Now, my article goes beyond W3Schools and challenges what it means to effectively teach coding. I don't think you need good code to be a good teacher because there is a human element of making something understandable that goes outside professional standards of code quality. We can debate that until the sun goes down.
Being supportive of an inaccurate source for unconventional reasons does not invalidate my actual, relevant experience.
> So? The 2nd result (MDN) does the same, looks better, and almost never contains gross errors/bad practices.
So indeed. I have nothing against MDN--it's great. If it was the first result, I'd click on it instead.
Sorry about that. It is not my intention to be rude or troll, but I've got a lot of discussions to manage. I went ahead and edited out some needlessly harsh bits here and there, but I'm not touching ones where I am just reciprocating the same attitude as the parent post.
I'll watch myself more carefully, so thanks for the reminder.
> "The O'Reilly books have a much higher degree of accuracy yet remain approachable, beginner-level texts."
Yes, but they still promote outdated and insecure approaches. As a beginner, I actually got yelled at for using an image map for obvious reasons. The edition of the book I used did not discourage them, but I still swear it was a nicely written text.
As for inaccuracies... W3Schools has been addressing them if the cited sources were reliable.
The first Google result for the query, "div tag" is a W3Schools page. The page then cringefully displays a sample piece of code with an inline style colour attribute that probably would have been acceptable in 2002. Don't get me wrong, as a developer I think W3Schools can serve a purpose, but I've often found myself on a W3Schools reference page and not leaving a single useful piece of information.
It feels like W3Schools hasn't changed since it launched. I'm guessing the software company that runs it has better things to do and doesn't really care whether or not they're miseducating people.
And by the way, I think the author is about 7 years too late on the W3Schools hate train, the article reads like hating W3Schools is a new thing.
If Hacker News participants ran the world no one would care about history. We can discuss things that happened in the past. It sure as hell sparked discussion here.
> "Don't get me wrong, as a developer I think W3Schools can serve a purpose..."
And it does. It's easy to understand, which is not something you find often in sites trying to teach something. As I said elsewhere, good code makes crappy tutorials since it introduces more concepts that can confuse and overwhelm a inexperienced reader.
This idea is sometimes called Wittgenstein's ladder: http://en.wikipedia.org/wiki/Lie-to-children - "My propositions serve as elucidations in the following way: anyone who understands me eventually recognizes them as nonsensical, when he has used them - as steps - to climb beyond them. He must, so to speak, throw away the ladder after he has climbed up it."
So, for example, I might learn to build a Rails app using the scaffolding system, but once I know Rails well, I wouldn't.
Let's say you begin with markup, and just put the style as a tag to begin with. At some point, you know what a style does, but you have to throw the ladder that it has to be inside the markup, and externalize it to .css file.
Learning is a progressive experience.
W3Fools energy would be _MUCH_ better spent on developing an alternative.
dochub: Where are the tutorials?
Sitepoint: The structure is messy. It looks like a blog, but a historical structure is awful for learning. I want topic categories. Also lots of things I don't care about - books, courses - I just want references and tutorials! MDN is better from this side.
I'm not convinced. You're not going to kill w3schools if you don't understand why so many folks go to that site.
Personally I didn't know dochub, and might probably get back soon on this site. It's clean, and the information is useful, but only when you already understand well what you're doing. It's not for learning the Web concepts. Also, it misses direct mention of browser support for every feature.
The MDN also has fantastic tutorials (https://developer.mozilla.org/en-US/docs/CSS/Getting_Started is the CSS one) and lots of examples of good or complicated HTML5, JavaScript and CSS3.
I see the MDN catch a lot of unwarranted flack and i don't understand why. Shoot I use chrome as my main webrowser and I still spend most of my time on dochub.io (which is sources entirely from the MDN) and the MDN itself.
MDN is a great site, don't misunderstand me - but in this case I am not sure this is the right hoster. I used MDN for some JavaScript issues like one year ago, and it was then running well on FF but not at all on IE. Maybe they have all corrected that since, but I'm not seeing that clearly now.
dochub looks nice, but again it is not something for beginners.
Also, MDN is client only (which is one point making me say it is very Mozilla oriented). w3schools has this part about PHP which is very useful for beginners. Again, my point hasn't changed. MDN and others are more useful resources to experienced web devs than w3schools, but w3schools is the better point to begin with when you don't know about web development and want a clear overview.
That's no excuse for ignoring even the basics. Some of the w3schools tutorials are like starting a teenager's first driving lesson with "run down as many pedestrians as you want, we'll teach you how to not drive on sidewalks later".
These tutorials need a massive red flashing warning saying "we've left critical stuff out, you will get your site defaced if you code like this".
Newbies don't need to be expected to know good code. That's no excuse for presenting actively dangerous examples to them with no warning.
Now, I would be all for W3Schools making their disclaimer more noticeable. It is there, though.
Not necessarily, and bad code can make dangerous tutorials.
W3Schools is not responsible for what devs do, and safe code means introducing more concepts that can leave the scope of a tutorial.
I agree the code sucks, but we're talking about minimizing time to understand something, not security. Save that for the security tutorials.
Following that tutorial introduces massive security holes into a site. Those security problems need to be discussed. At the very least they need a warning saying "Don't do this until you understand the security issues discussed in THIS OTHER GUIDE".
Whenever they realize they don't understand something. This could happen by reflecting on the material or after making a mistake.
> "Following that tutorial introduces massive security holes into a site."
I've touched on this on other parts of this page.
Which is quite likely to be when their customers' data gets leaked or altered. That's a really bad time to discover a hole in your understanding.
Who would hire someone who only has W3Schools knowledge? Are we really worried about them?
And this pretty much negates your whole argument. If you ever plan on getting hired or being taken seriously enough to get clients, this isn't the resource. How pissed would you be to find out at an interview or after a breach that the site you used to learn all this stuff was the laughing stock of developers?
I'd say it was fairly obvious that this is a bare bones basics site (I used it, albeit about 10 years ago) that needs to lead on to something else...
But granted they should may be put in a "next steps" type section of things people should read in to further.
An unproductive comment, but I think it's a defensible one.
Languages cannot eliminate every subtlety in their use, and there will always be issues that call for more articles explaining how to sidestep them. Novices won't normally get to see this content, and it won't help them to shove it all down their throats at once back at the introductory level courses.
There's a reason most physics students hear about Newton first.
Sure, there's better sites out there, but sometimes you just have to trust the Google.
If the site shows up #1 for 90% of web stuff you're looking for, then others obviously found it useful too.
Step 2: Block w3schools at http://www.google.com/reviews/t
> Sites will be blocked only for you, but Google may use everyone's blocking information to improve the ranking of search results overall.
So kudos to them for criticizing the crap out of the site? (I do also see what they are doing as valuable, but I'd agree it's needlessly hostile).
I of course didn't learn exclusively from w3chools (I doubt anyone does), it's just a resource. Not perfect, but it's useful.