From the comments:
"Programming computers seems deceptively like a technical discipline. It requires mathematical and logical understanding and comprehension of technical details. Programmers produce precise seeming digital output and pretend to follow engineering protocols.
Of course, programming is not a technical discipline. It is a creative and social act. The essence is not moving bits around but understanding the users and their quirks and mistakes. Machines have to adapt to men, not the other way around. Programmers need to be in close contact with their customers to do a good job. The business process, the cultural context, the hopes and dreams of the users add up to a living system that software has to grow into, not an engineering specification."