Ce que j'ai appris en 10 ans sur Stack Overflow

Ce que j'ai appris en 10 ans sur Stack Overflow
J'approche mon dixième anniversaire sur Stack Overflow. Au fil des années, mon approche de l'utilisation du site et ma perception de celui-ci ont beaucoup changé et je souhaite partager mon expérience avec vous. Et j’écris cela du point de vue de l’utilisateur moyen, peu impliqué dans la vie de la communauté du site ou dans sa culture. Ces jours-ci, je n'ai répondu qu'à des questions liées à VS Code, le produit sur lequel je travaille. Cependant, je participais activement à des discussions sur un large éventail de sujets. Dans 10 ans, je posé environ 50 questions et donné 575 réponses, a parcouru une myriade de commentaires d’autres personnes.

Jon Skeete décrit la culture de Stack Overflow bien mieux et avec plus d'autorité que je ne pourrai jamais le faire. Sa publication a influencé certains des chapitres de cet article, mais dans l'ensemble, ce sont mes propres réflexions franches sur mes expériences sur Stack Overflow, ce qui est bon et mauvais sur le site et comment il peut être utilisé aujourd'hui. Cette discussion sera assez superficielle, sans approfondir le fonctionnement du site ni son histoire.

Voici donc ce que j'ai appris en 10 ans d'utilisation de Stack Overflow.

Il faut pouvoir poser des questions

À première vue, rien de plus simple : saisissez quelques mots dans le champ de texte, cliquez sur « Soumettre », et Internet vous aidera comme par magie à résoudre tous vos problèmes ! Mais il m'a fallu près de 10 ans pour comprendre quels mots taper dans ce foutu champ pour obtenir des résultats. En fait, j’en apprends encore tous les jours.

Poser de bonnes questions est une compétence véritablement sous-estimée (tout comme rédiger un bon rapport sur un problème, d'ailleurs). Premièrement, comment pouvons-nous déterminer si une question est « bonne » ? Offres Stack Overflow allusion, qui énumère les qualités suivantes d'une bonne question :

  • Est-ce que cela correspond au thème du site ?
  • Implique une réponse objective.
  • N'a pas encore été demandé.
  • A été étudié.
  • Décrit clairement le problème, généralement avec un exemple minimal et facilement reproductible.

D’accord, mais à quoi ressemble un « énoncé clair du problème » dans la pratique ? Quelles informations sont pertinentes et lesquelles ne le sont pas ? Parfois, on a l’impression que pour poser une bonne question, il faut d’abord connaître la réponse.

Malheureusement, le petit champ de texte n'aide pas ici. Faut-il donc s’étonner que tant d’utilisateurs publient des questions de mauvaise qualité ? Parfois, la seule réponse qu’ils obtiennent est un lien vers une documentation déroutante. Et ils auront encore de la chance. De nombreuses questions de mauvaise qualité sont simplement rejetées en silence et disparaissent dans le fil interminable des questions.

Poser de bonnes questions est une compétence. Heureusement, cela peut être développé. J'ai surtout appris en lisant un tas de questions et de réponses, en notant ce qui a fonctionné et ce qui n'a pas fonctionné. Quelles informations sont utiles et qu’est-ce qui est ennuyeux ? Même si vous aurez toujours peur d'utiliser les connaissances acquises dans la pratique et de poser des questions. Faites simplement de votre mieux et apprenez des résultats. Je dois admettre que je suis moi-même un peu gêné par certaines de mes premières questions ignorantes, même si cela prouve peut-être que j'ai beaucoup amélioré mes capacités de questionnement depuis que je me suis retrouvé sur ce site.

Les mauvaises et les moins bonnes questions ne sont pas la même chose

Je ne vais pas édulcorer la pilule : certaines questions sont tout simplement mauvaises.

Une question composée d'une capture d'écran et de la phrase "POURQUOI CELA NE FONCTIONNE PAS !?!" - mauvais. Pourquoi? Il est évident que l’auteur n’a fait presque aucun effort. Ce n’est pas tant une question qu’une exigence : « faites ce travail pour moi ! » Pourquoi ferais-je ça ? Mon temps est trop précieux pour le perdre à aider quelqu'un qui ne veut pas apprendre au départ et n'appréciera pas mon aide. Découvrez ce qu'est Stack Overflow.

Considérons maintenant une question intitulée « Comment supprimer les bordures bleues sur ma page », qui consiste en plusieurs paragraphes de texte qui parlent de la propriété CSS outline, mais sans mentionner explicitement les mots « CSS » ou « outline ». Bien qu'une question comme celle-ci puisse aller à l'encontre de nombreuses directives de Stack Overflow, je ne suis pas d'accord, ce n'est pas une mauvaise question. L'auteur a au moins essayé de donner quelques informations, même sans savoir quoi donner. La tentative compte, tout comme la volonté de percevoir et d’apprendre.

Cependant, de nombreux contributeurs de Stack Overflow traiteront probablement les deux questions de la même manière : voter contre et clôturer. C’est frustrant et décourage de nombreux utilisateurs inexpérimentés avant qu’ils puissent apprendre à poser de meilleures questions et même comprendre le fonctionnement du site.

Les très mauvaises questions ne valent pas la peine. Mais il ne faut pas oublier que ceux qui posent de mauvaises questions le font involontairement. Ils veulent poser de bonnes questions, mais ils ne savent tout simplement pas comment. Si vous punissez les nouveaux arrivants aveuglément et sans explication, comment apprendront-ils ?

Une bonne question ne garantit pas une réponse

Stack Overflow fournit généralement des réponses plus rapides à des questions simples auxquelles de nombreuses personnes peuvent répondre. Vous avez une question sur la recherche binaire en JavaScript ou sur HTML ? Merveilleux! Recevez cinq réponses en moins d'une heure. Mais plus la question est complexe ou spécifique, moins il est probable que vous obteniez une réponse, quelle que soit la qualité de la formulation.

La probabilité d’obtenir une réponse diminue également rapidement avec le temps. Lorsqu’une question pénètre plusieurs pages dans le fil, elle est perdue. Une semaine plus tard, vous ne pouvez que prier pour que quelqu'un ayant les bonnes connaissances tombe sur votre question (ou clique généreusement dessus).

Vous n'aimerez peut-être pas les bonnes réponses

Chaque mois, je reçois plusieurs votes négatifs pour des réponses dites impopulaires. C'est le genre de réponses qui disent essentiellement : « la raison est que c'est conçu de cette façon », ou « ce n'est pas possible parce que... » ou « c'est un bug qui doit d'abord être corrigé ». Dans tous les cas ci-dessus, les auteurs ne reçoivent ni solution ni même solution de contournement. Et je soupçonne que lorsque les gens n'aiment pas ce que dit une réponse, ils la rejettent. Je les comprends même, mais cela ne veut pas dire que les réponses sont fausses.

Bien sûr, l’inverse est également vrai : les bonnes réponses ne vous disent pas nécessairement ce que vous voulez entendre. Certaines des meilleures réponses répondent d’abord à la question initiale, puis décrivent d’autres approches pour résoudre le problème. Parfois, je réponds à la question d'un utilisateur, puis j'écris un long texte expliquant pourquoi il n'est pas recommandé de le faire.

Chaque fois que les expressions d’attitude sont simplifiées par des votes de haut en bas ou par un bouton J’aime, des distinctions importantes sont perdues. Ce problème se produit fréquemment sur Internet. Combien de réseaux sociaux permettent de faire la distinction entre « je soutiens ça » et « je pense que c’est bien dit, même si je ne l’aime pas ou si je ne suis pas d’accord avec ça » ?

Dans l'ensemble, malgré les votes négatifs mensuels, je pense que la communauté Stack Overflow vote équitablement. Nous nous en tiendrons à cette voie.

Je ne demande presque jamais sur Stack Overflow

Plus j’utilisais ce site depuis longtemps, moins j’y posais des questions. Cela est dû en partie à mon évolution professionnelle. La plupart des problèmes auxquels je suis confronté au travail sont trop complexes pour être exprimés par des questions simples, ou trop spécifiques pour que quiconque puisse m'aider. J'ai réalisé les limites du site, j'évite donc de poser des questions auxquelles je n'obtiendrai certainement pas de bonne réponse.

Mais je posais rarement des questions ici, même lorsque j'apprenais un nouveau langage ou un nouveau framework. Non pas parce qu’il est un tel génie, bien au contraire. C'est juste qu'après des années passées sur Stack Overflow, lorsque j'ai une question, j'en arrive à la profonde conviction qu'il est peu probable que je sois le premier à la poser. Je commence à chercher et je découvre presque toujours que quelqu'un a déjà demandé la même chose il y a quelques années.

Observer les questions des autres est un excellent moyen d'apprendre de nouvelles choses sur votre produit.

Maintenant je travaille sur Code VS, j'ai donc pris l'habitude de regarder les questions étiquetées vscode. C'est un excellent moyen de voir comment mon code est utilisé dans le monde réel. Quels problèmes les utilisateurs rencontrent-ils ? Comment la documentation ou l'API peuvent-elles être améliorées ? Pourquoi quelque chose que je pensais absolument clair provoque-t-il tant de malentendus ?

Les questions sont un signal important qui montre comment votre produit est utilisé. Mais il ne s’agit pas de répondre et de passer à autre chose, mais d’essayer d’abord de comprendre pourquoi la personne a une question. Peut-être y a-t-il un problème dans le produit qui vous est inconnu, ou des hypothèses que vous avez faites sans le savoir ? Les questions m'ont également aidé à découvrir de nombreux bugs et m'ont inspiré à continuer à travailler.

Si vous gérez un produit destiné aux développeurs, ne considérez pas Stack Overflow comme un dépotoir (ou pire, un cimetière de questions). Revenez régulièrement pour voir quelles questions et réponses sont apparues. Cela ne signifie pas que vous devez répondre vous-même à toutes les questions, mais les signaux de Stack Overflow sont trop importants pour être ignorés.

Les frontières entre une question, un rapport de bug et une demande de fonctionnalité sont floues.

De nombreuses questions sur VS Code sur Stack Overflow étaient en fait des rapports de bogues. Et bien d’autres sont en réalité des demandes de nouvelles fonctionnalités.

Par exemple, une question intitulée « Pourquoi VS Code plante-t-il lorsque je le fais... ? » - ceci est un rapport de bug. VS Code ne devrait pas planter dans diverses situations. Répondre à des questions qui sont des rapports de bogues est contre-productif car les auteurs peuvent se contenter d'une solution de contournement et ne jamais déposer de véritable rapport de bogue. Dans des situations comme celle-ci, je demande généralement aux utilisateurs de déposer un rapport de bug sur Github.

Dans d’autres cas, les différences peuvent être moins évidentes. Par exemple, la question « Pourquoi JavaScript IntelliSense ne fonctionne-t-il pas dans VS Code ? » Selon la façon dont JavaScript IntelliSense ne fonctionne pas, le problème peut appartenir à l'une des trois catégories suivantes :

  • S'il s'agit d'un problème de configuration utilisateur, c'est vraiment une question pour Stack Overflow.
  • Si, dans le cas décrit, IntelliSense devrait fonctionner, mais que ce n'est pas le cas, il s'agit alors d'un rapport de bug.
  • Si, dans le cas décrit, IntelliSense ne fonctionne pas, il s'agit alors d'une demande de nouvelle fonctionnalité.

En fin de compte, la plupart des utilisateurs ne se soucient pas de ces nuances : ils souhaitent simplement que JavaScript IntelliSense fonctionne.

Et même si ces différences sont importantes pour moi, en tant que responsable du projet, elles ne devraient en général pas m'importer. Parce que les questions, les rapports de bugs et les demandes de fonctionnalités sont autant de moyens d’exprimer une idée : l’utilisateur attend quelque chose de mon code et ne l’obtient pas. Si le produit était parfait, les utilisateurs ne poseraient jamais de questions à ce sujet, car tout serait clair pour eux et il ferait exactement ce qu’ils veulent (ou du moins leur expliquerait clairement pourquoi il ne peut pas).

Les développeurs sont aussi des personnes

Les gens sont émotifs. Les gens sont irrationnels. Les gens sont des connards. Pas toujours, bien sûr, mais parfois ! Et croyez-le ou non, les développeurs sont aussi des personnes.

Il y a un fantasme que nous, les développeurs, aimons nous raconter : « Nous travaillons avec des ordinateurs, nous devons donc être rationnels. Nous comprenons les symboles énigmatiques, nous devons donc être intelligents. Les logiciels ont conquis le monde, nous devons donc être cool ! Cool! Avant!!!"

C'est faux. Et s’il en était ainsi, alors Dieu aide le reste du peuple. Même sur Stack Overflow, cet outil destiné aux professionnels conçu comme une base de connaissances objective, même dans mon coin très spécifique de VS Code, je continue de rencontrer toutes sortes d'outrages : erreurs logiques, insultes, mentalité de troupeau, etc.

Ne vous faites pas d'illusions : vous n'êtes probablement pas aussi parfait que vous le pensez. Mais cela ne veut pas dire que nous ne devons pas essayer de nous débarrasser de nos défauts.

Mec, c'est moi qui ai créé ça

Je suis aussi un humain, et de temps en temps ce qui se passe sur Stack Overflow m'énerve. Par exemple, lorsqu'un utilisateur écrit avec assurance des bêtises ou donne simplement une réponse erronée à une question liée à VS Code, un produit que j'ai créé et que je connais très bien. Étrangement, il semble que plus la réponse est erronée, plus il est probable que quelqu'un la qualifiera de fait indiscutable.

Lorsque cela se produit, j’agis comme sur l’image et j’écris la bonne réponse.

Ce que j'ai appris en 10 ans sur Stack Overflow

Et plusieurs fois cela a donné lieu à de longues discussions : malheur à moi d’oser remettre en question leur connaissance de ce que j’ai créé ! Arrêtez d’essayer d’avoir raison tout le temps, sacrément intelligents ! Parce que j'ai raison !!!

C'est facile de devenir cynique dans ce désespoir

Face à un flot incessant de questions de mauvaise qualité, il est facile de devenir cynique. N'a-t-il jamais entendu parler de Google ? Sait-il au moins construire des phrases cohérentes ? Qu'est-ce que tu es, un chien ?

Parfois, je regarde des dizaines de nouvelles questions en une journée. Observer constamment toutes ces questions de mauvaise qualité risque de sombrer dans le mépris ou le cynisme. Ce cynisme peut se répandre sur le site, comme en témoignera quiconque a rencontré un modérateur trop zélé ou a passé quelques heures à rechercher et à rédiger une question, pour ensuite recevoir des réponses négatives en retour et disparaître dans l'oubli sans aucune explication.

Bien sûr, il y a des utilisateurs qui ne font pas le moindre effort et postent de mauvaises questions. Mais je crois que la plupart des questions de mauvaise qualité proviennent de personnes animées de bonnes intentions (quoique stupides). J'essaie toujours de me rappeler ce que signifie être un débutant. Quand on débute, on ne comprend pas vraiment comment tout fonctionne ici. Dans certains cas, vous ne savez même pas quels mots exprimer correctement votre problème. Croyez-moi, c'est difficile d'être dans cette position. Et c'est désagréable quand on se fait asperger de slop juste pour poser une question.

Bien que Stack Overflow ait fait beaucoup pour aider les débutants, il reste encore beaucoup à faire. J'ai essayé de trouver un équilibre entre le respect des normes du site et l'indulgence envers les utilisateurs inexpérimentés. Cela peut impliquer d'expliquer pourquoi j'ai voté pour fermer la question ou de publier un commentaire encourageant l'utilisateur à fournir plus d'informations. J'ai encore de la place pour grandir.

D'un autre côté, je n'hésite pas à voter contre les utilisateurs ayant une réputation de 50 000 personnes qui posent des questions telles que « Quelle est la meilleure mise en page VS Code pour le développement JavaScript ? » ou qui téléchargent des captures d'écran savonneuses de code au lieu de texte.

Parfois, je veux juste te remercier

Il existe une faible culture de gratitude sur Stack Overflow. Je me souviens qu'il était une fois le site qui supprimait automatiquement les mots « bonjour » et « merci » des questions. Peut-être que c'est encore fait, je n'ai pas vérifié.

Aujourd’hui, tous ceux qui ont travaillé dans le support client savent bien que trop de politesse peut gêner et même paraître forcée. Mais parfois, quelqu'un sur ce site fait quelque chose de très important pour vous, et la seule façon de le remercier est de lui donner un plus. C'est nul.

L’efficacité ne nous oblige pas à devenir des robots sans âme. Un canal secondaire peut fournir une communication plus authentique entre les personnes, si les utilisateurs eux-mêmes le souhaitent, bien sûr.

Parfois, je veux savoir ce qui s'est passé après avoir reçu la réponse

Stack Overflow fonctionne sur un principe transactionnel : certaines personnes posent des questions, d'autres répondent. Que se passe-t-il après avoir reçu une réponse ? Qui sait? Parfois, je m'interroge à ce sujet. Ma réponse a-t-elle été utile ? Quel modeste projet a-t-il aidé ? Qu’a appris celui qui pose la question ?

Bien entendu, il est impossible de satisfaire cette curiosité. Exiger des utilisateurs qu'ils rendent compte de la manière dont ils utiliseront les informations qu'ils reçoivent serait très problématique, même si vous pouviez le faire. Mais c'est intéressant d'y réfléchir.

La gamification est efficace...

…lors de la transformation des processus en jeux.

Je suis encore un peu inquiet lorsque je vois la petite icône +10 ou +25 dans la barre d'état. Peut-être que ces petites touches de gamification sont la raison pour laquelle je reviens sur le site depuis 10 ans. Mais au fil des années, j'ai également commencé à me demander ce qu'est un genre de jeu Stack Overflow et ce que signifie y gagner.

Je suis sûr que le système a été créé avec les meilleures intentions : récompenser les gens pour leurs questions et réponses utiles. Mais dès que vous ajoutez des scores élevés, cela entre en vigueur la loi de Goodhart, et certains utilisateurs commencent à ajuster leurs actions non pas pour atteindre une valeur maximale, mais pour obtenir des notes maximales. Et c'est important parce que...

La réputation ne signifie pas ce que vous pensez qu’elle signifie.

La réputation n'équivaut pas à la compétence technique, aux compétences en communication ou à la compréhension du fonctionnement ou du fonctionnement de Stack Overflow.

Je ne veux pas dire que la réputation ne sert à rien. Cela ne veut tout simplement pas dire ce que veulent dire les administrateurs de Stack Overflow ou ce que le mot « réputation » est censé signifier. J'ai réalisé que la réputation est une mesure d'influence. Considérons deux réponses hypothétiques publiées sur le site :

  • Un sur une opération git courante. J'ai écrit une réponse de trois lignes en deux minutes en utilisant Google.
  • L’autre concerne la théorie des graphes intriqués. Peut-être qu’une centaine de personnes seulement dans le monde entier peuvent y répondre. J'ai écrit quelques paragraphes et un exemple de code expliquant le problème et comment le résoudre.

En cinq ans, la première réponse a été vue 5 millions de fois et a reçu 2000 300 votes positifs. La deuxième réponse a été examinée XNUMX fois et a reçu deux maigres votes positifs.

Dans une certaine mesure, c'est très malhonnête. Pourquoi récompenser quelque chose qui était au bon endroit au bon moment ? (Tout n'est pas déterminé par la chance ; la compréhension des règles du jeu joue également un rôle énorme). D’un autre côté, la première question a aidé beaucoup plus de personnes que la seconde. Peut-être vaut-il la peine de reconnaître que, dans un sens, la reconnaissance conduit à l’accumulation de « réputation » ?

Je considère donc la « réputation » sur Stack Overflow comme une sorte de mesure d'influence. La véritable réputation ne peut pas être mesurée par de simples points, elle vient de la communauté. De qui est-ce que j'écoute les conseils, qui aide les autres, à qui est-ce que je fais confiance ? Peut-être que ce seront toutes des personnes différentes, selon que j'écris en PHP ou pour iOS.

Cela dit, je ne sais pas ce que Stack Overflow devrait faire à cet égard. Les utilisateurs seraient-ils aussi motivés si, au lieu de « réputation », ils gagnaient des « points de ruse » ? Les utilisateurs resteront-ils aussi engagés s’il n’y a aucun système de points ? Je pense que c'est peu probable. Et le mythe selon lequel la « réputation » sur Stack Overflow équivaut à une véritable réputation profite non seulement au site lui-même, mais également à ses utilisateurs les plus actifs. Eh bien, vraiment, qui n’aime pas accroître sa réputation ?

Non, comme cela arrive le plus souvent dans la vie, pour avoir une idée réelle de ce qui se passe, il faut analyser non seulement les chiffres. Si un message a 10 XNUMX points sur Stack Overflow, regardez comment cette personne communique, quelles questions et réponses elle publie. Et dans tous les cas, sauf exceptionnels, gardez à l’esprit qu’il est peu probable que les scores de Stack Overflow à eux seuls indiquent autre chose que la capacité d’une personne à utiliser le site. Et d’après mon expérience, ils n’en parlent souvent même pas.

Je ne serais pas productif sans Stack Overflow

Chaque fois que j'ai besoin de faire quelque chose de compliqué dans git, je vais sur Stack Overflow. Chaque fois que j'ai besoin de quelque chose de simple dans bash, je vais sur Stack Overflow. Chaque fois que je reçois une étrange erreur de compilation, je vais sur Stack Overflow.

Je ne suis pas productif sans IntelliSense, un moteur de recherche et Stack Overflow. À en juger par certains livres, cela fait de moi un très mauvais programmeur. J'échouerais probablement à de nombreux tests et ne résoudrais pas beaucoup de problèmes au tableau. Ainsi soit-il. Sérieusement, chaque fois que j'utilise .sort en JavaScript, je dois rechercher des informations sur le moment où j'obtiendrai -1, 0 ou 1, et j'écris du JS tous les jours, développant l'éditeur le plus populaire pour le langage.

Non, Stack Overflow est un outil incroyable. Seul un imbécile n’utiliserait pas tous les outils à sa disposition. Alors pourquoi ne pas être un imbécile intérieur comme moi ? Économisez vos ressources cérébrales pour des connaissances importantes, comme mémoriser toutes les intrigues de la série Seinfeld ou inventer des jeux de mots sophistiqués (qui manquent tellement dans cet article, mais il y en aura bien d'autres d'une nature complètement différente).

Stack Overflow est un miracle

Stack Overflow permet à quiconque, quelle que soit son expérience ou ses connaissances, de publier des questions de programmation. Ces questions trouvent réponse chez de parfaits inconnus, dont la plupart consacrent du temps de leur vie et de leur carrière à aider les autres gratuitement.

Le miracle est le fait même de l'existence et le résultat du travail de Stack Overflow. Je suis sûr que tout ne se passe pas aussi bien que ses créateurs l'avaient prévu, mais ils essaient. Malgré toutes les lacunes, le site aide un grand nombre de personnes depuis de nombreuses années, dont moi.

Stack Overflow ne durera pas éternellement. Un jour, quelque chose de mieux arrivera. Espérons que c'est quelque chose qui permettra d'apprendre des erreurs de Stack Overflow et d'en tirer le meilleur parti. D’ici là, j’espère que nous ne prenons pas ce site pour acquis. C'est à la fois un point de repère et une communauté vivante, constamment renouvelée par de nouvelles personnes. Si cela vous inquiète, rappelez-vous que tout cela est très fragile et que même de petites actions - comme aider de nouveaux arrivants bien intentionnés mais encore ignorants - peuvent avoir un effet positif. Si je critique ce site, c'est uniquement parce que je m'en soucie et que je sais comment l'améliorer.

PS

J'étais encore écolier quand je suis arrivé à Stack Overflow. Je commençais tout juste à écrire du JavaScript (ES5 !) dans Eclipse, et il semblait que 90 % des questions commençaient par « Utiliser jQuery, juste… ». Et même si je ne savais pas ce que je faisais, des inconnus passaient leur temps à m'aider. Je ne pense pas l'avoir vraiment apprécié à l'époque, mais je ne l'ai pas oublié.

Les gens voudront toujours que Stack Overflow soit quelque chose de différent : un site de questions et réponses ; un outil pour résoudre les problèmes ménagers ; niveau de vie de la programmation. Et pour moi, ce site, malgré sa croissance et ses défauts, est fondamentalement une communauté ouverte où des inconnus s'entraident pour apprendre et s'améliorer. Et c'est génial. Je suis heureux de faire partie de Stack Overflow depuis 10 ans et j'espère continuer à le faire. Je veux apprendre autant de nouvelles choses au cours de la prochaine décennie qu’au cours de la décennie précédente.

Source: habr.com

Ajouter un commentaire