I can remember when I first starting learning how to build things on the web. It all looked so large and complicated. There was a steep learning curve for something as simple as putting text on the screen. I can recall simple syntax errors in HTML that I had written that took me hours to figure out.
The fact is, coming to website building without any prior experience is daunting. That’s easy to forget. HTML seems like programming to someone new, even though it’s not, and after some time everyone realizes that it’s not. But at first, it seems like you are doing something really complicated, and even a little magical.
Why Isolation is Important
There are a lot of resources today for learning how to build things on the web, and many of them are awesome resources by very talented people. But something is missing. They often group different things together. HTML and CSS, Rails and Ruby, even HTML, CSS, and JavaScript. This is a mistake.
These things should be taught in isolation. When they are grouped, they are naturally just skimmed. Many intricate details of these technologies are sacrificed for time. There just isn’t time to teach multiple technologies at once, regardless of how close they are related.
Instead, a deep dive into these technologies is the better route. Sure, it takes longer. But it produces a more knowledgeable person that is able to take each technology and build them on top of one another.
Beyond Basics.
Anyone can build things on the web with a very basic understanding of HTML. They don’t need to know about all of the advanced features of the language. All they really need to know is paragraphs, headings, images, and links. You can build something with just that knowledge. But you will be stuck building something very basic, and if you are like me, you will be left with a feeling that there has to be more to this web stuff.
There is, and it takes time.
Small Steps. Deeper Understanding.
When I taught courses at a college level, I saw students struggle to grasp multiple things at once. HTML was always taught with CSS, and sometimes a little JavaScript. The success rate of this format is about 10%. The other 90% leave that course confused. They get stuck. “What was the HTML part again?” “Where do the curly braces go?”
What colleges think is being efficient, is actually being confusing and counter productive.
If I were to begin designing and teaching courses again, I would start with HTML, nothing else. Really dig in. Understand all the elements. Grouping, text-level, embedded, tables, forms, etc…
Once those are understood independently, I would jump to CSS and completely understand how elements are styled, accessed, and manipulated. Understand why we use CSS, how we use CSS, what the most powerful features are, and when you can take it too far.
With a deep understanding of HTML, CSS becomes easier. There are no longer questions about what something means on the HTML side. You are only concerned with CSS at that point.
The third layer would be scripting. This shouldn’t even be attempted until you understand why, where, and how you would use scripting. It’s pointless if you don’t understand the foundation.
This is how we should be teaching these technologies. One manageable piece at a time.