Learning Programming the Way Kids Do

A few weeks ago, me and a couple of neighbors from our town in Metuchen, NJ started up a “CoderDojo” – it’s a programming club for kids that we are running at the local library.

I’ve been a programmer for a long time, but it turns out there’s all sorts of interesting educational tools out there that are exactly what we need to get these kids working on at the club. It’s a lot of new stuff for me, using lots of cool and fun technologies. A lot of it centers around a project developed at MIT called “Scratch Studio.”

So lately I’ve been learning about how Scratch works, and trying out some simple animation and game ideas as a way to practice basic Scratch programming techniques (and keep one step ahead of the kids we are mentoring!).

Here’s my latest creation – it’s a silly little maze game where you have to bring the blue snack over to the yellow creature. It’s got lots of bugs and there’s lots of ways I could make it more fun (that’s the beauty of programming!) but for now, it just kind of works…

Check-out Maze-Dot!

For more info about what we’ve been up to with the club, hope you’ll check-out our website.

Moving to Deployment

A critical aspect of any technology project is how to move from the stages where you do all the heavy lifting and hard work, over to the stage where users can actually use the system.

Flat Design Icons Set Of Vector Line Prototype Promote Idea

Some would say that the heavy lifting starts there!

Getting the system to the users can be hard – despite the fact that the obstacles are well-known, have been with us for as long as I can remember, and are really not so hard to avoid – challenges remain, and they are significant.

For example, often some of the most critical people in the project don’t become involved until the eleventh hour. If it’s an enterprise line-of-business application, maybe you didn’t talk to the folks on the fifteenth floor in Marketing about what they really need the app to do.

If it’s a consumer-facing product, maybe you didn’t get any real users onto the system during any phase of the development and testing.

Another way things can go – sort of the opposite of not getting the right people involved until too late – is kicking people off the project because you don’t see their role as being one closely involved with deployment.

For example, a new system will have the potential for a huge number of bugs in core functionality as soon as it actually gets in front of users. In fact, the software might seem practically unuseable at the start. But the best people to fix those bugs are already working on something else and consumed with new problems.

So get your developers into the deployment!

Assign one of your most trusted programmers to be immediately available to fix problems: Fix the problem, get the users back running the system, get more feedback, improve the system, etc…

Both of these are good ideas – basically getting and keeping the right people engaged at the most critical moments.

And yet, we rarely do either of these things, and we feel the impact of the poor alternatives.

Deployment doesn’t have to be a drain on user productivity or an obstacle in the road to future product development. If you look at it instead as a valuable opportunity to efficiently make huge gains in system quality, then you’ll really start to benefit from all that deployment has to offer.

Got a deployment story you’d like to share? 🙂

Starting up a CoderDojo in Metuchen, New Jersey…

I’ve got a new personal project that I’m pretty excited about – CoderDojo Metuchen.

A guy in my town put out the call recently for anyone who was interested in working on this project. I jumped on it.

The idea is, you find ways to encourage and mentor learning to program (code!) in kids and teens.

I like mentoring, so that’s a plus. And I think getting youths involved in interesting activities and projects is another good thing. And, I’ve been looking for good volunteer opportunities for a while but always wanting to find something I had a passion about – not just something that someone else could be doing just as well as me.

This, I think I can do better than most. And that’s a good way for me to spend my time, in my humble opinion.

We shall see. 🙂