J'ai déjà dit que les programmeurs ne sont pas des gens ordinaires ; ils possèdent une sorte de superpouvoir. Mais le problème, c'est que les programmeurs ne sont souvent pas conscients de cette capacité spéciale. À leurs yeux, ils se croient ordinaires, comme tout le monde. Par conséquent, ce que les programmeurs peuvent faire, d'autres personnes — comme leurs clients/utilisateurs de logiciels — devraient aussi pouvoir le faire facilement. Mais en réalité, parce que la plupart des gens — la grande majorité (y compris les clients des sociétés de développement de logiciels et les utilisateurs qui achètent des logiciels) — sont des novices en informatique (des personnes qui connaissent très peu les connaissances informatiques/logicielles). Une opération logicielle évidente pour un programmeur, lorsqu'on la laisse à un client, peut donner lieu à toutes sortes de choses étranges. Cela rend les programmeurs très malheureux.
Je me souviens d'une fois où un client m'a appelé pour dire que le grand « e » sur le bureau de son ordinateur avait disparu. Je ne comprenais pas—quel grand « e » avait disparu ? Le client a expliqué : c'est l'icône qui ressemble à une grande lettre « e » qui a disparu. J'étais sidéré. Finalement, j'ai compris qu'il voulait dire que l'icône du navigateur IE sur le bureau avait disparu.
Une autre fois, un client a demandé d'ajouter une fonction de recherche à la page. Je lui ai demandé : « Le système possède déjà une fonction de recherche ; pourquoi en ajouter une nouvelle ici ? » Il a dit que ce n'était pas la recherche qu'il voulait ; il voulait rechercher un mot-clé sur cette page. Après plus de communication, j'ai compris que ce qu'il voulait était la fonction du raccourci CTRL+F du navigateur.
À cause de ces caractéristiques des clients, les programmes que les programmeurs considèrent parfaits deviennent des logiciels extrêmement difficiles à utiliser entre les mains des clients. Les appels de plainte sonnent sans fin comme une mégère en train de pester à la campagne. Une analyse ultérieure a montré que la cause profonde est que les programmeurs surestiment la capacité des utilisateurs à maîtriser le logiciel et sous-estiment leur propre capacité à créer des logiciels. Par conséquent, lorsqu'ils regardent ces clients utiliser le logiciel qu'ils ont développé, cela ressemble à un comportement tellement ridicule, comme montré ci-dessous :

Si un programmeur colérique rencontre cette situation, il se plaindra inévitablement au client. De plus, les programmeurs ne sont généralement pas de bonne humeur, donc lorsqu'ils communiquent avec les clients, le chef de projet les accompagne habituellement pour éviter une escalade.
Bien que les clients causent beaucoup d'ennuis aux programmeurs, en fait tout le sentiment de gloire d'un programmeur vient des clients, car ce n'est que lorsque les clients sont satisfaits que les programmeurs éprouvent un sentiment d'accomplissement. Par exemple, les expressions sur le visage de ces clients ci-dessous lorsqu'ils utilisent un nouveau logiciel suffisent à faire sourire un programmeur même lors d'un après-midi de lourd smog à Pékin :

Bien que les programmeurs aient mauvais caractère, ils pensent tous au travail et ne nourrissent aucune rancune personnelle. Lorsqu'une tâche urgente survient dans le développement logiciel, ils font des heures supplémentaires sans se plaindre. Lorsqu'un bogue majeur apparaît dans un logiciel déjà publié, ils s'en veulent profondément et se précipitent pour produire un correctif d'urgence du jour au lendemain. S'ils ne peuvent pas satisfaire les utilisateurs à la première occasion, ils perdent l'appétit pour le thé et la nourriture et ne peuvent pas dormir. Même lorsqu'il n'existe vraiment aucun remède complet à court terme, ils trouvent des astuces peu orthodoxes—mais ce sont des solutions efficaces—pour aider les utilisateurs à traverser temporairement la difficulté. Par exemple, voici un correctif d'urgence :

Les clients devraient se montrer compréhensifs envers les programmeurs. La vie d'un programmeur est en réalité dans un état très contradictoire. La programmation n'est pas comme les autres secteurs—par exemple, un maçon pose des briques, et chaque couche rend le mur plus haut. Mais la programmation est différente. Parfois, un programmeur écrit du code toute la journée, transpire d'anxiété, mais la progression du développement peut ne pas avancer du tout, et parfois même régresser. La programmation logicielle est un monde à la fois virtuel et réel. Parfois, vous ne comprenez pas pourquoi un morceau de code fonctionne, et parfois vous êtes surpris qu'un logiciel fait de ce code puisse réellement s'exécuter, comme le montre l'image ci-dessous :

Enfin, permettez-moi de mentionner quelques précautions à prendre avec les programmeurs. Parce que les programmeurs ont affaire à la logique de programmation toute la journée, ils sont particulièrement sensibles au lien de cause à effet. Si le lien de cause à effet dans vos propos n'est pas très clair, cela les rendra confus ; si le lien de cause à effet dans vos propos est incomplet, cela leur fera faire la mauvaise chose. S'il y a ...if, il est préférable d'utiliser ensuitethenpour terminer, ou d'utiliserelsepour donner des choix. Le sujet doit être clair. S'il n'est pas clair, l'accident montré dans l'image ci-dessous se produira :

Si vous êtes programmeur, vous comprendrez ce que je dis.