понеділок, 30 жовтня 2017 р.

Lesson with Kids: Making the Big Project (talk at JavaOne)

This year I had honor to speak at JavaOne Conference in San Francisco, CA. I delivered a talk about teaching programming to kids. Despite keynotes and several other interesting talks at the same time, there were around 120 people, parents, willing to find out, how to show their kids what the programming is. They wondered from what to start and how to deal with the computer games which might seem more interesting to children than programming. In this article I’ll highlight some of the ideas from the talk and write about the experience of making the big project with a group of children. The presentation to the talk is here.
Speaker at Java One 2017


Every kid takes his parents as gods: they give everything, they decide almost everything in the life of the little one and they leave for jobs making kids wait for ages feeling lonely and abandoned. For sure each kid wishes to find out, what is remarkably important and interesting at that job, so that the parent changes the cozy place at home and family company for it. The children of my colleagues are happy not only to visit the parent’s work place but also to feel pretty much what their parents feel on the developer’s place.

First of all let’s discuss some rules you’re to follow when operating with children
  1. Nurture love to learning in a kid, don’t make punishment out of striding.
  2. Give comprehensible, possible to implement relatively short task. The leftovers (merging) you can do by yourself at first.
  3. Put the task into the shiny cover so that it looks appealing to the kid.
  4. Provide the surface to work. The less obstacles there are to start — the better.
  5. Expect the results, show you care about the process and can help if needed.

Outcome: by any means the first project should be something to be proud of. Pull it to the pretty condition together if needed, pretend that kid does an important job. Don’t say: «It’s only the first project, that’s fine that it barely works». Rather emphasize: «You’re really smart, you’ve managed to do such a great job, and I believe your next project will be even better»!

How to make one big project with kids

Project: a computer game which kids design on their own.
Kid’s number: initially the idea was designed and tested on a group of kids (6-8 persons). You also can do it with one child but better invite a friend of his. 
Kid’s age: 10-12 (initial group), but can probably be a bit younger and for sure older.
Programming language: Scratch. It’s good because it’s easy to code in it, it’s visual, fits for the little ones. Older, 14+, can start from more «adult» language. 
Total time: 2 lessons * 2 hours. 
Amount of lessons before the Big Project: 4+.
Adults number: 2 teachers, one for each subgroup + 1 to review (optional).

Steps of the Big Project
  1. Sit in circle, come up with the general idea of what to develop. Brainstorm, kids will catch up and produce many ideas you would never think of.
  2. Divide the project into logical parts or tasks which can be implemented by one group.
  3. Create the teams responsible for the big tasks, who will analyze them precisely, and implement them with the moderator (teacher). There is always someone who is a leader, who «knows how to do something». This kid should take the responsibility, so that others would choose to go to him and help.
     
  4. Divide the big task for the little ones and make sure each kid sits at the comp and programs something.
  5. Merge the parts and get the better idea of the full project. This is an example of a thought task kids might screw up and which is not really interesting. Everyone has an idea of how it should be, but not many want to implement. 
  6. Each kid should have an idea of how to make the common project better and more interesting. The best ideas are taken spread among others and discussed.
  7. As far as the children already felt the process of writing the code, they should try it on their own. Each implements the discussed idea. Implemented tasks are merged by kids with teacher’s help.
  8. When new part is added, the ones who have finished their work play the updated game. When all the planned parts are in the project, teacher plays the game on the big screen. Bugs are discussed and fixed. It’s happiness and a reason to be proud for a child when see theirs part in the project!
  9. It is good when there is someone who can review the project and who wasn’t involved in its creation. We didn’t simply made the project as one of the tasks. We played a game: some private entrepreneur wrote a letter in which asked kids to be his team and write some game. He mentioned requirements there. At one lesson we had a dog who he sent to watch at the process. The idea of a dog worked only for part of the kids, other part wanted to play with it. When we had the project, we invited the customer and he was the one to review and comment it, wish something else. As far as that was the last class, kids were proposed to continuer the project and implement the requests of the customer on their own. So if you're making a home project, call mom or grandparents who didn’t participate to look at in in the end and tell their ideas and wishes, how to make it better.

Link to the repository with the common game we created
https://scratch.mit.edu/projects/162178622/

This task gives special feelings of being involved in the process, makes everyone valuable team member and helps understand that it’s possible to create something big.


How to persuade a kid to program rather than play computer games?

Computer games cause addiction. Many people nowadays are addicted to seen actions which should happen all the time. No action - life is boring. As I can see by watching some programmers and my 15 years old nephew, programming can also be an addiction. You run to job/home to turn on your computer and write some code! 

The interesting part is how to switch mind from playing to coding. What I can advice is to take all the obstacles from the way, e.g., install by yourself or together all what is needed, don’t make a kid do boring stuff, think together of some project which will be interesting. Put the goals and achieve them. Pleasure from getting what you wanted is also addictive. 

When the kid is taught to like the interesting part of the project, start showing him the parts which go together with it. Every little one wants to become independent. All in all, he’ll start doing all the process with merges and bug fixes on his own. Don’t take his achievements, let him do all he can on his own.

I hope this article gave you some ideas how to work with your kid(s). Will be happy to give more advice and answer the questions. Good luck and have fun! ;)