Answer: You are watching it. There are no good tutorials for beginners anywhere!
For me as a professional teacher that means that I have to devote considerable time to warn my students about bad habits, thus wasting valuable lesson minutes, which turn into hours. And there are always someone who missed a class, and tried to compensate by Googling or YouTubing – something teachers normally would encourage – but will turn in bad work, that I have to give a lower grade. Thus, the worst case scenario is that students are actually punished in a way for taking an initiative.
One of the things I've learned developing for the web for 15 years and teaching it the last 9, is that it is way more
effective to learn things the right way from the start, and then be warned about some bad or outdated habits to avoid.
Learning bad stuff, and then un-learning will harm students' motivation, confidence (
how can I trust
anything I read?) and slow down the learning process.
Also, to a newbie it is not immediately apparent why a particular way of doing things is bad, so they tend to stay with
their bad practice, even though they may hear that they shouldn't.
But it works! of course I answer something
Yes, but it's fragile, not scalable, hurts
performance and violates good style, but it will take a very long while until I can actually show
them that this is the case, and a demonstration is more worth than a thousand words.
And habits, once formed, have a tendency to become automatic, instinctive. They are hard to un-learn.
Don't believe me? Look at the praise in the comments for this
People are saying thing like
now I know how to do it, when they should be saying that now they know how
not to do it.
What's out there?
My students belong to the YouTube generation. They prefer videos to words, demonstrations to articles, images to text.
Thus, nowadays the first place I look for material to use is on sites like YouTube or Vimeo, but every single beginners
tutorial I've found so far is crap. They all exhibit most of the following
- All by itself,
document.write()is bad and should be avoided. This is way more important than keeping the "hello world" tradition alive. If you really must do that, at least use
alert()since it does not alter the DOM and thus does not give a wrong impression…
echoin PHP, or
- The faster students get into an event-loop/event-driven programming mindset, the better!
- Inline event handlers
- As PPK says,Don't use it.
- Yup, in the year 2010 some wannabe teachers think you should still be nice to Netscape 1.2 and early versions of Mosaic! Monkey sees, monkey does.
- Setting the language attribute on script tags
- Now that we are learning that even the type attribute is not needed any longer, I still see people use the language attribute.
- It is OK to omit semi-colons on the end of a statement
- This is telling students that it is OK to rely on automatic semi-colon insertion.
I am teaching this stuff for a living and you really do not need any of the
above as an intermediate step to learning. When I teach my students, I only mention these in passing, saying that:
- If you use them, I will fail you on the course, or at least give you a low grade. (Yes, I will!)
- If you receive a tip from someone on a forum, or by Googling, suggesting that they are used, do not listen any more to that person. Learn to use these only as a sign of bad advice.
Which brings us right back to our problem. Where is the good advice?
There are some good things to read, but as I've said, I want videos as well.
What I do as a teacher today
I recommend watching the way too advanced videos, but only the first couple of minutes, originally meant as a rehash
only by the speaker. I tell my students to watch
the first 20 minutes of
this video with Robert Nyman and
the first 18 minutes of
this one with Douglas Crockford.
That is not something they do instead of listening to me or reading, but this semester I have occasionally been called away on other business and also missed a few days due to illness (nothing serious).
If not for these, I might as well let my Swedish students look at this one. At least they won't be taught something bad!
(No, I do not speak Hebrew and I have no clue if that is a good video or not.)
And I enforce the following rules:
- You shall validate your HTML early and often.
- You shall validate your CSS early and often.
- You shall learn how to use JSLint and use it early and often.
Linting is not an advanced topic. It is an essential tool to encourage good habits for newbies. Besides, validation and linting are not something you do at the end of your development process just to get a stamp of approval. They are tools to help you along the way.
In a similar fashion, I introduce PhpCodeSniffer very early in my teaching of PHP. In fact, with every year of teaching, introducing these tools have come earlier and earlier. My web design students this year were introduced to the HTML validator the very first lesson that I devoted to HTML.
Cursing darkness or lighting candles?
good parts of the language,
please take a look at the
and provide a video explaining one or two bullet points from it. You do not have to be Douglas Crockford,
but should at least have heard a couple of his speeches and have read
In so doing you will not get the reputation of being a ninja or guru. You won't get a chance to show how clever you are, but guess what? Rookies eventually grow up to become intermediate programmers, and they may very well evolve to become rather advanced one day. They will go to conferences and hear you speak on the advanced topics – one day. If you did provide them with something of real value when they took their first steps, they might just value that experience and return to hear some more in the future.
Bonus teaching tip
Since the students are not in the browser environment, they are less likely to transfer bad habits to real work. The fact that they are in a shell makes it very clear that what they are seeing is not definitive. Even so, I will nevertheless point that out to them, again and again. One must never take stuff like this for granted, and as a teacher one always have to repeat oneself…
Oh yes, when teaching PHP I use the PHP shell as well.
The better version of this post