Hvad jeg lærte på 10 år på Stack Overflow

Hvad jeg lærte på 10 år på Stack Overflow
Jeg nærmer mig mit ti-års jubilæum på Stack Overflow. Gennem årene har min tilgang til brugen af ​​siden og opfattelsen af ​​den ændret sig meget, og jeg vil gerne dele min erfaring med dig. Og jeg skriver om dette fra den gennemsnitlige brugers synspunkt, som ikke er særlig involveret i livet på webstedets fællesskab eller dets kultur. I disse dage har jeg kun besvaret spørgsmål relateret til VS Code, det produkt jeg arbejder på. Jeg plejede dog at deltage aktivt i diskussioner om en lang række emner. Om 10 år har jeg stillede omkring 50 spørgsmål og gav 575 svar, kiggede et utal af andres kommentarer igennem.

Jon Skeete beskrev kulturen i Stack Overflow meget bedre og mere autoritativ, end jeg nogensinde vil være i stand til at gøre. Dets udgivelse påvirkede nogle af kapitlerne i denne artikel, men overordnet set er disse mine egne ærlige refleksioner over mine erfaringer med Stack Overflow, hvad der er godt og dårligt ved siden, og hvordan det kan bruges i dag. Denne diskussion vil være ret overfladisk, uden at dykke dybt ned i stedets funktion eller dets historie.

Så her er, hvad jeg har lært af 10 års brug af Stack Overflow.

Du skal kunne stille spørgsmål

Ved første øjekast kunne intet være enklere: Indtast et par ord i tekstfeltet, klik på "Send", og internettet vil på magisk vis hjælpe med at løse alle dine problemer! Men det tog mig næsten 10 år at finde ud af, hvilke ord jeg skulle skrive i det forbandede felt for rent faktisk at få resultater. Faktisk lærer jeg stadig om det hver dag.

At stille gode spørgsmål er en virkelig undervurderet færdighed (ligesom at skrive en god problemrapport for den sags skyld). For det første, hvordan afgør vi overhovedet, om et spørgsmål er "godt"? Stack Overflow tilbud antydning, som angiver følgende kvaliteter ved et godt spørgsmål:

  • Passer det til sidens tema?
  • Indebærer et objektivt svar.
  • Er ikke blevet spurgt endnu.
  • Er blevet undersøgt.
  • Beskriver klart problemet, normalt med et minimalt, let reproducerbart eksempel.

Okay, men hvordan ser en "klar problemformulering" ud i praksis? Hvilke oplysninger er relevante, og hvad er ikke? Nogle gange føles det som om, at for at stille et godt spørgsmål, skal du først kende svaret.

Desværre hjælper det lille tekstfelt ikke her. Så er det underligt, at så mange brugere stiller spørgsmål af lav kvalitet? Nogle gange er det eneste svar, de får, et link til noget forvirrende dokumentation. Og de vil stadig være heldige. Mange spørgsmål af lav kvalitet bliver simpelthen stille nedstemt, og de forsvinder ind i den endeløse tråd af spørgsmål.

At stille gode spørgsmål er en færdighed. Heldigvis kan det udvikles. Jeg lærte for det meste ved at læse en masse spørgsmål og svar, notere hvad der virkede og hvad der ikke gjorde. Hvilken information er nyttig, og hvad er irriterende? Selvom du stadig vil være bange for at bruge den tilegnede viden i praksis og stille spørgsmål. Bare prøv dit bedste og lær af resultaterne. Jeg må indrømme, at jeg selv er lidt flov over nogle af mine tidlige uvidende spørgsmål, selvom dette måske beviser, at jeg har forbedret mine spørgeevner meget, siden jeg befandt mig på denne side.

Dårlige og knap så gode spørgsmål er ikke det samme

Jeg vil ikke overtrække pillen: nogle spørgsmål er bare dårlige.

Et spørgsmål bestående af et skærmbillede og sætningen "HVORFOR VIRKER DET IKKE!?!" - dårligt. Hvorfor? Det er tydeligt, at forfatteren næsten ikke anstrengte sig. Dette er ikke så meget et spørgsmål som et krav: "gør dette arbejde for mig!" Hvorfor skulle jeg gøre dette? Min tid er for værdifuld til at spilde på at hjælpe nogen, der ikke ønsker at lære til at begynde med, og som ikke vil sætte pris på min hjælp. Lær, hvad Stack Overflow er.

Overvej nu et spørgsmål med titlen "Sådan fjerner du blå kanter på min side", som består af adskillige tekstafsnit, der taler om CSS-outlineegenskaben, men uden udtrykkeligt at nævne ordene "CSS" eller "outline". Selvom et spørgsmål som dette kan gå imod mange Stack Overflow-retningslinjer, er jeg uenig, det er ikke et dårligt spørgsmål. Forfatteren forsøgte i det mindste at give nogle oplysninger, selv uden at vide, hvad han skulle give. Forsøget tæller, ligesom viljen til at opfatte og lære.

Men mange Stack Overflow-bidragydere vil sandsynligvis behandle begge spørgsmål på samme måde: nedstem og luk. Dette er frustrerende og slukker mange uerfarne brugere, før de kan lære at stille bedre spørgsmål og endda forstå, hvordan siden fungerer.

Virkelig dårlige spørgsmål er ikke din tid værd. Men man skal huske på, at de, der stiller ikke særlig gode spørgsmål, gør det utilsigtet. De vil gerne stille gode spørgsmål, de ved bare ikke hvordan. Hvis du straffer nytilkomne blindt og uden forklaring, hvordan vil de så lære det?

Et godt spørgsmål garanterer ikke et svar

Stack Overflow giver normalt hurtigere svar på simple spørgsmål, som mange mennesker kan besvare. Har du et spørgsmål om binær søgning i JavaScript eller om HTML? Vidunderlig! Modtag fem svar på mindre end en time. Men jo mere komplekst eller specifikt spørgsmålet er, jo mindre sandsynligt er det, at du får et svar, uanset kvaliteten af ​​formuleringen.

Sandsynligheden for at få et svar falder også hurtigt over tid. Når et spørgsmål går flere sider dybt ind i feedet, forsvinder det. En uge senere kan du kun bede til, at nogen med den rette viden falder over dit spørgsmål (eller generøst klikker på det).

Du kan måske ikke lide de rigtige svar

Hver måned modtager jeg flere nedstemmer for såkaldt upopulære svar. Det er den slags svar, der i det væsentlige siger, "årsagen er, fordi det er designet på den måde", eller "det er ikke muligt, fordi...", eller "det er en fejl, der skal rettes først." I alle ovenstående tilfælde modtager forfatterne ikke en løsning eller endog en løsning. Og jeg formoder, at når folk ikke kan lide, hvad et svar siger, så nedstemmer de det. Jeg forstår dem selv, men det betyder ikke, at svarene er forkerte.

Det modsatte er selvfølgelig også tilfældet: Gode svar fortæller dig ikke nødvendigvis, hvad du gerne vil høre. Nogle af de bedste svar besvarer først det oprindelige spørgsmål, men beskriver derefter andre tilgange til at løse problemet. Nogle gange svarer jeg på en brugers spørgsmål og skriver så en lang tekst om, hvorfor det ikke anbefales at gøre det.

Hver gang holdningsudtryk forenkles til op- og ned-stemmer eller en like-knap, går vigtige udmærkelser tabt. Dette problem opstår ofte på internettet. Hvor mange sociale netværk giver dig mulighed for at skelne mellem "jeg støtter det her" og "jeg synes det er godt sagt, selvom jeg ikke kan lide det eller er enig i det"?

Alt i alt, på trods af de månedlige nedstemmer, tror jeg, at Stack Overflow-fællesskabet stemmer retfærdigt. Vi vil holde os til denne vej.

Jeg spørger næsten aldrig på Stack Overflow

Jo længere jeg brugte denne side, jo sjældnere stillede jeg spørgsmål på den. Det skyldes blandt andet min professionelle vækst. Mange af de problemer, jeg møder på arbejdet, er for komplekse til at udtrykke i simple spørgsmål, eller for specifikke til, at nogen overhovedet kan hjælpe mig. Jeg har indset sidens begrænsninger, så jeg undgår at stille spørgsmål, som jeg næsten helt sikkert ikke får et godt svar på.

Men jeg stillede sjældent spørgsmål her, selv når jeg lærte et nyt sprog eller nye rammer. Ikke fordi han er sådan et geni, tværtimod. Det er bare det, at jeg, efter flere år med at have været på Stack Overflow, når jeg har et spørgsmål, kommer til den dybe overbevisning, at jeg næppe er den første til at stille det. Jeg begynder at søge, og oplever næsten altid, at nogen allerede spurgte det samme for et par år siden.

At observere andres spørgsmål er en fantastisk måde at lære nye ting om dit produkt på.

Nu arbejder jeg videre VS-kode, så jeg gjorde det til en vane at se på spørgsmål tagget vscode. Dette er en fantastisk måde at se, hvordan min kode bruges i den virkelige verden. Hvilke problemer støder brugerne på? Hvordan kan dokumentationen eller API'en forbedres? Hvorfor forårsager noget, som jeg troede var helt klart, så megen misforståelse?

Spørgsmål er et vigtigt signal, der viser, hvordan dit produkt bliver brugt. Men pointen er ikke at svare og komme videre, men at prøve først at forstå, hvorfor personen har et spørgsmål. Måske er der et problem i produktet, som du ikke kender, eller nogle antagelser, som du ubevidst har gjort dig? Spørgsmålene hjalp mig også med at opdage mange fejl og inspirerede mig til at fortsætte med at arbejde.

Hvis du vedligeholder et produkt for udviklere, skal du ikke tænke på Stack Overflow som en dumpingplads (eller endnu værre, en spørgsmålskirkegård). Kom jævnligt tilbage for at se, hvilke spørgsmål og svar der er dukket op. Det betyder ikke, at du selv skal besvare alle spørgsmål, men signaler fra Stack Overflow er for vigtige til at ignorere.

Grænserne mellem et spørgsmål, en fejlrapport og en funktionsanmodning er sløret.

En hel del spørgsmål om VS-kode på Stack Overflow var faktisk fejlrapporter. Og mange andre er faktisk anmodninger om nye funktioner.

For eksempel et spørgsmål med titlen "Hvorfor går VS Code ned, når jeg gør...?" - dette er en fejlrapport. VS-koden bør ikke gå ned i en række forskellige situationer. At besvare spørgsmål, der er fejlrapporter, er kontraproduktivt, fordi forfatterne kan være tilfredse med en løsning og aldrig indsende en rigtig fejlrapport. I situationer som denne beder jeg normalt brugere om at indsende en fejlrapport på Github.

I andre tilfælde kan forskellene være mindre tydelige. For eksempel spørgsmålet "Hvorfor virker JavaScript IntelliSense ikke i VS-kode?" Afhængigt af hvordan JavaScript IntelliSense ikke virker, kan problemet falde i en af ​​tre kategorier:

  • Hvis det er et brugerkonfigurationsproblem, så er det virkelig et spørgsmål til Stack Overflow.
  • Hvis IntelliSense i det beskrevne tilfælde skulle virke, men det ikke gør, så er dette en fejlrapport.
  • Hvis IntelliSense i det beskrevne tilfælde ikke skulle virke, så er dette en anmodning om en ny funktion.

I sidste ende er de fleste brugere ligeglade med disse nuancer – de vil bare have JavaScript IntelliSense til at virke.

Og selvom disse forskelle er vigtige for mig, som den ansvarlige for projektet, burde de generelt set ikke betyde noget for mig. Fordi spørgsmål, fejlrapporter og funktionsanmodninger alle er måder at udtrykke én idé på: brugeren forventer noget af min kode og får det ikke. Hvis produktet var perfekt, ville brugerne aldrig stille spørgsmål om det, fordi alt ville være klart for dem, og det ville gøre præcis, hvad de vil (eller i det mindste tydeligt fortælle dem, hvorfor det ikke kan).

Udviklere er også mennesker

Folk er følelsesladede. Folk er irrationelle. Folk er røvhuller. Ikke altid, selvfølgelig, men nogle gange! Og tro det eller ej, udviklere er også mennesker.

Der er en fantasi, som vi udviklere kan lide at fortælle os selv: "Vi arbejder med computere, så vi skal være rationelle. Vi forstår kryptiske symboler, så vi skal være smarte. Software har overtaget verden, så vi skal være seje! Fedt nok! Frem!!!"

Det er forkert. Og hvis det var sådan, så hjælpe Gud resten af ​​folket. Selv på Stack Overflow, det værktøj til fagfolk, der er designet som en objektiv videnbase, selv i mit eget, meget specifikke hjørne af VS Code, støder jeg fortsat på alle mulige forargelser: logiske fejlslutninger, fornærmelser, flokmentalitet osv.

Lad være med at narre dig selv: du er sandsynligvis ikke så perfekt, som du tror. Men det betyder ikke, at vi ikke skal forsøge at slippe af med vores mangler.

Dude, det er mig, der har skabt dette

Jeg er også et menneske, og fra tid til anden irriterer det mig, hvad der sker på Stack Overflow. For eksempel når en bruger selvsikkert skriver nonsens eller blot giver et fejlagtigt svar på et spørgsmål relateret til VS Code, et produkt som jeg har lavet, og som jeg kender meget godt. Mærkeligt nok ser det ud til, at jo mere fejlagtigt svaret er, jo mere sandsynligt er det, at nogen vil kalde det et ubestrideligt faktum.

Når dette sker, handler jeg som på billedet og skriver det rigtige svar.

Hvad jeg lærte på 10 år på Stack Overflow

Og det resulterede flere gange i lange tråde: ve mig, fordi jeg turde stille spørgsmålstegn ved deres viden om, hvad jeg skabte! Hold op med at prøve at have ret hele tiden, I forbandet kloge fyre! For jeg har ret!!!

Det er nemt at blive kynisk i denne håbløshed

Når du står over for en endeløs strøm af spørgsmål af lav kvalitet, er det nemt at blive kynisk. Har han aldrig hørt om Google? Ved han overhovedet, hvordan man konstruerer sammenhængende sætninger? Hvad er du, en hund?

Nogle gange ser jeg på snesevis af nye spørgsmål på en dag. Konstant observation af alle disse spørgsmål af lav kvalitet risikerer at glide ud i foragt eller kynisme. Denne kynisme kan smitte af på siden, som enhver, der har stødt på en overivrig moderator eller brugt et par timer på at researche og skrive et spørgsmål, vil bevidne, kun for at modtage negative svar til gengæld og forsvinde i glemslen uden nogen forklaring.

Selvfølgelig er der brugere, der ikke anstrenger sig og stiller dårlige spørgsmål. Men jeg tror, ​​at hovedparten af ​​spørgsmål af lav kvalitet kommer fra folk med gode hensigter (omend dumme dem). Jeg prøver altid at huske, hvad det vil sige at være nybegynder. Når du lige starter, forstår du ikke, hvordan alting virkelig fungerer her. I nogle tilfælde ved du ikke engang, hvilke ord der skal udtrykke dit problem korrekt. Tro mig, det er svært at være i denne position. Og det er ubehageligt, når du bliver overhældt med sjusk bare for at stille et spørgsmål.

Selvom Stack Overflow har gjort meget for at hjælpe nybegyndere, er der stadig meget mere, der skal gøres. Jeg forsøgte at finde en balance mellem at overholde webstedets standarder og at være eftergivende over for uerfarne brugere. Dette kan involvere at forklare, hvorfor jeg stemte for at lukke spørgsmålet, eller at sende en kommentar, der opfordrer brugeren til at give flere oplysninger. Jeg har stadig plads til at vokse.

På den anden side tøver jeg ikke med at nedstemme brugere med et ry på 50, der poster spørgsmål som "Hvad er det bedste VS-kodelayout til JavaScript-udvikling?", eller som uploader sæbelige skærmbilleder af kode i stedet for tekst.

Nogle gange vil jeg bare takke dig

Der er en svag taknemmelighedskultur på Stack Overflow. Jeg husker engang siden, at siden automatisk skar ordene "hej" og "tak" ud fra spørgsmål. Måske er dette stadig gjort, jeg har ikke tjekket.

I dag ved alle, der har arbejdet med kundesupport, godt, at for meget høflighed kan komme i vejen og endda virke tvunget. Men nogle gange gør nogen på dette websted noget meget vigtigt for dig, og den eneste måde at takke dem på er at give dem et plus. Det stinker.

Effektivitet kræver ikke, at vi bliver sjælløse robotter. En sidekanal kan give mere autentisk kommunikation mellem mennesker, hvis brugerne selvfølgelig selv ønsker det.

Nogle gange vil jeg gerne vide, hvad der skete efter at have modtaget svaret

Stack Overflow fungerer efter et transaktionsprincip: nogle mennesker stiller spørgsmål, andre svarer. Hvad sker der efter at have modtaget et svar? Hvem ved? Nogle gange undrer jeg mig over dette. Var mit svar nyttigt? Hvilket beskedent projekt hjalp han? Hvad lærte spørgeren?

Selvfølgelig er det umuligt at tilfredsstille denne nysgerrighed. At kræve, at brugerne skal redegøre for, hvordan de vil bruge de oplysninger, de modtager, ville være meget problematisk, selvom du kunne gøre det. Men det er interessant at tænke over det.

Gamification er effektivt...

…når du omdanner processer til spil.

Jeg bliver stadig lidt bekymret, når jeg ser det lille +10 eller +25 ikon i statuslinjen. Måske er disse små strejf af gamification grunden til, at jeg er kommet tilbage til siden i 10 år. Men gennem årene er jeg også begyndt at spekulere på, hvad det er for et spil Stack Overflow, og hvad det betyder at vinde.

Jeg er sikker på, at systemet blev skabt med de bedste intentioner: at belønne folk for nyttige spørgsmål og svar. Men så snart du tilføjer høje scores, træder den i kraft Goodharts lov, og nogle brugere begynder at justere deres handlinger ikke for at opnå maksimal værdi, men for at opnå maksimale vurderinger. Og det er vigtigt, fordi...

Omdømme betyder ikke, hvad du tror, ​​det betyder.

Omdømme svarer ikke til teknisk kompetence, kommunikationsevner eller forståelse af, hvordan Stack Overflow fungerer eller bør fungere.

Jeg mener ikke at sige, at omdømme er ubrugeligt. Det betyder bare ikke, hvad Stack Overflow-administratorer mener, eller hvad ordet "omdømme" skal betyde. Jeg indså, at omdømme er et mål for indflydelse. Overvej to hypotetiske svar offentliggjort på webstedet:

  • En om en almindelig git-operation. Jeg skrev et tre-linjers svar på to minutter ved hjælp af Google.
  • Den anden handler om indviklet grafteori. Måske kun hundrede mennesker i hele verden kan svare på det. Jeg skrev et par afsnit og prøvekode, der forklarer problemet, og hvordan man løser det.

I løbet af fem år blev det første svar set 5 millioner gange og modtog 2000 opstemmer. Det andet svar blev kigget på 300 gange og givet to sølle op.

Til en vis grad er dette meget uærligt. Hvorfor belønne noget, der var på det rigtige sted på det rigtige tidspunkt? (ikke alt bestemmes af held; forståelsen af ​​spillets regler spiller også en stor rolle). På den anden side hjalp det første spørgsmål faktisk mange flere mennesker end det andet. Måske er det værd at erkende, at anerkendelse i en vis forstand fører til ophobning af "omdømme"?

Så jeg anser "omdømme" på Stack Overflow for at være en slags målestok for indflydelse. Ægte omdømme kan ikke måles ved blotte point, det kommer fra fællesskabet. Hvis råd lytter jeg til, hvem hjælper andre, hvem stoler jeg på? Måske vil disse alle være forskellige mennesker, alt efter om jeg skriver i PHP eller til iOS.

Når det er sagt, ved jeg ikke, hvad Stack Overflow skal gøre i denne henseende. Ville brugerne være lige så motiverede, hvis de i stedet for "omdømme" optjente "udspekulerede point"? Vil brugerne forblive lige så engagerede, hvis der ikke er noget pointsystem overhovedet? Jeg tror, ​​det er usandsynligt. Og myten om, at "omdømme" på Stack Overflow svarer til reelt omdømme, gavner ikke kun selve webstedet, men også dets mest aktive brugere. Nå, virkelig, hvem kan ikke lide at øge deres omdømme?

Nej, som det oftest sker i livet, for at få en reel idé om, hvad der sker, skal du ikke kun analysere tal. Hvis et indlæg har 10 tusind point på Stack Overflow, så se på, hvordan denne person kommunikerer, hvilke spørgsmål og svar han udgiver. Og i alle undtagen usædvanlige tilfælde skal du huske på, at Stack Overflow-score alene næppe indikerer andet end en persons evne til at bruge webstedet. Og efter min erfaring taler de ofte ikke engang om dette.

Jeg ville ikke være produktiv uden Stack Overflow

Hver gang jeg skal lave noget kompliceret i git, går jeg til Stack Overflow. Hver gang jeg har brug for noget simpelt i bash, går jeg til Stack Overflow. Hver gang jeg får en mærkelig kompileringsfejl, går jeg til Stack Overflow.

Jeg er ikke produktiv uden IntelliSense, en søgemaskine, og Stack Overflow. At dømme efter nogle bøger gør dette mig til en meget dårlig programmør. Jeg ville nok fejle en masse test og ikke løse en masse problemer på tavlen. Så vær det. Seriøst, hver gang jeg bruger .sort i JavaScript, skal jeg slå oplysninger op om, hvornår jeg får -1, 0 eller 1, og jeg skriver JS hver dag og udvikler den mest populære editor til sproget.

Nej, Stack Overflow er et utroligt værktøj. Kun et fjols ville ikke bruge alle de værktøjer, han havde til rådighed. Så hvorfor ikke være et indre fjols som mig? Gem dine hjerneressourcer til vigtig viden, såsom at huske alle plottene i Seinfeld-serien eller komme med sofistikerede ordspil (som så mangler i denne artikel, men der vil være mange andre af en helt anden karakter).

Stack Overflow er et mirakel

Stack Overflow giver alle, uanset erfaring eller viden, mulighed for at stille programmeringsspørgsmål. Disse spørgsmål besvares af fuldstændig fremmede, hvoraf de fleste bruger tid af deres liv og karriere på at hjælpe andre gratis.

Miraklet er selve eksistensen og resultatet af Stack Overflows arbejde. Jeg er sikker på, at ikke alt bliver så godt, som dets skabere havde til hensigt, men de prøver. På trods af alle manglerne har siden hjulpet et stort antal mennesker i mange år, inklusive mig.

Stack Overflow vil ikke vare evigt. En dag kommer der noget bedre. Forhåbentlig er dette noget, der vil lære af fejlene i Stack Overflow og tage det bedste fra det. Indtil da håber jeg, at vi ikke tager denne side for givet. Dette er både et skelsættende og et levende fællesskab, som hele tiden fyldes op med nye mennesker. Hvis dette bekymrer dig, så husk, at det hele er meget skrøbeligt, og selv små handlinger - som at hjælpe velmenende, men endnu uvidende nytilkomne - kan have en positiv effekt. Hvis jeg kritiserer dette websted, er det kun, fordi jeg bekymrer mig, og jeg ved, hvordan man gør det bedre.

PS

Jeg var stadig en skoledreng, da jeg kom til Stack Overflow. Jeg var lige begyndt at skrive (ES5!) JavaScript i Eclipse, og det virkede som om, at 90% af spørgsmålene startede med "Brug af jQuery, bare...". Og selvom jeg ikke vidste, hvad jeg lavede, brugte fremmede deres tid på at hjælpe mig. Jeg tror ikke, jeg virkelig satte pris på det på det tidspunkt, men jeg har ikke glemt det.

Folk vil altid have, at Stack Overflow skal være noget andet: et spørgsmål-og-svar-websted; et værktøj til at løse husholdningsproblemer; levestandard for programmering. Og for mig er dette websted, på trods af dets vækst og mangler, i sin kerne et åbent fællesskab, hvor fremmede hjælper hinanden med at lære og forbedre sig. Og det er fantastisk. Jeg er glad for, at jeg har været en del af Stack Overflow i de sidste 10 år og håber at fortsætte med det. Jeg vil gerne lære lige så meget nyt i det næste årti, som jeg gjorde i det foregående årti.

Kilde: www.habr.com

Tilføj en kommentar