A Great Place to Start
In my experience, W3Schools gets a lukewarm reception by the web development community. In fact, a lot of developers outright dislike it for a variety of different reasons ranging from a distaste of their certification offerings through disliking their content in general. I've always wrestled with this sort of reception of W3Schools over the years because I used to use it so much when I was getting started. It helped me get established in HTML, CSS, and JavaScript before I had any idea what I was doing.
The simple nature of their tutorials let me go through the basics of whatever I was learning. The thing about W3Schools' tutorials is they seem really devoid of content, having much less "words per topic" than other tutorials I've tried out. While this may seem like a bad thing on the onset, I quickly found that this minimalist approach allowed me to zoom in on exactly what I was learning about without any distractions, or tangents. I presume this was done by design because I spent hardly any time reading and almost all my time in their interactive examples.
For me, examples are how I learn best. You can tell me what a certain CSS property is over and over again, but I will rarely retain it until I see it in action. Almost immediately I'll try and see how manipulating what I've learned changes the result. With W3Schools, I can do all this right on the web page. Most topics have at least one "Try it yourself" button on their examples, which throws you right into an interactive code editor. The editor is pre-filled with a relevant example, but gives you free reign over manipulating it and seeing the results. This combination of light reading and interactivity really helped me understand and retain what I was learning. Sometimes even giving me some code snippets to copy + paste into my projects once I could see them working in the example.
Beyond their tutorials is one of the most useful features that I still use to this day - W3Schools References. These take the form of quick bite-sized rundowns of individual aspects of your chosen technology. For example, their CSS reference has an alphabetical list of CSS properties. Selecting one gives you a rundown of what it's used for, how to address it in JavaScript, what it can be set to, and much more. Similar references can be found for HTML, CSS, JavaScript, XML, Charsets, server side (ie PHP), and programming (ie Java). I find these references best used when revisiting a seldomly used CSS property, or when trying to see what options I have at my disposal.
Acknowledging the Critics
As I said before, there are quite a lot of critics of W3Schools, and I understand their frustration. The rather expensive certifications offered by the site have never been on any job requirements that I've ever seen. This coupled with the siloed nature of their tutorials, references, and examples can lead some newbies to struggle with putting all the concepts and methods together.
While this may seem like a bad thing on the onset, I quickly found that this minimalist approach allowed me to zoom in on exactly what I was learning about without any distractions, or tangents.
While I agree with these criticisms, I don't find them to be that big of a deal. The certifications are nestled in their own part of the site, so they're very easily ignored. On the siloed front, I agree that the tutorials can sometimes feel disconnected from related technologies and can give newbies a bad impression of how to put them all together, but I think this goes beyond the scope of W3Schools. I think W3Schools is aimed at beginners, letting them get their bearings on individual concepts without any added noise. When I was a newbie, I valued being able to learn individual concepts well, before I had to apply them to a project. Later on, as I started making my own creations, I learned how everything fit together along the way.
Beyond the Basics
As I stated before, I believe that W3Schools is most valuable to complete beginners trying to get their bearings with the technology of their choice. What happens then when you’ve finished the basics and are ready to start creating your own projects, solving more complex problems? For me the answer comes in the form of a collection of references that I refer to almost daily. With this collection of references I’ve been able to solve a lot of problems that have come up over the years.
W3Schools References
Like most developers, however, I find myself constantly looking up things that I learned as a beginner, but have forgotten since, or need a visual reference to guide my syntax as I type. Simple things like JavaScript for Loops, or the available options in a CSS property frequently escape me and need a quick Google search. These searches usually lead me to a W3Schools reference page where I can use those interactive examples, and figure out what I’m doing wrong.
MDN Web Docs
The MDN Web Docs are sure to be in most any web development Google search at some point in the list because they’re just so comprehensive. I find them to be more “official” documentation than quick reference guide, which is especially helpful when exploring a new feature you’ve never used before. These docs are very detailed, often offering a more meaty bit of content than your typical W3Schools tutorial, but similarly laid out such that there is a section/page for most individual concepts on everything they cover. If you’re beyond the basics, the detail that MDN Web Docs give you can lead to more efficient ways to solve your problem, or even new concepts to explore as alternatives. Since you have a good foundational knowledge, you can more easily read and understand these extras without it weighing you down.
Stack Overflow
The classic forum that almost everyone has, at least one time in their career, copy + pasted a code snippet from. It gets mentioned here not only because it shows up so often in a web developer’s Google searches, but also because it drives actual conversation. It’s one thing to read up on how to do something in a tutorial, or in some official documentation. It’s another thing to have multiple people discuss and debate over what the best solution to a problem is. You may find that more than one of the proposed solutions work for you, but you’re not sure why. Oftentimes the comments and debate around the topic can help you narrow down why one solution is better than another. This can also help update how to code in general, adapting to more modern methods as you see the community evolve their solutions.