The Tar Pit
The Joys of the Craft
Programming satisfies on multiple levels. The sheer joy of making things — creating something from nothing. The pleasure of building things that are useful to other people. The fascination of fashioning complex, puzzle-like objects. The continuous learning that comes with a field that never stands still.
There's also the delight of working in a medium that is so tractable. Unlike physical materials, code bends to the programmer's will almost effortlessly. Few creative activities offer such immediate feedback.
The Woes of the Craft
But programming demands perfection in a way few other crafts do. One misplaced character can break everything. And the programmer rarely sets the objective — you implement someone else's vision, under someone else's constraints, on someone else's schedule.
The gap between the ideal system and the real one is always frustrating. You depend on other people's code, other people's decisions, and other people's bugs. Authority rarely matches responsibility. Keeping up with the field is a treadmill. And by the time a product ships, it often feels obsolete.