Two Sisters, Two Ways to Make an Idea Visible
Today, two sisters walked into two very different programming problems.
For Enning, the homework was simple to state:
Draw 3 vertical bars to represent 3 random numbers.
For Tianjing:
Finish the chessboard and put the 4 rooks on it.
On the surface, both assignments were about drawing.
They were not.
Enning: Numbers Become Pictures
Enning's program began with three random numbers stored in an array.
Yesterday, she had learned the array name numBox. Today, after reviewing the class material repeatedly on paper and on her Mac, she felt confident enough to start again from the beginning.
So we did.
function setup() {}
😂
Then the painful reality returned.
She had to reconstruct the idea rather than reproduce yesterday's code.
At one point, she was using a new array name, m, which we had deliberately chosen instead of yesterday's numBox.
She had used m comfortably for about ten minutes.
Then the problem required more thought.
Her hand began writing:
... numBox ...
“Did you start rote learning?” I asked.
She looked confused.
Then she realized what had happened.
“Ah, yes.”
And laughed.
She changed it back to m.
Later, while working on the three bars, she looked at her result and gave her diagnosis:
“One is slanted.”
Her code was not yet expressing the mathematical idea as cleanly as she wanted.
That was the real homework.
Not drawing three lines.
Learning how to make numbers visible.
Tianjing: An Idea Becomes a Thing
Tianjing's starting point was completely different.
At the beginning of today's work, she barely knew what chess was. She remembered only:
“Grid.”
“Pieces inside squares.”
She searched for chess images and began recognizing the pieces.
“Little pawn!”
“That one is ‘vehicle’...”
She learned that it was called a rook.
Then she chose the rook as the first piece to put on her board.
“Black or white?”
“黑的吧.”
From there, the board became a programming problem.
She worked with coordinates, rectangles, CGFloat, loops, paths, and image assets.
She even noticed that the white square underneath the white rook did not need to be drawn because the image itself had a white background.
Then placing the black rook on a black square exposed a strange white rectangle around the image.
Something was wrong.
After comparing image files, we discovered that the Swift code wasn't the culprit.
WhatsApp had changed the image.
And when Tianjing asked how to make the image smaller, she encountered two drawing methods: one based on a point and another based on a rectangle.
A point tells the program where.
A rectangle tells it where and how big.
“Do you know why?” I asked.
“Yes!”
Loudly. 😂
Her homework was now waiting:
Finish the chessboard and put the four rooks on it.
Two Directions of Thinking
The two assignments looked similar because both involved drawing.
But they asked the sisters to travel in opposite directions.
Enning:
numbers → representation
She has to take something abstract and find a visual form that communicates it.
Tianjing:
idea → representation → object
She has to take something she has just discovered in the real world and construct a digital version of it.
One is learning to represent.
The other is learning to construct.
Neither has to get there perfectly on the first try.
The important thing is that the code becomes a place where their thinking can become visible.
Homework can look deceptively small.
“Draw three bars.”
“Put four rooks on a chessboard.”
But behind those tiny assignments are very different acts of learning.
Enning is discovering that remembering yesterday's code is not the same as understanding today's problem.
Tianjing is discovering that even when she knows almost nothing about the subject, she can investigate, learn just enough, and start building.
Two sisters.
Two assignments.
Two directions.
And two different ways of turning an idea into something we can see.
A simple programming exercise can become a window into how a learner thinks.
Give learners something concrete to make, then let their mistakes, choices, and revisions reveal the thinking underneath.
The goal of learning is not merely to produce correct code. It is to help a learner move between ideas and representations—and eventually learn to see and change their own thinking.