Froebel’s Gifts were meant to be given in a particular order, growing more complex over time and teaching different lessons about shape, structure and perception along the way. A soft knitted ball could be given to a child just six weeks old, followed by a wooden ball and then a cube, illustrating similarities and differences in shapes and materials. Then kids would get a cylinder (which combines elements of both the ball and the cube) and it would blow their little minds. Some objects were pierced by strings or rods so kids could spin them and see how one shapes morphs into another when set into motion. Later came cubes made up of smaller cubes and other hybrids, showing children how parts relate to a whole through deconstruction and reassembly.
These perception-oriented “Gifts” would then give way to construction-oriented “Occupations.” Kids would be told to build things out of materials like paper, string, wire, or little sticks and peas that could be connected and stacked into structures.
Initial designs for sophisticated software applications are invariably complicated, even when developed by competent engineers. Truly good solutions emerge after iterative improvements or after redesigns that exploit new insights, and the most rewarding iterations are those that result in program simplifications.
Evolutions of this kind, however, are extremely rare in current software practice—they require time-consuming thought processes that are rarely rewarded. Instead, software inadequacies are typically corrected by quickly conceived additions that invariably result in the well-known bulk.