Que les gens savaient ce qu'ils voulaient.
Pendant longtemps, j'ai pensé que je parlerais avec les gens, qu'ils décriraient un problème ou un flux de travail et que je le traduirais en code et l'automatiserais. Il s'avère qu'à chaque fois que cela arrive, ce qu'ils pensaient vouloir n'est pas vraiment ce qu'ils voulaient.
Edit : Je suis d'accord avec la plupart des commentaires. Ce n'est pas une réponse technique et ce n'est peut-être pas ce que l'auteur de la question recherchait. Elle ne s'applique pas uniquement à la programmation. Je suis sûr que ce n'est pas non plus mon hypothèse la plus ancienne, mais c'est la chose la plus frappante que j'ai apprise au cours des dix petites années où j'ai fait ce métier. Je suis sûr que c'était de la pure naïveté de ma part, mais la façon dont mon cerveau est/était câblé et l'enseignement et les expériences que j'ai eus avant d'entrer dans le monde des affaires m'ont amené à croire que je ferais ce à quoi j'ai répondu ; que je serais capable d'utiliser le code et les ordinateurs pour résoudre les problèmes des gens.
Je pense que cette réponse est similaire à celle de Robin concernant les non-programmeurs qui comprennent ou se soucient de ce dont je parle. Il s'agit d'apprendre le métier comme un processus agile, itératif et interactif. Il s'agit d'apprendre la différence entre être un singe de programmation et être un développeur de logiciels. Il s'agit de réaliser qu'il y a une différence entre les deux et que pour être vraiment bon dans ce domaine, il ne s'agit pas seulement de syntaxe et de vitesse de frappe.
Edit : Cette réponse est maintenant community-wiki pour apaiser les gens qui sont contrariés par le fait que cette réponse me donne du crédit.