Wednesday, December 17, 2014

Too many Arrows in the Quiver?

Last week I saw a tweet complaining to Wonder Workshop about them using Blockly to program their robots when (apparently) the Kickstarter proposal said the would be programmable using Scratch. A conversation ensued as it is likely to do. I thought Blockly and Scratch were similar enough that it shouldn’t matter much. The other person disagreed. He was concerned that teachers should be able to pick a tool and stay with it a while. And I can see that point. On the other hand I love learning new tools and like using different ones with students. A matter of personal taste perhaps.

A third person entered the conversation to say that “diversity and competition drives the quality of tools up, teachers and students benefits” which is a notion that I completely agree with. Admittedly it can be hard on teachers though. Especially if change is mandated. We have a large number of drag and drop programming languages these days. My list of tools for Programming with blocks has been my most viewed blog post for the last month accounting for over a quarter of page views. So clearly there is a lot of interest in the topic. Both for using them and for developing them.

Is this a good thing or a bad thing? Well the obvious answer is yes.

A couple of years ago I did a series of workshop using Kodu for middle and high school students. During the breaks I talked to the students about other tools they had used. Most had used either Scratch or Alice (the big dogs in block programming languages) and many had used both. Their preferences were clear. Some like Scratch better, some Alice and some Kodu. They all had reasons for their preference as well. This is not unexpected. People are different and see things differently. So in one sense the plethora of tools offers the opportunity to meet the needs of more people. And that is good.

On the other hand there are a lot of things for a single teacher to learn. There are 17 tools currently listed on that blog post and I hear about new ones regularly. (Let me know if any are missing.)  Knowing them all is really not practical so some choices have to be made. There is not a lot of real research on any of these tools (though there is probably more on Alice than most and some on Kodu as well) so what is a teacher to do? Don’t look at me to tell you which one to pick! I’ll tell people what I use and why but that is not the right answer for everyone. Possibly not for anyone.

Beyond that there are many traditional languages to teach and more all the time. PASCAL was the last language that seemed to have any concession around it. These days there is Java, C++, C#, Visual Basic, Small Basic, other BASICs, Scheme, Rachet, and growing of late Python. And that scratches the surface.

As I have said time and again There Is No Best Programming Language but should we at least narrow it down a bit? I’m not a fan of that idea (limiting teachers to a small number of options) either. After all I even think we need more operating systems!

So what is a teacher to do? Well I think more teachers need to share what works for them and why. Yes, I think more teachers should blog. I regularly enjoy reading about things that Mike Zamansky and Garth Flint are trying and using for example. Two different teachers in two very different schools in two very different parts of the country. I highly value their perspective. I do wish more people blogged their experiences more often.

And of course there are conferences for sharing. I am planning on attending SIGCSE this March as well as the CSTA Annual conference next summer. I learn a lot from teachers at these events. And not just in formal sessions. That they are expensive and hard to attend for many teachers is why I like the online interactions I get on blogs and even Twitter.

The value of all the amazing tools out there is increased when people try them, use them and share what they have learned. Only then can we pick the right tools for our students and also help make our tools better. So ask yourself – what have I learned and how can I share it with other teachers around the world?


Mike Zamansky said...

Thanks for the plug.

I remember rebooting my blog after meeting Ben Chun and Helene Martin a few years ago at a conference. Ben was commenting on how isolated K12 CS teachers feel and I promised to revive my blog.

I solved the isolation problem by hacking my school to the point where I've surrounded myself with some wonderful, smart CS teachers.

I also wish more CS teachers commented on our blogs - even more so than in other forums like facebook or even twitter -- that way there's more permanence.

Alfred Thompson said...

Alas Ben and Helene have both left the high school classroom and don't appear to be blogging any more. I miss their blogs.

Mike Zamansky said...

Yep - I was sad to see both of them leave the K12 classroom -- both had/have lots of talent, real, ahem, bluesmen.

Garth said...

My teaching language requirements are formed by my students, my budget, my knowledge and my teaching philosophy – electives should be fun and goal oriented. I also know I am not training programmers for industry. I am using programming to teach learning and thinking skills along with a little computer science. I have not the slightest doubt if I taught a high level Java or Python course (which I really do not have the background to do) the kids would go to some college that uses something else. Isn’t that the way it works?

I do have some quiver thinning strategies.

1.The language has to have a possibility of fun for the average kids, not just the kids that really get into programming. Lots of languages do the trick here.

2.The language has to be free. Not hard to do now a days.

3.It has to have a good free textbook or good free tutorial written at an appropriate level. This has eliminated more languages for me than anything else.

4.Something I can learn on the fly.

5.Something I think is fun. After all I have to spend the time to learn and teach the language so I plan to have fun. I like languages that make things move, be it on the screen or on the ground.

6.The language cannot be a dead end. Some languages do not temp kids to look ahead to the next level. Kids quickly realize that Scratch is a pain to do anything complex in. They start wanting to do more with a language that can do more. I like this aspect of drag-and-drop.

7.The language can never, ever crash for a reason I cannot explain. Earlier this semester I attempted to use AppInventor in my Programming I. I do not use a computer lab, I use BYOD laptops and loaned laptops. AppInventor does not like some laptops. AppInventor is no longer in the quiver. Gamemaker occasionally crashes for no reason. It is out of the quiver. I do not have time for problems I cannot solve quickly.

This still leaves a lot of arrows. What fun an archer can have playing with all those arrows.

Mike Zamansky said...


point 1 is interesting because I've seen many kids turned on by languages (scheme) that others would find dry and boring. Of course I've also seen the opposite.

A lot is conveyed by teacher attitude. We use Scheme and NetLogo in the first half of our intro. I love scheme and like NetLogo, one of my colleagues loves NetLogo and is meh on scheme.

The kids feed off of our passions - more of my kids get turned on by scheme than his and more of his NetLogo than mine.

and point 6 - is that why you like or don't like DnD?

Garth said...

I love DnD languages, for the purpose of learning/teaching programming. I actually like the fact they get awkward when the programs get big. Kids want to move on to something easier to work with large blocks. I love Scratch and it’s like languages up to a point then I want to slip over to Small Basic, Python, RobotC, Corona or something else a bit more formal. (“Formal”, not exactly the word I want but it will work.) Not all DnDs should be evaluated by this limitation. Alice, for example, I sort of set by itself. It is DnD but I know of no tool that does the 3d programming as good as it does that is as simple as it is. One year I had a class do a scene from Hamlet in Alice. Really cool.

Teacher attitude can be everything in getting kids to have fun with a language. A teacher that is experienced and excited by a language can take the most boring language (Java for me) and make it entertaining.