From a Piece of Paper to a 3D Table
Situation
Enning had just finished a gorgeous 2D pulley in her Xcode iOS project. She had explored the wheel, the ropes, the boxes, and their relationships. The project was already a wonderful achievement.
Then Donald, naturally, had another idea.
“Why don't we build one in 3D?” LOL.
Enning began a new journey with p5.js and WEBGL. She was noticeably more confident and fluent this time. Yet she still wanted to reproduce her 2D achievement in the new world.
Near the end of class, the table legs in her 3D scene needed some polishing. Donald gave her a small homework assignment:
“Finish the table.”
Hours later, Enning submitted her work. Four legs, perfectly matching the tabletop. Homework completed!
But the story of how she got there was even better than the result.
Turning Point
Enning initially approached the 3D table much as she had approached her 2D drawings.
“If you did it that way, you get a piece of paper cut, not a table,” Donald pointed out.
“Oh, yeah. A thin paper.”
Her mind began to change. LOL.
“We need 4 solid legs, right?” Donald asked.
“Yes,” Enning answered, and began typing cylind...
“box is enough and may be easier,” Donald suggested.
She switched to boxes and started using hardcoded values to build the legs. Donald saw another opportunity.
“Is it a good time to define names for some values?”
“Oh, yes. Should I put it here inside the function or on top?”
Although Donald had explained this distinction multiple times before, Enning wasn't quite sure. So he explained it again.
This time, the need was right in front of her: she was building a real system of objects whose dimensions and positions had to fit together.
Emergence
With just two global constants—
let legWidth = 20
let tableSide = 150
—Enning discovered a remarkable convenience.
When she needed half a leg's width, she could use legWidth / 2. When she needed half the tabletop's side length, she could use tableSide / 2.
The numbers were no longer isolated values scattered through her code. They had names, meaning, and relationships. If she changed a dimension, the expressions that depended on it could adjust accordingly.
She could coordinate the tabletop and the legs without having to recalculate and replace every related number by hand.
The result was more than a table that looked right. Enning was gaining control over the system she was building.
She became happy and lighthearted, enjoying the feeling of being able to shape her own 3D world. Her growing confidence was visible not just in the finished code, but in the way she worked.
And Donald? The happier the kid, the bigger the smile on Donald's face. LOL.
Two named constants. Four solid legs. One very happy creator—and one very happy teacher.
Learning
From 2D representation to 3D construction: A rectangle that represents an object in 2D may become nothing more than a thin sheet in 3D. Building a solid table requires thinking about thickness, dimensions, and positions in three-dimensional space.
From imitation to reconsideration: Moving into a new dimension is not simply copying an old solution. Enning had to rethink what a table actually is and how its parts fit together.
From hardcoded numbers to meaningful names: legWidth and tableSide made the code easier to understand, modify, and reuse. Expressions such as legWidth / 2 and tableSide / 2 preserved relationships instead of scattering unexplained numbers throughout the program.
From uncertainty to control: Variables, functions, and scope become more meaningful when a learner encounters a genuine need for them. Even a familiar concept may require repeated explanations before it becomes useful in practice.
From completing a task to owning a system: Enning wasn't merely following instructions to draw four legs. She was discovering how to control the dimensions and relationships of the objects she created.
The emotional dimension of learning: Her confidence, fluency, happiness, and lightheartedness were integral to the experience. A child who feels in control of a creation has a different relationship with the code—and a delighted teacher becomes part of that positive feedback loop.
Theme
Creative Agency
What Is Possible — A student can move from a successful 2D project into a new dimension, build a solid 3D object, and begin controlling a system of interrelated parts with only a few meaningful variables.
How Does It Happen — Start with something the student already understands and cares about. Introduce a new challenge, offer small nudges at the moments they matter, explain familiar concepts again when necessary, and let the student discover the power of those concepts through making.
Why Does It Matter — Programming becomes more than writing instructions when a learner gains genuine control over a creation. Confidence and joy are not decorative extras; they help turn technical knowledge into personal agency and make learning a shared source of happiness for both student and teacher.