A while back, a friend talked to me about the lack of ways to easily teach kids to code. I looked around and I found that though there are tools, they're not really sufficiently game-like. Don't get me wrong, I think tools like Scratch are awesome. But the barrier to entry is too hard and you typically need someone to show you the ropes in the beginning.
I left it at that, but then later another friend was talking how code was language that driving the future of the world - and if you know nothing about how code works, you don't actually know how your world works. Everyone knows how a car works, the engine turns and that's rotation is transferred to the wheels. Nothing magical about it. But how does code work? What parts are there? How do they fit together? It's not magic, but yet it's totally unknown to most people.
Writing Code is Hard Because it Must Be Hard!?
But how could you make coding simple? There are so many things to know, not the least of which are syntax (ordering and formatting of code) and what operators do what. Without knowing so many things, you can't do the simplest thing which leaves you without a place to start? Not quite, syntax is only required when you write code as text - with graphical programming, syntax takes care of itself!
The next problem is what programs should someone who wants to learn programming write? And in what order do you write programs? And how do you guarantee continuous feedback and gratification?
Scratch that I mentioned above allows you to easily write programs, but it's totally open ended. That's good and bad, it's awesome once you've figured out the basics, but it's really difficult when you're just starting out. Something more limited with intermediate steps would be perfect.
The Game That is the Solution
Well, the solution is a game, of course! And that game is Machinist-Fabrique. In Machinist-Fabrique you'll
- solve a well defined and fun puzzle
- program components to solve parts of the puzzle
- use some (or all) of a limited number of supplied operators (open door, close door, loop 10 times, send message etc)
The components can do things like flip, blow, kick or elevate orbs.
Right now, our next goal is to release a playable beta of the game so we can start collecting feedback from potential users. If you're interested in getting your hands on an early beta, let me know!