News & Articles:

Why is HTML so Difficult?

Today I spent a pleasant morning helping students in a nearby University learn the mysteries of HTML. This was part of the first year of their degree course and was very much a case of writing the code in a text file. Tools such as Frontpage were forbidden, although sly students did occasionally try and use them when they thought they were unobserved. They thought, wrongly, that this tactic would not be detected later.

Many students found this exercise very difficult, and I fell to spotting patterns and wondering why.

They were coding using Sublime Text, which is good, especially as it’s what we generally use round here. Firefox was the browser of choice. Internet Explorer was forbidden.

Now, most of the students just got on with it. They worked as you’d probably expect, starting with the basic HTML tags, adding new ones as they needed them, before heading off into the mysteries of CSS and eventually even JavaScript. But some just couldn’t get going. ¬†And after spending time trying different ways to explain things to them, I can reveal the three reasons why.

The Internet Explorer File

This is an odd thing that you may not have heard of. It works like this. A computer stores things like “Word Files” and “PowerPoint Files”, along with “Image Files” or “Movie Files”. You can tell which is which by the icon on the screen, and double-clicking one will open some appropriate application. Files are inextricably linked with applications, so obviously a file that will be opened by a web browser must be an “Internet Explorer File”, or maybe a “Firefox File” (and obviously these two will be different).

The people behind Windows and Macs (and, more recently, Linux desktop environments) have invested a lot of effort into making this association. The problem they’ve created is that we seem to have lost the idea that a bunch of data on a computer disk is just a file, and can in principle be opened by any application we might want to try. This basic idea is so well hidden that the simple instruction to “Create Your Web Page in a Text File” requires a lot of explanation and is, to some, very difficult to grasp.

The Code-Browser Connection

Anyone who has spent any time developing a web page by writing HTML is quite comfortable with the idea that the content of their text file is parsed and then displayed in the browser. But there’s a lot going on here, and a newbie HTML coder has to wrap their head around it.

Think about it. You change some of your HTML code in a text file, and hit “Save”. You then refresh the page in your browser and what you see changes. Whoah! How did that happen? Think about it again. There’s a lot going on here. If you doubt that, think about how you would explain it to someone from the WYSIWYG generation.

The Precision of HTML

The whole field of Computing is unusual (some might argue unique) in the absolute precision required in some of the languages we use. A single misplaced space in Python, or bracket in Java can render a software system of millions of lines of code completely useless. This is what makes learning to code so difficult (something that we might well blog about one day), but it also applies to HTML.

True, HTML is more forgiving than C or Java, but it remains the case that a small error such as a misplaced or missing closing tag can render a whole web page useless. To our newbie HTML friends this is new, it is difficult, and it can be frightening. It also invests those who teach them with almost god-like powers.

So What?

So what does all this mean?

Maybe it tells us that learning something as “simple” as basic HTML isn’t actually all that simple. Students have to overcome the layers that a modern GUI introduces into their experience before they can really hope to understand what is going on. Above all, they need to make a separation between a file and the application program that makes use of it. Point and click interfaces have much to answer for …

Posted in Views

Tags: ,