Archive for December, 2013

Reflections on Hour of Code 2013

December 20, 2013 Leave a comment

This year I was fortunate enough to an audience of enthusiastic technologists to share Computer Science Education Week with. We dutifully completed our our hour of code exercise. In general the event was a huge success that left many students smiling and excited about computer Science. However, with any endeavor there are things that can be done better in the future.

My article today will focus on challenges our class faced, key observations and specific ideas for improvement. My observations today are based on our hands on class room experience, my own efforts evaluating teaching vehicles as well as my experience teaching my four year old and six year old the concepts I shared in the class room.

Part I: Challenges


In my particular scenario a dedicated computer lab was not available when we held our hour of code exercises. The offline exercises were conceptually appealing but presented their own logistical challenges. Our class opted to bring in as many phones and tablets as possible. This resulted in about half the class having a device. This was anticipated, and I arranged to have several extra devices on hand. When we setup our devices for the exercises, we were met with our first dose of reality.

Reality #1 All devices are not treated equal. Several devices could not load the low end exercises. Every parent is not going to have the interest or means to buy the newest technology for their child.

In our experience the older kindles experienced the most problems. This problem was amplified by not having any native kindle apps to go along with hour of code. I know why my family purchased a Kindle: Cost. I am sure other families have done the same. Our education efforts need to cater to a broader base of technology.


The school where we had our Hour of Code had a student wi-fi network. Even having a student accessible wi-fi network was a great blessing. However, we also found that we quickly consumed all of this precious resource.

Reality #2 School networks can be unreliable and slow. Any material that is streamed can not be relied on in a classroom setting

In our situation we made some accommodations by having a few of the phones switch from the wi-fi to cellular networks. Results were mixed for the students that remained on wi-fi. Some students got what they needed while others became the victims of network metering and never setup their device.

Part II: Key Observations

Students that Tackled Smaller Steps Did Better

Breaking a problem into smaller steps is a fundamental concept for problem solving. This simple principle has brought me great success in school and in the work place. Certain students broke the problems down naturally while others tried to do too much. In my own family my older child broke down the problem while my younger child struggled with this idea. Without fail the students that solved smaller problems moved through the material faster. This observation leads to the following paradox:

We must think small to think big

It is through partitioning the problem space that we can swiftly solve larger problems. As learners this means we must resist the urge to appear proficient out of the gate. We live in a world where perfection is paraded  as normal. Music is auto-tuned, models are photo shopped and athletes dope to perform beyond their natural ability.  Contrary to popular belief, perfection is not easily obtained.

A learner will simply not be proficient when they are first exposed to a new concept. And, the key secret is to not only accept, but to embrace this fact. Everyone must start with the smallest idea they can grasp and build out from there. My neighbor may be ahead of me, or at least appear ahead of me, but that does not matter because it is up to me to master the fundamentals at my own pace. Think of how many times it took your hand to learn writing. Think of how long it takes to learn an instrument.

Learning is a process

As educators we may need to slow down students that are unsuccessfully taking on multiple steps. We must encourage students to solve the problems they can solve. Included in this is we must resist the urge to say “Well, Billy figured it out, you just need to work harder”.  Confused learners that are trying don’t need to be told to work harder, they need to be told how to break the problem down into smaller pieces. At no point should the words “it’s obvious” be uttered from our mouths. “It’s obvious” is an intellectual cop out that actually says “I can’t explain this better”.

Students that Verbalized Their Efforts Fixed Problems Faster

This observation supports the classic “Rubber Duck” theory where the act of telling another person out loud what is happening, or an inanimate object like a rubber duck when no one can listen, helps the speaker to quickly, almost magically, resolve their problem. I have a variety of personal experiences that speak to this idea. In our classroom experience the same patterns emerged. Specific students would naturally say aloud what they were doing. Meanwhile students that quietly toiled stayed stuck longer. Often it was when they were asked to explain out loud what they did that the problems just “jumped out”

Explain the problem to someone if you can’t solve it

As learners, the important thing to take away from this experience is to involve others when we face problems. They can’t just be there, we must put the problem to words. If no one is available we must still vocalize the problem. Speech invokes important parts of the brain, and when you are faced with a difficult problem you need all of the help you can get.

As educators this means we need to encourage more discussion. This can be difficult to do in a classroom environment if everyone were to talk at once. Maybe it has to happen outside of class, but the dialog needs to happen. The Hour of Code instructional aids had great advice when it came to providing help

Ask three then me

This approach naturally promotes an environment where problems are vocalized. Some teachers also allow students to correct their work to redeem some points on homework and exam questions. The general line of thinking is that by doing it right a second time a student will learn what is needed. However the “Rubber Duck” theory seems to highlight that if we want true understanding in our students, they need to explain out loud how they tried and failed to solve the problem. Talking takes more time and effort, but conveying true understanding has a life long impact. I know you are busy as an educator. I also know that deep down you want to make a difference in the world. Do the right thing regardless of the cost.

Good Enough Software

As a professional programmer I have had moments of near manic OCD on projects. I have also had moments where I had to just be satisfied when things were “good enough” As I observed the Hour of Code I considered whether “good enough” really is good enough. I will present the case for subscribing to this principle and rejecting it and allow the reader to form an opinion.

The case for “Good Enough”

Several levels of the Light Bot Hour of Code really stumped the new programmers. Nearly everyone was diligent and eventually found solutions. Some of the solutions were longer than they needed to be and less than elegant. The validation engineer in me immediately saw the imperfections, but I held my tongue and  no one was was asked to repeat any level where the goal was achieved. The point of the lesson was not to become a master Light-Bot technician, the point was to get a feel for a variety of procedural approaches.

You need a clear goal to know what is “Good Enough”

Reality #3 The world runs on “Good Enough”

The fact of the matter is that the real business world is based on “Good Enough” The goals end up being things like “Make money with the software” or “Be on the shelf before Christmas”. These are times where things that may seem important to programmers, such as white space usage, actually have no bearing on the business goals. In the same vein it is easy for educators to place emphasis on items that don’t support real life goals. Stepping back and asking “What am I trying to achieve in my students lives?” can have profound impact on the details you scrutinize and choose to overlook.

The case against “Good Enough”

“Good Enough” can also be considered a slippery slope that encourages mediocrity. Where ever you set the bar is where people will rise or fall to. The academic world simply does not have room for sub-par work. Only students that master the fundamentals have earned the right to use artistic license to be selective in what principles they apply.

Train hard, fight easy

Reality #4 Excellence is a rare combination of skill, talent and dedication

These principles are near and dear to my heart. These were words repeated by my wrestling coach and my track coach. These were men I had great respect for, men that were champions, men that built champions. They were relentless in their pursuit of perfection. I can remember specific teachers in college that pushed harder than others for excellence. If you can achieve this presence as an educator, your influence will forever be etched in the minds of those you teach. The key point to be this force is that you must achieve personal greatness. My wrestling coach was a four time state champion. My track coach set records that people are still trying to beat today. The professors who pushed for excellence had worked on important projects in the industry. They forced excellence because they intimately understood what it took. Asking the question “Am I qualified to expect excellence?” can set the stage for teaching beyond “Good Enough”

As a learner we must seek to understand what the instructor is trying to get from us. Do they have a goal in mind? What is expected of you? Do they seem to be forcing excellence and not settling for “Good Enough”?  Have they proven mastery in their own life?

Part III: Improvements

  • Coding exercises need to work on old devices
  • Dedicated coding exercises are needed on Kindle
  • All downloaded content must be prepared outside of class
  • Show struggling students how to decompose the problem into small, manageable steps
  • Encourage discussion to have students solve problems on their own
  • Use exercises that note when a solution is good enough or optimum. This was seen some in Light Bot Hour Code, but was more apparent in the game version with the star system.