The Woes of Programming
One must perform perfectly.
The computer resembles the magic of legend in this respect, too. If one character, one pause, of the incantation is not strictly in proper form, the magic doesn't work. Human beings are not accustomed to being perfect, and few areas of human activity demand it. Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.
Other people set one's objectives
Other people provide one's resources, and furnish one's information. One rarely controls the circumstances of his work, or even its goal. In management terms, one's authority is not sufficient for his responsibility. It seems that in all fields, however, the jobs where things get done never have formal authority commensurate with responsibility.
Dependence on other programs
Other people's programs are often maldesigned, poorly implemented, incompletely delivered (no source code or test cases), and poorly documented. So one must spend hours studying and fixing things that in an ideal world would be complete, available, and usable.
Fast Technological Advancements
The technological base on which one builds is always advancing. As soon as one freezes a design, it becomes obsolete in terms of its concepts. But implementation of real products demands phasing and quantizing.
Takeaway for a Lead
The obsolescence of an implementation must be measured against other existing implementations, not against unrealized concepts. The challenge and the mission are to find real solutions to real problems on actual schedules with available resources.