the joys of the craft

The Joys of the Craft

Why is programming fun? What delights may its practitioner expect as
his reward?

First is the sheer joy of making things. As the child delights in
his mud pie, so the adult enjoys building things, especially things
of his own design. I think this delight must be an image of God's
delight in making things, a delight shown in the distinctness and
newness of each leaf and each snowflake.

Second is the pleaseure of making things that are useful to other
people. Deep within, we want others to use our work and to find it
helpful. In this respesct the programming system is not essentially
different from the child's first clay pencil holder "for Daddy's
office."

Third is the fascination of fashioning complex puzzle-like objects of
interlocking moving parts and watching them work in subtle cycles,
playing out the consequences of principles built in from the
beginning. The programmed computer has all the fascination of the
pinball machine or the jukebox mechanism, carried to the ultimate.

Fourth is the joy of always learning, which springs for the
nonrepeating nature of the tasks. In one way or another the problem
is ever new, and its solver learns something: sometimes practical,
sometimes theoretical, and sometimes both.

Finally, there is the delight of working in such a tractable medium.
The programmer, like the poet, works only slightly removed from pure
thought-stuff. He builds his castles in the air, from air, creating
by exertion of the imagination. Few media of cration are so
flexible, so easy to polish and rework, so readily capable of
realizing grand conceptual structures. (As we shall see later, this
very tractability has its own problems.)

Yet the program construct, unlike the poet's words, is real in the
sense that it moves and works, producing visible outputs separate
from the construc itself. It prints results, draws pictures,
produces sounds, moves arms. The magic of myth and legend has come
true in our time. One types the correct incantation on a keyboard,
and a display screen comes to life, showing things that never were
nor could be.

Programming then is fun because it gratifies creative longings built
deep within us and delights sensibilities we have in common with all
men.

- "The Mythical Man-Month: Essays on Software Engineering" by
Frederick Brooks, 1972, pp. 7-8.

_
_