Joel Spolsky: Comment poser correctement des questions aux programmeurs plus expérimentés

Les règles Usenet de Faddish et de lavage de cerveau, Burning Man et Stack Overflow Rules


image


Joel Spolsky, avril 2018

Il existe un vélo populaire parmi les développeurs qui, si votre code ne fonctionne pas, vous devez prendre un canard en caoutchouc et lui dire - oui, canard - comment ce code devrait fonctionner: expliquez à chaque ligne ce qui devrait arriver, ce qui est sorti à la fin, etc. Les développeurs qui ont essayé cette vie se piratent, soutiennent que dans le processus de discussion détaillée du problème, l'objet inanimé parvient souvent à trouver sa solution.

C'est l'une des astuces qui peuvent vous aider à résoudre le problème par vous-même pendant le processus de programmation. Une autre façon consiste à apprendre à déboguer un programme (débogage) sur une base «diviser pour mieux régner».. Il n'est pas possible de casser mille lignes de code pour une seule erreur. Mais vous pouvez diviser le code en deux parties et voir ce qui se passe dans la première moitié et ce qui se passe dans la seconde. Faites-le cinq à six fois et vous atteindrez la ligne même de l'erreur.

Sur la base de ce qui précède, il est intéressant de lire la liste de contrôle de John Skeet pour rédiger la question parfaite . John demande: "Avez-vous lu attentivement la question afin d'apprécier son intelligibilité et sa compréhensibilité pour une personne qui n'a pas vu les informations que vous avez dans vos yeux?" En gros, c'est un test avec un canard en caoutchouc. Une autre option: "Si le code est inclus dans la question, l'avez-vous entré dans un programme complet mais court?" L'accent mis sur le programme court est, en fait, un test pour savoir si vous avez essayé de «diviser pour mieux régner» ou non.

En gros, la liste de contrôle de John suggère que les gens essaient d'abord de faire ce que les programmeurs expérimentés ont déjà essayé, puis demandent de l'aide aux autres.

Malheureusement, tout le monde n'a pas entendu parler de cette liste de contrôle. Ou peut-être qu'il a entendu, mais a choisi d'ignorer. La personne a un problème avec le code, elle sait qu'il existe un système de questions et réponses Stack Overflow qui peut l'aider, et elle n'a pas le temps de lire le protocole d'un nerd sur la façon de poser des questions.

Il y a souvent des discussions pour savoir si Stack Overflow devrait autoriser les questions des nouveaux arrivants à la programmation.

Lorsque Jeff et moi avons discuté de la conception initiale du système, je lui ai parlé d'un groupe sur le langage de programmation C, populaire dans les années 80 sur le réseau Usenet. Il a été appelé comp.lang.c .

C est un langage de programmation simple et limité. Vous ne pouvez trouver le compilateur C que 100 Ko , donc, comme vous pouvez le deviner, si vous créez une discussion exclusivement pour C, les sujets de conversation se terminent très rapidement.

Et encore une chose. Dans les années 90, C était un langage pour les étudiants qui commençaient tout juste à s'impliquer dans la programmation. Et ces mêmes étudiants ont le plus souvent eu les problèmes les plus primitifs avec C.. Et ils ont immédiatement couru avec des questions dans comp.lang.c.

Et les vieillards s'y ennuyaient. Très ennuyeux. Ils en ont assez des nausées des étudiants qui entrent dans le groupe en septembre et demandent pourquoi ils ne peuvent pas renvoyer un tableau de caractères d'une fonction, etc. Chaque. Septembre.

Ces anciens ont également inventé le concept de FAQ (Foire Aux Questions). Ainsi, ils semblaient dire "pour l'amour de Dieu, arrêtez de demander à quoi Usenet a déjà été répondu cent fois", c'est-à-dire que les gens de la vieille école ne voulaient répondre qu'aux questions les plus merveilleuses et les plus ésotériques auxquelles 99% des programmeurs C ordinaires ont généralement répondu. n'étaient pas nécessaires. Le groupe de presse s'effaçait parce qu'en fait, il ne desservait qu'un petit groupe de personnes qui traînaient depuis environ une décennie.

C'est ce dont Jeff et moi avons parlé. Que devons-nous faire des questions des débutants?
En fin de compte, il a été décidé que les nouveaux arrivants devraient l'être. Stack Overflow n'a pas le concept de questions «trop simples» ... Mais il est quand même préférable de trouver la réponse vous-même avant de demander de l'aide aux autres.

Nous avons compris que certains programmeurs plus «avancés» pourraient trouver ennuyeux de lire les mêmes questions simples et ils ne nous contacteront plus. Ce n'est pas grave - Stack Overflow n'oblige personne à rester assis là pour la vie. Fatigué de lire les questions des débutants sur le fait qu'ils ne retournent pas des tableaux locaux de personnages ("ça marche pour moi!"), Et préférez-vous passer le reste de votre vie à trier des albums de musique? Comme vous le souhaitez, votre droit.

Le fait que vous venez de rejoindre la programmation ne signifie pas que votre question n'a pas sa place sur Stack Overflow. J'ai même spécifiquement posé la question "Mais comment déplacer la tortue dans LOGO ? »Pour montrer que les concepteurs de sites Web sont heureux de voir des débutants absolus à la maison.

Mais comme toujours, selon la loi des conséquences imprévues, cette question a presque fait scandale - et pas du tout à cause de sa simplicité. Le problème est que j'ai abordé cette question de mauvaise foi. Jeff Atwood a bien dit à cet égard : «Une simple question n'est pas mauvaise. C'est mauvais quand il n'y a aucun effort pour trouver une réponse. " ( Ah, eh bien, ça ).

Pour les débutants, le nombre de points à remplir avant de poser une question semble inutile, et parfois tout simplement étrange. C'est comme un festival Burning Man. Pensez-vous que vous allez à une fête incendiaire quelque part dans le désert et à votre arrivée, ils vous crient une dizaine de principes, «Expression radicale de soi» et dans la même veine, par conséquent, après avoir lavé la vaisselle, vous devez collecter chaque goutte d'eau d'un lac asséché et rapporter à la maison - à remettre si nécessaire. Chaque communauté a ses propres règles, et au début, elles peuvent sembler bizarres et amusantes, ou si vous essayez simplement de faire fonctionner du code, elles sont étranges et abstruses.

Beaucoup de règles de Burning Man qui font le succès du festival semblent très abstraites, mais elles ont du sens. Le US Land Administration Bureau, qui autorise un festival du désert, exige qu'aucune eau contaminée ne soit versée sur le sol car le sol argileux n'absorbe pas bien, ce qui peut entraîner une croissance microbienne et des maladies, mais pourquoi tout expliquer si vous le pouvez dire que si les visiteurs n'enlèvent pas l'eau, alors le festival n'aura plus lieu?

Même chose avec Stack Overflow. Nous n'autorisons pas la publication de questions trop abstraites («Comment composer un programme?»). Notre règle générale est: si la réponse à votre question est de la taille d'un livre entier, alors vous en voulez trop. C’est comme si vous écriviez «Mon rein semble faire mal. Comment le couper? " Une telle question semble inadéquate et même offensante pour les chirurgiens qui apprennent à le faire depuis dix ans.

Ce qui me dérange, c'est qu'en essayant d'éduquer une nouvelle génération de développeurs, en s'appuyant sur la diversité et l'inclusivité, nous construisons également des obstacles pour ceux qui veulent apprendre la programmation. En effet, à bien des égards, les règles spécifiques de Stack Overflow ne sont qu'un obstacle. Mais pire encore, c'est la négligence et l'impolitesse des nouveaux venus sur les forums.

Je suis très inquiet à ce sujet. En tant que développeur, vous avez une opportunité sans précédent de créer des scénarios futurs . Et les limitations que Stack Overflow met au visage des jeunes programmeurs leur nuisent non seulement à eux, mais au système Stack Overflow lui-même, effrayant les membres potentiels de la communauté. La programmation n'est pas sans problèmes; notre objectif est de vous faciliter la tâche.

L'année prochaine, nous prévoyons de travailler dur dans ce domaine. Nous ne pouvons pas changer les autres, les rendre plus gentils. Mais je pense que nous pouvons améliorer certains aspects de l'interface utilisateur de Stack Overflow qui motiveront les gens à être plus cultivés; par exemple, nous pouvons modifier les invites sur la page «Poser une question» ou travailler sur la modération réactive afin que les membres de la communauté eux-mêmes puissent marquer et se plaindre des commentaires grossiers, ce qui ne se produit pas pour le moment.

Nous travaillons également sur une nouvelle fonctionnalité, grâce à laquelle vous pouvez envoyer votre question à un petit groupe de personnes de votre propre équipe, ce qui peut aider à créer une certaine atmosphère amicale dans une immense métropole, qui est Stack Overflow.

Malgré le fait que nous nous efforçons de rendre Stack Overflow plus confortable, notre objectif principal a toujours été de créer la meilleure ressource au monde pour les développeurs de programmes.

Le programmeur statique moyen nous appelle 340 fois. Telle est notre force. Il existe d'autres sources d'informations sur l'écriture de programmes, mais il n'y a qu'un seul site auquel les développeurs font tellement confiance et dont ils doivent s'occuper - c'est comme la Bibliothèque du Congrès pour les programmeurs.



image
Apprenez en détail comment obtenir une profession recherchée à partir de zéro ou passer au niveau supérieur en compétences et en salaire en suivant les cours en ligne SkillFactory:



Lire la suite



All Articles