Our Unfinished Chess App
Marius was leaving for Japan the next day, making this our last lesson before his trip.
At the beginning of class, our chess app was in an awkward state. Two kings had been redrawn using a new rendering method, while the remaining 32 pieces still relied on the old implementation. Our first task was simply to rebuild the chessboard.
Marius removed all of the old pieces, redrew every chess piece with the new code, and proudly committed the result:
"we get 32 pieces back."
The board looked complete again.
But it was still only a picture.
With just eighteen minutes left, I suggested one more challenge.
"What if we make the pieces movable?"
The idea immediately excited Marius.
If we could do that before he left, perhaps he could play chess with his twin brother during the trip to Japan.
After a few changes, the pieces finally moved.
Then we discovered another problem.
The game had no capture feature.
Whenever one piece captured another, the two pieces simply overlapped.
Normally, that would be considered a serious missing feature.
Then a simple idea appeared.
In a real chess game, captured pieces are removed from the board by the players.
Why couldn't we do exactly the same thing?
Instead of implementing capture in software, we simply lifted the captured piece off the iPad screen by hand.
Nothing else changed.
Suddenly, the unfinished app became completely playable.
The final Git commit of the lesson read:
"our game is playable."
Children often believe software must be "finished" before anyone can use it.
This project revealed a different way of thinking.
A useful system does not always require every feature to exist.
Sometimes, the best solution is to let people do what software has not learned to do yet.
Rather than waiting for perfection, we discovered a workable bridge between the digital world and the physical world.
The result was not a perfect chess app.
It was something more valuable that afternoon:
A game two brothers could enjoy together during a trip.
An unfinished program can already create meaningful experiences when its essential purpose is achieved.
By focusing on the core goal—letting people play—instead of insisting every feature be completed first, simple physical interaction filled the remaining gap.
Innovation often comes from redefining what "finished" means. When learners realize that useful systems can evolve through iteration, they become more willing to build, test, and improve rather than waiting for perfection.