Les pauvres écrivains font-ils de mauvais programmeurs? [fermé]
16
Je lis Coders at Work de Peter Seibel, et bien des fois, il a été mentionné que les programmeurs qui ne savent pas écrire font généralement de mauvais programmeurs - cela a été affirmé par Douglas Crockford, Joshua Bloch, Joe Armstrong, Dijkstra (et j'ai lire seulement la moitié du livre).
Quelle est votre opinion à ce sujet? Une incapacité à s'exprimer par écrit dans une langue naturelle comme l'anglais est-elle un obstacle à la rédaction d'un bon code?
Je ne connais pas les compétences en tant que programmeur, mais pour vous VENDRE en tant que programmeur, smart = sexy dans le monde indépendant. Par conséquent, si vous pouvez bien écrire (et parler), vous serez perçu comme intelligent et considéré comme plus digne de confiance en tant que développeur (bien qu'il puisse être complètement sans fondement).
Dan Rosenstark
Par «ne peut pas écrire», voulez-vous dire que leur grammaire est incorrecte? C'est probablement un problème plus important que des choses comme un mauvais débit, etc.
Maxpm
1
@Maxpm: Peut-être, mais aussi une incapacité à transmettre leur sens par écrit, bien que grammaticalement correct.
gablin
Réponses:
30
La programmation ne se limite pas à «l'écriture de code». Une grande partie du succès d'un programmeur implique la communication; Être capable de se connecter avec les clients, comprendre leurs besoins, les traduire dans le domaine technique, les exprimer en code, puis expliquer le résultat aux clients.
Les programmeurs qui ont du mal à s'exprimer clairement par écrit peuvent ne pas être en mesure de bien communiquer en général, tandis que ceux qui ont une bonne maîtrise du langage et de l'écriture peuvent généralement traduire ces compétences dans le code qu'ils écrivent.
Je pense que le fait de ne pas bien écrire, et donc de bien communiquer, empêchera d'être un très bon programmeur.
Comme Jason Fried et David Heinemeier Hansson (sur 37 signaux) le disent dans leur livre Rework:
Si vous essayez de décider parmi quelques personnes de pourvoir un poste, embauchez le meilleur écrivain.
Être un bon écrivain, c'est bien plus qu'écrire. Une écriture claire est un signe de réflexion claire. Les grands écrivains savent communiquer.
Oui, et je pense que presque tout le monde convient que la capacité d'un bon programmeur est la capacité de s'exprimer clairement dans le code, ce qui ne m'étonnerait pas que la capacité de s'exprimer clairement par écrit soit en corrélation avec la capacité d'exprimer clairement dans votre code (et vice-versa). +1
n1ckp
2
J'appuierais ceci. Vous devez communiquer - pas seulement avec la machine. Les gens autour de vous et les programmeurs qui viennent après vous ont besoin de clarté dans la communication, à la fois parlée et écrite. Parlé parce que tôt ou tard vous devez parler aux gens, et écrit parce que c'est votre code ET VOS COMMENTAIRES.
quick_now
J'ai trouvé votre réponse très intéressante! Mais quand j'ai regardé en arrière dans ma mémoire pour trouver qui étaient les meilleurs programmeurs avec lesquels j'ai travaillé, travaillé ou travaillé pour moi, j'ai trouvé que beaucoup d'entre eux étaient très mauvais en écriture. Cependant, ils étaient ridiculement bons. Cependant, je garderai à l'esprit votre excellente réponse et je l'essayerai à l'avenir. +1
16
Si vous ne pouvez pas expliquer quelque chose suffisamment bien, vous ne le comprenez probablement pas assez.
Être une personne intelligente signifie que vous travaillerez avec d'autres personnes intelligentes et que vous devrez communiquer efficacement avec elles.
Toute bonne idée que vous avez est inutile si elle n'existe que dans votre tête
Être capable de communiquer efficacement vos idées est un signe de grande compréhension. Cela s'applique à plus que le seul domaine de la programmation.
Je pense que si nous examinons la question, nous obtenons la réponse directement:
Une incapacité à s'exprimer par écrit dans une langue naturelle comme l'anglais est-elle un obstacle à la rédaction d'un bon code?
Que signifie réellement écrire un bon code?
Les programmes doivent être écrits pour que les gens puissent les lire, et accessoirement pour les machines à exécuter.
- Abelson & Sussman, Structure et interprétation des programmes informatiques
Cela signifie vous exprimer de manière claire, concise, correcte et élégante dans un langage de programmation.
La seule différence entre vous exprimer habilement en anglais ou dans un langage de programmation est que l'anglais est beaucoup plus indulgent.
Je ne pense pas que ce soit un obstacle majeur pour un singe codé (je suppose un certain niveau de base / capacité à s'exprimer dans leur langue maternelle). Cependant, je pense que cela peut rapidement devenir un obstacle majeur car vous (le développeur) devez commencer à mieux articuler les conceptions / voûtes / plans à un public non technique. D'après mon expérience, transmettre quelque chose à quelqu'un d'autre qui est à peu près au même niveau technique que moi est plus facile et nécessite beaucoup moins de compétences linguistiques (naturelles) que d'articuler quelque chose à un client et / ou un gestionnaire. De même, même lorsqu'il s'agit d'un public technique, car le sujet devient moins concret, la personne qui écrit à ce sujet (ou qui parle d'ailleurs) doit être assez articulée.
Cela dépend de ce que vous entendez par «bon code».
Si vous voulez dire un code qui fonctionne, il n'y a pratiquement aucune relation entre pouvoir communiquer avec les humains et pouvoir communiquer avec les ordinateurs.
Si vous voulez dire un code qui fonctionne, est maintenable et exprime clairement l'intention du code, il y a absolument une relation entre l'écriture d'un bon code et l'écriture dans un langage uniquement destiné aux humains.
Bien que vous n'ayez pas besoin de toutes les compétences nécessaires pour être un bon écrivain pour écrire du code compréhensible, il y a encore certains éléments qui doivent être là, car les deux seront lus par les humains. À certains égards, il est encore plus difficile d'écrire du bon code, car il devrait décrire l'intention du code, sans utiliser de constructions qui fonctionneraient mal lors de leur exécution par l'ordinateur.
Le fait est que le codage est également une compétence de communication. Jack Ganssle dans son bulletin électronique Embedded Muse a récemment cité Doug Abbott:
Lorsque vous écrivez un programme, ce que vous faites réellement, c'est de communiquer à un autre être humain ce que vous voulez que l'ordinateur fasse. La programmation concerne la communication, comme toute autre forme d'écriture. Alors oui, les étudiants en informatique devraient être exposés à une bonne écriture. Mais comme il y en a si peu en informatique, ils ont peut-être juste besoin de cours d'écriture créative de base.
Les programmeurs qui ne savent pas écrire de prose ne savent probablement pas non plus comment écrire du code.
L'un des meilleurs programmeurs de "rock star" avec qui j'ai travaillé était un écrivain très pauvre. Et quand je dis «très pauvre», je veux dire le type qui est apparu comme s'il était extrêmement ivre, ou à peine alphabétisé - quand vous avez vu ses e-mails. Les fautes de frappe, le manque de ponctuation, la difficulté à exprimer clairement les idées et les fautes d'orthographe courantes («leur / ils» et autres) abondaient - presque atrocement parfois. Lire certains de ses courriels - j'aurais été inquiet à l'idée qu'il envoie des courriels directement aux clients (nous n'avions pas besoin de le faire dans cette entreprise) - car cela ferait mal paraître l'entreprise!
Pourtant, il était un programmeur super star. Un ordre de grandeur plus productif et allumé que la moyenne.
Je ne sais pas quoi en penser. Je l'ai vu plusieurs fois avec différentes personnes. Certains ne semblent tout simplement pas avoir le don de s'asseoir et d'écrire des choses. Et souvent, cela ne semble pas affecter leurs talents dans d'autres domaines (même relativement similaires, les talents de "travail de connaissance", comme la programmation). On pourrait penser qu'il serait connecté, mais j'ai vu plusieurs exemples vivants comme celui-ci où il ne l'était pas. Bien que je suppose qu'il est tout à fait possible que ce soient des " exceptions qui prouvent la règle " - je n'ai probablement jamais pensé à remarquer les mauvais écrivains qui ne sont pas programmeurs et les bons écrivains qui le sont .
Il y a toujours une exception à la règle. J'ai aussi travaillé avec quelques-uns - des gens brillants, que nous ne laissions jamais approcher d'un client car ils auraient été transformés en viande hachée. J'ai passé des siècles à corriger les fautes de frappe et ainsi de suite dans leur documentation. Donnez-leur un problème technique et les éclairs de perspicacité et de solutions étaient incroyables. Tout cela montre simplement que les réponses ici sont des généralisations. Cependant, les généralisations s'appliquent à la majorité des gens.
quick_now
3
@quickly_now: Je me demanderais (puisque vous n'avez pas précisé) comment leur code se lisait. Ils peuvent être très intelligents et bien résoudre les problèmes, mais si leur code est illisible, ils ne sont pas un excellent programmeur si vous voulez mon avis.
n1ckp
@ n1ck: Maintenant que vous le mentionnez, le type auquel je pense n'était pas très bon pour documenter son code. Le code lui-même était bon et bien conçu, mais il n'a pas fait de commentaires sur les morceaux de code intrinsèquement complexes, ce qui signifiait qu'il était plus difficile à maintenir qu'il ne devrait l'être. Je n'avais pas pensé à ça. :)
Bobby Tables
Je suis d'accord avec @ n1ckp. Je suis également prêt à parier que son choix de noms pour les variables / méthodes / classes serait parfois cryptique et déroutant. J'ai tendance à être très méfiant vis-à-vis des programmeurs avec une productivité extrêmement élevée, car cela se fait souvent au détriment de passer un peu de temps supplémentaire pour améliorer la maintenabilité à long terme.
Désillusionné le
2
S'ils ne savent pas bien écrire, comment peuvent-ils vous convaincre qu'ils sont de bons programmeurs?
Est-ce qu'une personne incapable d'exprimer précisément une organisation système ou une idée en l'écrivant serait capable d'écrire du code - qui sont des instructions précises - correctement interprété par un ordinateur (très) stupide?
Mais vous obtenez une boucle de rétroaction très claire et immédiate de l'ordinateur si votre code n'est pas correctement écrit. Je soupçonne que vous pourriez avoir un anglais écrit extrêmement médiocre et ne jamais en être informé, et encore moins compte tenu des commentaires que vous devez améliorer.
Carson63000
Vous devez apprendre à être clair et correct même avec le compilateur car si vous ne le faites pas, vous ne compilerez même jamais rien à la fin.
Klaim
0
Je pense qu'il est très important pour un programmeur de bien communiquer, à la fois avec la langue parlée et écrite. La capacité de traduire une idée en mots est une condition préalable à l'écriture de code.
Que nous communiquions avec un ordinateur ou une personne, nous devons mettre les mots dans un ordre logique en suivant les règles de grammaire. Nous devons soit prononcer les mots correctement, soit les épeler correctement pour que l'autre côté de la conversation puisse les comprendre. Les ordinateurs lanceront des erreurs de syntaxe, les collègues diront "QUOI?" ou ignorer ce qui est dit comme un babillage insensé ou pire, une distraction irritante.
J'ai fortement découragé d'embaucher des candidats car ils ne pouvaient pas achever une réflexion ou rester sur un sujet. Une personne a été embauchée par notre patron de toute façon et s'est avérée incapable de livrer une simple mission à temps parce qu'elle était distraite par les nouvelles technologies ou jouets brillants et brillants qui ont attiré son attention.
Donc, oui, il est important que les programmeurs puissent bien communiquer. S'ils ne peuvent pas communiquer efficacement avec un humain, ils ne peuvent pas le faire avec un ordinateur.
Les pauvres écrivains font de pauvres écrivains, et rien d'autre. Une mauvaise capacité d'écriture ne signifie pas qu'ils ne peuvent pas du tout communiquer, mais ils ne peuvent tout simplement pas écrire ou s'exprimer très bien. Bien sûr, n'importe qui peut dire que les compétences en communication sont importantes et cruciales dans l'entreprise et ainsi de suite, mais cela ne signifie pas qu'un programmeur avec de mauvaises compétences en communication ne peut pas faire le travail correctement. La programmation et l'écriture sont de l'art, mais de nature complètement différente. L'écriture consiste à faire comprendre à un autre humain ce que vous dites et / ou à agir en conséquence, mais la programmation ne permet pas à l'ordinateur de comprendre vos besoins, car aucun ordinateur ne comprendra les besoins des utilisateurs (au moins dans 100 ans à partir de l'OMI). La programmation concerne la façon de traduire l'exigence dans le langage de programmation, et c'est pourquoi les compétences en écriture ne sont pas si liées.
Une partie du travail d'un programmeur consiste à s'exprimer clairement dans le code (et les commentaires) afin que non seulement l'ordinateur, mais aussi d'autres humains puissent lire le code. Il serait logique (mais ce n'est pas prouvé par l'AFAIK) que ces compétences soient corrélées.
n1ckp
0
Absolument pas!
Un bon écrivain n'est rien d'autre qu'un bon écrivain. Demandez à un bon écrivain de décrire le concept d'une base de données à une personne non technique. Que pensez-vous que vous obtiendrez ...?
Un bon écrivain, écrit. Un bon programmeur écrit un bon code.
Code que les autres peuvent lire six mois après son élaboration.
Code qui a du sens à 2h00 du matin lorsque le système est en panne et que le débogage est en cours.
Code que tout le monde aime emprunter parce qu'il le comprend et peut le modifier facilement
Code qui fonctionne 24/7 365
J'allais continuer encore et encore, mais je préfère passer mon temps à répondre à d'autres messages. Je pense à peu près que vous savez où j'en suis sur cette question.
Je pense que les points 1, 2 et 3 exigent que l'on soit un bon écrivain en plus d'être un bon programmeur. En substance, vous envisagez de bonnes compétences en écriture comme un trait implicite.
Réponses:
La programmation ne se limite pas à «l'écriture de code». Une grande partie du succès d'un programmeur implique la communication; Être capable de se connecter avec les clients, comprendre leurs besoins, les traduire dans le domaine technique, les exprimer en code, puis expliquer le résultat aux clients.
Les programmeurs qui ont du mal à s'exprimer clairement par écrit peuvent ne pas être en mesure de bien communiquer en général, tandis que ceux qui ont une bonne maîtrise du langage et de l'écriture peuvent généralement traduire ces compétences dans le code qu'ils écrivent.
Je pense que le fait de ne pas bien écrire, et donc de bien communiquer, empêchera d'être un très bon programmeur.
Comme Jason Fried et David Heinemeier Hansson (sur 37 signaux) le disent dans leur livre Rework:
la source
Être capable de communiquer efficacement vos idées est un signe de grande compréhension. Cela s'applique à plus que le seul domaine de la programmation.
la source
Je pense que si nous examinons la question, nous obtenons la réponse directement:
Que signifie réellement écrire un bon code?
Cela signifie vous exprimer de manière claire, concise, correcte et élégante dans un langage de programmation.
La seule différence entre vous exprimer habilement en anglais ou dans un langage de programmation est que l'anglais est beaucoup plus indulgent.
la source
Je ne pense pas que ce soit un obstacle majeur pour un singe codé (je suppose un certain niveau de base / capacité à s'exprimer dans leur langue maternelle). Cependant, je pense que cela peut rapidement devenir un obstacle majeur car vous (le développeur) devez commencer à mieux articuler les conceptions / voûtes / plans à un public non technique. D'après mon expérience, transmettre quelque chose à quelqu'un d'autre qui est à peu près au même niveau technique que moi est plus facile et nécessite beaucoup moins de compétences linguistiques (naturelles) que d'articuler quelque chose à un client et / ou un gestionnaire. De même, même lorsqu'il s'agit d'un public technique, car le sujet devient moins concret, la personne qui écrit à ce sujet (ou qui parle d'ailleurs) doit être assez articulée.
la source
Cela dépend de ce que vous entendez par «bon code».
Si vous voulez dire un code qui fonctionne, il n'y a pratiquement aucune relation entre pouvoir communiquer avec les humains et pouvoir communiquer avec les ordinateurs.
Si vous voulez dire un code qui fonctionne, est maintenable et exprime clairement l'intention du code, il y a absolument une relation entre l'écriture d'un bon code et l'écriture dans un langage uniquement destiné aux humains.
Bien que vous n'ayez pas besoin de toutes les compétences nécessaires pour être un bon écrivain pour écrire du code compréhensible, il y a encore certains éléments qui doivent être là, car les deux seront lus par les humains. À certains égards, il est encore plus difficile d'écrire du bon code, car il devrait décrire l'intention du code, sans utiliser de constructions qui fonctionneraient mal lors de leur exécution par l'ordinateur.
la source
Le fait est que le codage est également une compétence de communication. Jack Ganssle dans son bulletin électronique Embedded Muse a récemment cité Doug Abbott:
Les programmeurs qui ne savent pas écrire de prose ne savent probablement pas non plus comment écrire du code.
Plus sur cet article intéressant:
La mauvaise écriture reflète-t-elle de mauvaises compétences en programmation?
la source
C'est tout à fait anecdotique, mais:
L'un des meilleurs programmeurs de "rock star" avec qui j'ai travaillé était un écrivain très pauvre. Et quand je dis «très pauvre», je veux dire le type qui est apparu comme s'il était extrêmement ivre, ou à peine alphabétisé - quand vous avez vu ses e-mails. Les fautes de frappe, le manque de ponctuation, la difficulté à exprimer clairement les idées et les fautes d'orthographe courantes («leur / ils» et autres) abondaient - presque atrocement parfois. Lire certains de ses courriels - j'aurais été inquiet à l'idée qu'il envoie des courriels directement aux clients (nous n'avions pas besoin de le faire dans cette entreprise) - car cela ferait mal paraître l'entreprise!
Pourtant, il était un programmeur super star. Un ordre de grandeur plus productif et allumé que la moyenne.
Je ne sais pas quoi en penser. Je l'ai vu plusieurs fois avec différentes personnes. Certains ne semblent tout simplement pas avoir le don de s'asseoir et d'écrire des choses. Et souvent, cela ne semble pas affecter leurs talents dans d'autres domaines (même relativement similaires, les talents de "travail de connaissance", comme la programmation). On pourrait penser qu'il serait connecté, mais j'ai vu plusieurs exemples vivants comme celui-ci où il ne l'était pas. Bien que je suppose qu'il est tout à fait possible que ce soient des " exceptions qui prouvent la règle " - je n'ai probablement jamais pensé à remarquer les mauvais écrivains qui ne sont pas programmeurs et les bons écrivains qui le sont .
la source
S'ils ne savent pas bien écrire, comment peuvent-ils vous convaincre qu'ils sont de bons programmeurs?
la source
Est-ce qu'une personne incapable d'exprimer précisément une organisation système ou une idée en l'écrivant serait capable d'écrire du code - qui sont des instructions précises - correctement interprété par un ordinateur (très) stupide?
la source
Je pense qu'il est très important pour un programmeur de bien communiquer, à la fois avec la langue parlée et écrite. La capacité de traduire une idée en mots est une condition préalable à l'écriture de code.
Que nous communiquions avec un ordinateur ou une personne, nous devons mettre les mots dans un ordre logique en suivant les règles de grammaire. Nous devons soit prononcer les mots correctement, soit les épeler correctement pour que l'autre côté de la conversation puisse les comprendre. Les ordinateurs lanceront des erreurs de syntaxe, les collègues diront "QUOI?" ou ignorer ce qui est dit comme un babillage insensé ou pire, une distraction irritante.
J'ai fortement découragé d'embaucher des candidats car ils ne pouvaient pas achever une réflexion ou rester sur un sujet. Une personne a été embauchée par notre patron de toute façon et s'est avérée incapable de livrer une simple mission à temps parce qu'elle était distraite par les nouvelles technologies ou jouets brillants et brillants qui ont attiré son attention.
Donc, oui, il est important que les programmeurs puissent bien communiquer. S'ils ne peuvent pas communiquer efficacement avec un humain, ils ne peuvent pas le faire avec un ordinateur.
la source
Les pauvres écrivains font de pauvres écrivains, et rien d'autre. Une mauvaise capacité d'écriture ne signifie pas qu'ils ne peuvent pas du tout communiquer, mais ils ne peuvent tout simplement pas écrire ou s'exprimer très bien. Bien sûr, n'importe qui peut dire que les compétences en communication sont importantes et cruciales dans l'entreprise et ainsi de suite, mais cela ne signifie pas qu'un programmeur avec de mauvaises compétences en communication ne peut pas faire le travail correctement. La programmation et l'écriture sont de l'art, mais de nature complètement différente. L'écriture consiste à faire comprendre à un autre humain ce que vous dites et / ou à agir en conséquence, mais la programmation ne permet pas à l'ordinateur de comprendre vos besoins, car aucun ordinateur ne comprendra les besoins des utilisateurs (au moins dans 100 ans à partir de l'OMI). La programmation concerne la façon de traduire l'exigence dans le langage de programmation, et c'est pourquoi les compétences en écriture ne sont pas si liées.
la source
Absolument pas!
Un bon écrivain n'est rien d'autre qu'un bon écrivain. Demandez à un bon écrivain de décrire le concept d'une base de données à une personne non technique. Que pensez-vous que vous obtiendrez ...?
Un bon écrivain, écrit. Un bon programmeur écrit un bon code.
J'allais continuer encore et encore, mais je préfère passer mon temps à répondre à d'autres messages. Je pense à peu près que vous savez où j'en suis sur cette question.
la source