Teaching Beginners to Code

I agree with the others saying that JavaScript should be the first programing language you learn. I think jQuery is an even better starting place though. It’s far less verbose and I think the syntax is bit more human friendly.

ugh, and in better than 50% of the cases, the user can build it in native javascript or with html and/or css.

Intermediater level JavaScript is an entry requirement for being able to learn how to use jQuery properly. If you don’t have that level of JavaScript knowledge the jQuery you write will be an inefficient mess.

It is the equivalent of suggesting someone learn how to fly without giving them a plane. JavaScript is the plane you need in order to fly with jQuery.

That must be the reason universities teach JavaScript before c/c++ and Java.

JavaScript is a terrible language. It was a pain to use on the client and why anyone wants to use it everywhere is beyond my comprehension. Stick with the classics. JavaScript everywhere is a fad and will in time be replaced by the next flavor of the month just like rails was.

Only in so far as being the first language for people to learn.

Prototying Object Oriented programming is far more powerful (and correspondingly much harder to learn how to write proeprly) than classical object oriented languages.

Also there is a tendency with JavaScript to teach version 1 when version 7 is almost here and there were huge differences between the early versions and those from recent years.

C++ and Java are back end programing languages.

I think schools would teach JS more because it’s a front end programing language. Being on the front end, it makes it more visual. I’m guessing that probably makes it a bit easier to teach and makes for a better beginners language.

Well, unless you’re going use machine code then you’re always using some form of abstraction. You just need to decide what’s the best abstraction to use. I think Ruby is a very beginner friendly language that is great for learning to program.

You only need Sinatra if you’re going to be teaching some back-end web development (and if you’re doing that then surely you will have to use some sort of ‘framework’). I don’t think Sinatra is a confusing level of abstraction because it exposes the HTTP process so aids understanding. You can start with GET requests and build up to some simple POST requests then introduce a database backend with that uses REST. I don’t think you could get simpler or better than Sinatra for teaching back end web dev.

That’s not really what I mean, of course i’m not proposing teaching machine code. I mean abstractions away from what it is going on with the language, i.e. frameworks. I sometimes feel that layering these dependencies hides from beginners what is happening before they understand.

For complete beginners, even concepts like ‘HTTP’, 'GET, ‘POST’ etc mean nothing. I am basing this on personal experience.

@oddz Does something being ‘terrible’ technically and structurally make it a bad choice to learn if it motivates people to understand and then discover these things themselves.

IMHO these sorts of discussions are what put beginners off, especially when they’re enjoying such a language and getting things done with it.

I’m a bit late to the party, but I saw a scratch demo the other day, and for complete beginners it did look super cool. My main concern would be that the next step would be a big leap, i.e. going from visual to realising that for ‘real world’ you have to do a lot more. Could be good for prototyping though.

Hi Chris,

I wasn’t being obtuse when I suggested teaching machine code. All I meant was that programming languages are simply abstractions on top of this and frameworks are abstractions on top of programming languages. In fact it’s more of a continuum because you have low level languages such as C++ and high level languages such as JavaScript as well as basic frameworks and full stack frameworks. Each extra abstraction that is layered on top tries to simplify how to do things, although some of them simplify it so much that you lose any knowledge of what is going on in the background. The key is to choose which point you want beginners to get on at and then just go with it. When they get more confident, some of them might want to go more low level and see what’s happening and others will want to go higher level and make things easier.

Personally I’d just choose a language that you yourself are comfortable with and go with it. As many people have said already the important thing is to teach the concepts of programming and these can be transferred to other languages anyway. For me, it was Ruby that I found to be the easiest language to follow as it seemed to have a lot of methods that could be written as you would speak them in English.

I realise HTTP concepts are hard for beginners and I wouldn’t start there (just simple HTML pages), but if at some point you are going to teach back end stuff then surely you’ll have to teach them about how it works, so you couldn’t really avoid teaching them about GET and POST requests. Is there a backend language where you don’t need to know about them? If you are teaching it then I think Sinatra makes it very easy to follow what is going on in the background with a fairly easy to use language. There are other frameworks that do a similar thing as Sinatra in other languages too, so you wouldn’t be limited if you didn’t teach Ruby as the programming language.

This is the course I put on SitePoint that was aimed at beginners. It might be worth having a look at some of the topics to see if it’s anything like what you’re trying to do…




I think that’s probably the best advise. The person teaching the language needs to know it well in order to be able to teach it properly. There is nothing worse than someone trying to teach a language where they don’t know it properly themselves.

What I have found is that programming language break up into groups based on the type of language they are - procedural, reporting, rules based, classical object oriented, prototyping object oriented etc - and that once you know one language of a given type that learning other language of the same type is rather easy as they do the same things the same way just using different commands. Learning a new type of language is harder as then you need to learn how that type of language works (not quite as hard as learning your very first language but closer to that than learning an additional language of a type you already know).

@daz4126 I agree too, I think clarity, understanding and passion are likely the things you need most to teach best.

Plus a healthy dose of not assuming anything and understanding others perspectives.


Definitely! Would love to hear how you get on!

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.