Re-citer pour le contexte et et la compréhension plus facile:
"Le débogage est deux fois plus difficile que l'écriture du code. Par conséquent, si vous écrivez le code aussi intelligemment que possible, vous n'êtes pas assez intelligent, par définition, pour le déboguer."
Ce que Brian Kernighan a écrit ici se réfère évidemment à la convolution, et il a utilisé à tort le mot intelligent.
"Le débogage est deux fois plus difficile que l'écriture du code. Par conséquent, si vous écrivez le code aussi [convolué] que possible, vous n'êtes, par définition, pas assez intelligent pour le déboguer."
Convolution:
A thing that is complex and difficult to follow.
Intelligent:
Showing intelligence or skill; ingenious
Les programmeurs instruits savent que le code simple est ingénieux. Un code aussi intelligent que possible devrait être simple par définition. Les programmeurs instruits éviteront également de travailler avec et d’écrire du code compliqué comme la peste. Ils transformeront également le code compliqué en code intelligent chaque fois qu'ils en auront l'occasion. Le code commence généralement de manière compliquée et aborde l'habileté à mesure que la connaissance du domaine et la compréhension de la capacité cognitive humaine dans la programmation sont mieux comprises à travers l'expérience et les connaissances partagées.
En raison de la popularité de cette citation et de la popularité assez répandue de Brian Kernighan dans l'industrie, cet emploi abusif du mot a un impact social négatif et j'aimerais sincèrement que l'homme lui-même s'en saisisse. Avant d’écrire cet article, j’ai essayé de voir si je pouvais simplement lui envoyer un courrier électronique, mais j’ai été incapable de trouver des informations de contact par courrier électronique que j’ai comprises :(.
L'impact social négatif que j'ai vu est que d'autres programmeurs ostracisent leurs pairs les plus intelligents, car ils voient maintenant l'intelligence comme un problème. Le vrai problème, ce sont les pairs stupides qui pensent être intelligents en faisant les choses d'une manière nouvelle et non inventive, et en inventant constamment de nouvelles choses quand il n'y a aucun avantage, au lieu d'acquérir et de comprendre la communauté en général et de réutiliser les idées intelligentes autant que possible.
J'ai besoin de préciser, cependant, qu'il est souvent plus difficile de comprendre que d'inventer la vôtre. En raison du problème courant rencontré par l'industrie en matière de délais irréalistes, inventer le vôtre pour résoudre votre petit problème de niche servira à gagner du temps. Ceci est basé sur l'observation que les objets utiles et réutilisables ciblent généralement une niche plus grande, ou fournissent une abstraction utile pour l'invention. Il est également basé sur le fait que les gens ciblent les grandes niches pour gagner plus d'argent, ce qui rend souvent l'outil extrêmement difficile à utiliser en raison de la complexité inhérente à la création d'un élément utilisable pour un large domaine d'applications.
L’autre impact social négatif est que cela empêche le progrès et le désir de comprendre parce que, dans notre monde égocentrique, nous allons immédiatement nier notre propre manque de compréhension et rayer le code de «compliqué» même si, une fois comprise, l’idée est en réalité Plutot malin.
TODO Je voudrais citer quelques références, mais je voudrais aussi le manque de références afin de ne pas entraver ma capacité à partager des informations. Je vais donc rapidement citer ce dont je me souviens en tant que sources de mes informations et peut-être trouver des informations jour (ou vous pouvez le trouver pour moi! :)
- Le discours de Guido Van Rossum sur les boucles d'événement et comment il en est venu à les comprendre
- Un employé de GitHub qui a déclaré qu'il évitait d'embaucher des personnes intelligentes sur Y-Combinator
- Une grande partie de la discussion et de l'apprentissage qui se passe dans la communauté Python. La communauté Python est particulièrement critique vis-à-vis des nouvelles idées, mais ne rejette pas les nouvelles idées qu’elles ne comprennent pas incidemment, et vous pouvez généralement voir des fonctionnalités considérées à l’origine comme alambiquées comme une caractéristique / un package linguistique principal.
- Ma propre expérience et mon opinion professionnelle basées sur mes observations de 10000 pieds. Cependant, je ne vois pas les détails pour éclairer de haut en bas :( J'espère que votre expérience et vos observations vous diront la même chose et que quelqu'un d'autre peut commenter ci-dessous pour donner un peu de mérite à cette réponse.
N'hésitez pas à ajouter vos propres citations! Aussi, n'hésitez pas à ajouter des virgules à mon texte. Je n'ai pas rafraîchi mes connaissances sur l'utilisation des virgules en anglais depuis un certain temps ...