Wednesday, July 30, 2014

The Troubles with Tutorials

The first thing I ran into with regards to programming tutorials last week was this tweet and accompanying image.

That is of course one extreme but it does seem like some tutorials are like that. Start simple and jump through some complex steps very quickly with little explanation.

Other tutorials take the other extreme. They give one every single step spelled out in great detail. The often try to explain things but the implementation details are such that you can create the program without learning a single thing. A number of online tutorials are like that. They seem great in theory and if someone actually read the explanations they would probably learn a lot. But alas many students will not read any more than what they need to create the project/program.

These are all reasons why I am not a fan of online or overly detailed (or not detailed enough) tutorials in textbooks. I prefer to live tutorials. Students can stop and understand things in a text or an online tutorial of course. I do that myself when trying to learn new things. But far too many students don’t. When doing a tutorial life it is easier to keep an eye on students and see where they are struggling. Plus one can ask questions “why did we use a variable here?” to force students to think about what is actually happening during the tutorial.

At some point though students have to write a program from scratch without tutorial like instructions. This transition can be difficult if tutorials have been too foolproof. If the tutorials have had too large of a jump from beginning to end students may never have success and develop the confidence to attempt a program from scratch. I just don’t think tutorials are enough. I think real teaching with explanations of concepts rather than just steps is necessary for most students. While some may be able to learn just from good tutorials many will need a bit more than that.

What do you think? Are there great tutorials online or in textbooks? What sort of help do students need (if any) beyond tutorials?

3 comments:

Garth said...

Tutorials should never be written by experts in the field. Experts assume knowledge. Good tutorials are written by someone learning the subject, with an expert for reference.

Old math joke:
The professor is working through a proof on the board. He states "This next step is intuitively obvious". He pauses for a moment, looking at the step. "One moment please" and walks of the stage. He comes back in 10 minutes and states "Yes, it is obvious."

Many tutorials are like that.

Anonymous said...

Hi,

up first I would like to comment what Garth said. I agree, that experts sometimes assume to much knowdlege (and I would add: they are sometimes unable to focus on the main topic of the tutorial). On the other hand only experts know of the 99 ways to fail an the 1 one one to do it right.

To the question on what students need beyond tutorials: tutorials are good for explaining implementation concepts, but most of the time we to find solutions for a bunch of small problems (for beginner, e.g. how to write a text file). For these small problems tutorials aren't necessary. 15-20 years ago I used to buy programming books based on the length of the index. The longer the index the higher the probability that you find, what you are looking for.(*) Nowadays you find everything on the internet and book's index has been replaced by sites like stackoverflow. I get probably 95% of my solutions from there. With sites like that, you won't need tutorials at all.

And I would probably go even further: for the more complex implementation conecepts I wouldn't consult online tutorials either, at least not as a student. Tutorial are mostley written by other developers who are rarely teachers. Books on the other hand are coneptually better (with cross references and such). ...but...books are probably to old-school.

So the direct answer to you question: give your students 2 or 3 good sites where the find a whole lot of quick answers and snipplets.

Regards,
Sascha

(*) One story I would like to share about book's indexes. One day my father came home with a present: MS Visual C++ (one of the early if not the first version). Along with the discs (floppy disc!!!!) came like 10 books. Among these books there has been one book that was the index for all other books. I loved that index book. Each page was filled with commands and functions. I spent days just browsing through the pages because there was so mouch potential.

Anonymous said...

Hi,

I forgot something.

Besides tutorials guidlines are a good source for knowledge. I know that coding guidlines (naming conventions and such) are mostly very personal, but a good programmer (I think) does same things in the same way.

A good book which falls into that category is "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reuseable .NET Libraries (Microsoft .Net Development)" by Krzysztof Cwalina. It's probably not suitable for students in their first year of programming but it is a realy good book because it tells you about the do's and dont's gives you really a lot of insight. Books like this one beat every tutorial IMHO.

Regards,
Sascha