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

Hva jeg lærte på 10 år på Stack Overflow
Jeg nærmer meg tiårsjubileum på Stack Overflow. I løpet av årene har min tilnærming til å bruke siden og oppfatningen av den endret seg mye, og jeg vil dele min erfaring med deg. Og jeg skriver om dette fra synspunktet til den gjennomsnittlige brukeren som ikke er veldig involvert i livet til nettstedets fellesskap eller dets kultur. I disse dager har jeg kun svart på spørsmål knyttet til VS Code, produktet jeg jobber med. Imidlertid pleide jeg å delta aktivt i diskusjoner om et bredt spekter av emner. Om 10 år har jeg stilte rundt 50 spørsmål og ga 575 svar, så gjennom et mylder av andres kommentarer.

Jon Skeete beskrev kulturen til Stack Overflow mye bedre og mer autoritativ enn jeg noen gang vil kunne gjøre. Publiseringen påvirket noen av kapitlene i denne artikkelen, men totalt sett er dette mine egne oppriktige refleksjoner om mine erfaringer med Stack Overflow, hva som er bra og dårlig med nettstedet, og hvordan det kan brukes i dag. Denne diskusjonen vil være ganske overfladisk, uten å dykke dypt inn i funksjonene til nettstedet eller dets historie.

Så her er det jeg har lært fra 10 år med bruk av Stack Overflow.

Du må kunne stille spørsmål

Ved første øyekast kan ingenting være enklere: skriv inn noen få ord i tekstfeltet, klikk på "Send", og Internett vil på magisk vis hjelpe med å løse alle problemene dine! Men det tok meg nesten 10 år å finne ut hvilke ord jeg skulle skrive inn i det jævla feltet for å faktisk få resultater. Faktisk lærer jeg fortsatt om det hver dag.

Å stille gode spørsmål er en virkelig undervurdert ferdighet (det samme er å skrive en god problemrapport, for den saks skyld). For det første, hvordan avgjør vi om et spørsmål er "bra"? Stack Overflow-tilbud hint, som viser følgende egenskaper ved et godt spørsmål:

  • Stemmer det med temaet på siden?
  • Innebærer et objektivt svar.
  • Har ikke blitt spurt enda.
  • Har blitt forsket på.
  • Beskriver tydelig problemet, vanligvis med et minimalt, lett reproduserbart eksempel.

Ok, men hvordan ser en «klar problemstilling» ut i praksis? Hvilken informasjon er relevant og hva er ikke? Noen ganger føles det som om du først må vite svaret for å stille et godt spørsmål.

Dessverre hjelper ikke det lille tekstfeltet her. Så er det rart at så mange brukere legger ut spørsmål av lav kvalitet? Noen ganger er det eneste svaret de får en lenke til litt forvirrende dokumentasjon. Og de vil fortsatt være heldige. Mange spørsmål av lav kvalitet blir rett og slett nedstemt i det stille, og de forsvinner inn i den endeløse tråden av spørsmål.

Å stille gode spørsmål er en ferdighet. Heldigvis kan det utvikles. Jeg lærte for det meste ved å lese en haug med spørsmål og svar, notere hva som fungerte og hva som ikke gjorde det. Hvilken informasjon er nyttig og hva er irriterende? Selv om du fortsatt vil være redd for å bruke den ervervede kunnskapen i praksis og stille spørsmål. Bare prøv ditt beste og lær av resultatene. Jeg må innrømme at jeg selv er litt flau over noen av mine tidlige uvitende spørsmål, selv om dette kanskje beviser at jeg har forbedret spørsmålsferdighetene mine mye siden jeg fant meg selv på denne siden.

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

Jeg vil ikke sukkerbelegge pillen: noen spørsmål er bare dårlige.

Et spørsmål som består av et skjermbilde og setningen "HVORFOR FUNGERER IKKE DETTE!?!" - dårlig. Hvorfor? Det er åpenbart at forfatteren nesten ikke anstrengte seg. Dette er ikke så mye et spørsmål som et krav: "gjør dette arbeidet for meg!" Hvorfor skulle jeg gjøre dette? Tiden min er for verdifull til å kaste bort på å hjelpe noen som ikke vil lære til å begynne med og som ikke vil sette pris på min hjelp. Finn ut hva Stack Overflow er.

Vurder nå et spørsmål med tittelen "Hvordan fjerner du blå kantlinjer på siden min", som består av flere avsnitt med tekst som snakker om CSS-omrissegenskapen, men uten å eksplisitt nevne ordene "CSS" eller "kontur." Selv om et spørsmål som dette kan gå i strid med mange retningslinjer for Stack Overflow, er jeg uenig, det er ikke et dårlig spørsmål. Forfatteren prøvde i det minste å gi litt informasjon, selv uten å vite hva han skulle gi. Forsøket teller, det samme gjør viljen til å oppfatte og lære.

Imidlertid vil mange Stack Overflow-bidragsytere sannsynligvis behandle begge spørsmålene på samme måte: nedstemme og lukke. Dette er frustrerende og slår av mange uerfarne brukere før de kan lære å stille bedre spørsmål og til og med forstå hvordan nettstedet fungerer.

Virkelig dårlige spørsmål er ikke verdt tiden din. Men man må huske på at de som stiller lite gode spørsmål gjør det utilsiktet. De vil stille gode spørsmål, de vet bare ikke hvordan. Hvis du straffer nykommere blindt og uten forklaring, hvordan vil de lære?

Et godt spørsmål garanterer ikke et svar

Stack Overflow gir vanligvis raskere svar på enkle spørsmål som mange mennesker kan svare på. Har du et spørsmål om binært søk i JavaScript eller om HTML? Herlig! Motta fem svar på mindre enn en time. Men jo mer komplekst eller spesifikt spørsmålet er, jo mindre sannsynlig er det at du får svar, uavhengig av kvaliteten på formuleringen.

Sannsynligheten for å få svar synker også raskt over tid. Når et spørsmål går flere sider dypt inn i feeden, forsvinner det. En uke senere kan du bare be om at noen med riktig kunnskap snubler over spørsmålet ditt (eller klikker sjenerøst på det).

Du liker kanskje ikke de riktige svarene

Hver måned får jeg flere nedstemmer for såkalte upopulære svar. Dette er den typen svar som i hovedsak sier "grunnen er fordi den er designet på den måten," eller "det er ikke mulig fordi ...", eller "det er en feil som må fikses først." I alle de ovennevnte tilfellene får ikke forfatterne en løsning eller en løsning. Og jeg mistenker at når folk ikke liker hva et svar sier, nedstemmer de det. Jeg forstår dem til og med, men dette betyr ikke at svarene er feil.

Det motsatte er selvfølgelig også sant: gode svar forteller deg ikke nødvendigvis hva du vil høre. Noen av de beste svarene svarer først på det opprinnelige spørsmålet, men beskriver deretter andre tilnærminger til å løse problemet. Noen ganger svarer jeg på en brukers spørsmål og skriver så en lang tekst om hvorfor det ikke anbefales å gjøre det.

Hver gang holdningsuttrykk forenkles til opp og ned stemmer eller en like-knapp, går viktige distinksjoner tapt. Dette problemet oppstår ofte på Internett. Hvor mange sosiale nettverk lar deg skille mellom "jeg støtter dette" og "jeg synes det er godt sagt, selv om jeg ikke liker det eller er enig i det"?

Totalt sett, til tross for de månedlige nedstemmene, tror jeg at Stack Overflow-fellesskapet stemmer rettferdig. Vi vil holde oss til denne veien.

Jeg spør nesten aldri på Stack Overflow

Jo lenger jeg brukte denne siden, jo sjeldnere stilte jeg spørsmål på den. Dette er delvis på grunn av min profesjonelle vekst. Mange av problemene jeg møter på jobben er for komplekse til å uttrykke i enkle spørsmål, eller for spesifikke til at noen kan hjelpe meg i det hele tatt. Jeg har innsett begrensningene til siden, så jeg unngår å stille spørsmål som jeg nesten helt sikkert ikke vil få et godt svar på.

Men jeg stilte sjelden spørsmål her, selv når jeg lærte et nytt språk eller nytt rammeverk. Ikke fordi han er et sånt geni, snarere tvert imot. Det er bare det, etter år med å ha vært på Stack Overflow, når jeg har et spørsmål, kommer jeg til den dype overbevisningen om at jeg neppe er den første til å stille det. Jeg begynner å søke, og finner nesten alltid at noen allerede spurte det samme for et par år siden.

Å observere andres spørsmål er en fin måte å lære nye ting om produktet ditt.

Nå jobber jeg videre VS-kode, så jeg gjorde det til en vane å se på spørsmål merket vscode. Dette er en fin måte å se hvordan koden min brukes i den virkelige verden. Hvilke problemer møter brukerne? Hvordan kan dokumentasjonen eller API forbedres? Hvorfor forårsaker noe som jeg trodde var helt klart så mye misforståelse?

Spørsmål er et viktig signal som viser hvordan produktet ditt blir brukt. Men poenget er ikke å svare og gå videre, men å prøve å først forstå hvorfor personen har et spørsmål. Kanskje det er et problem i produktet som er ukjent for deg, eller noen antakelser du uvitende har gjort? Spørsmålene hjalp meg også med å oppdage mange feil og inspirerte meg til å fortsette å jobbe.

Hvis du vedlikeholder et produkt for utviklere, ikke tenk på Stack Overflow som en dumpingplass (eller enda verre, en spørsmålskirkegård). Kom innom regelmessig for å se hvilke spørsmål og svar som har dukket opp. Dette betyr ikke at du trenger å svare på alle spørsmål selv, men signaler fra Stack Overflow er for viktige til å ignorere.

Grensene mellom et spørsmål, en feilrapport og en funksjonsforespørsel er uskarpe.

Ganske mange spørsmål om VS-kode på Stack Overflow var faktisk feilrapporter. Og mange andre er faktisk forespørsler om nye funksjoner.

For eksempel et spørsmål med tittelen "Hvorfor krasjer VS-kode når jeg gjør...?" - Dette er en feilrapport. VS-kode bør ikke krasje i en rekke situasjoner. Å svare på spørsmål som er feilrapporter er kontraproduktivt fordi forfatterne kan være fornøyd med en løsning og aldri sende inn en ekte feilrapport. I situasjoner som dette ber jeg vanligvis brukere om å sende inn en feilrapport på Github.

I andre tilfeller kan forskjellene være mindre åpenbare. For eksempel spørsmålet "Hvorfor fungerer ikke JavaScript IntelliSense i VS-kode?" Avhengig av hvordan JavaScript IntelliSense ikke fungerer, kan problemet falle inn i en av tre kategorier:

  • Hvis det er et problem med brukerkonfigurasjon, er det egentlig et spørsmål for Stack Overflow.
  • Hvis IntelliSense skulle fungere i det beskrevne tilfellet, men det ikke gjør det, er dette en feilrapport.
  • Hvis IntelliSense i det beskrevne tilfellet ikke skulle fungere, er dette en forespørsel om en ny funksjon.

På slutten av dagen bryr de fleste brukere seg ikke om disse nyansene – de vil bare at JavaScript IntelliSense skal fungere.

Og selv om disse forskjellene er viktige for meg, som ansvarlig for prosjektet, burde de generelt sett ikke ha betydning for meg. Fordi spørsmål, feilrapporter og funksjonsforespørsler er alle måter å uttrykke én idé på: brukeren forventer noe av koden min og får det ikke. Hvis produktet var perfekt, ville brukerne aldri stille spørsmål om det, fordi alt ville være klart for dem og det ville gjøre akkurat det de vil (eller i det minste tydelig fortelle dem hvorfor det ikke kan).

Utviklere er også mennesker

Folk er emosjonelle. Folk er irrasjonelle. Folk er drittsekker. Ikke alltid, selvfølgelig, men noen ganger! Og tro det eller ei, utviklere er også mennesker.

Det er en myte som vi utviklere liker å fortelle oss selv: «Vi jobber med datamaskiner, så vi må være rasjonelle. Vi forstår kryptiske symboler, så vi må være smarte. Programvare har tatt over verden, så vi må være kule! Kul! Framover!!!"

Dette er feil. Og hvis det var slik, så hjelpe Gud resten av folket. Selv på Stack Overflow, det verktøyet for profesjonelle utformet som en objektiv kunnskapsbase, selv i mitt eget, svært spesifikke hjørne av VS Code, fortsetter jeg å møte alle slags overgrep: logiske feilslutninger, fornærmelser, flokkmentalitet, etc.

Ikke tull med deg selv: du er sannsynligvis ikke så perfekt som du tror. Men dette betyr ikke at vi ikke skal prøve å bli kvitt våre mangler.

Dude, det er jeg som har laget dette

Jeg er også et menneske, og fra tid til annen irriterer meg det som skjer på Stack Overflow. For eksempel når en bruker selvsikkert skriver tull eller rett og slett gir et feilsvar på et spørsmål knyttet til VS Code, et produkt som jeg har laget og som jeg kjenner veldig godt. Merkelig nok ser det ut til at jo mer feilaktig svaret er, jo mer sannsynlig er det at noen vil kalle det et udiskutabelt faktum.

Når dette skjer, oppfører jeg meg som på bildet og skriver riktig svar.

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

Og flere ganger resulterte dette i lange tråder: ve meg for å våge å stille spørsmål ved deres kunnskap om det jeg skapte! Slutt å prøve å ha rett hele tiden, dere smarte gutter! For jeg har rett!!!

Det er lett å bli kynisk i denne håpløsheten

Når du står overfor en endeløs strøm av spørsmål av lav kvalitet, er det lett å bli kynisk. Har han aldri hørt om Google? Vet han i det hele tatt hvordan han skal konstruere sammenhengende setninger? Hva er du, en hund?

Noen ganger ser jeg på dusinvis av nye spørsmål i løpet av en dag. Å konstant observere alle disse lavkvalitetsspørsmålene risikerer å gli inn i forakt eller kynisme. Denne kynismen kan smitte over på siden, som alle som har møtt en overivrig moderator eller brukt et par timer på å undersøke og skrive et spørsmål, vil vitne om, bare for å få negative svar tilbake og forsvinne inn i glemselen uten noen forklaring.

Selvfølgelig er det brukere som ikke legger ned en unse av innsats og stiller dårlige spørsmål. Men jeg tror at hoveddelen av spørsmål av lav kvalitet kommer fra mennesker med gode intensjoner (om enn dumme). Jeg prøver alltid å huske hva det vil si å være nybegynner. Når du bare begynner, forstår du ikke hvordan alt egentlig fungerer her. I noen tilfeller vet du ikke engang hvilke ord som skal uttrykke problemet ditt riktig. Tro meg, det er vanskelig å være i denne posisjonen. Og det er ubehagelig når du blir oversvømt av søl bare for å stille et spørsmål.

Selv om Stack Overflow har gjort mye for å hjelpe nybegynnere, er det fortsatt mye mer som må gjøres. Jeg prøvde å finne en balanse mellom å følge nettstedets standarder og å være mild mot uerfarne brukere. Dette kan innebære å forklare hvorfor jeg stemte for å stenge spørsmålet eller legge ut en kommentar som oppfordrer brukeren til å gi mer informasjon. Jeg har fortsatt plass til å vokse.

På den annen side nøler jeg ikke med å nedstemme brukere med et rykte på 50 000 som legger ut spørsmål som "Hva er det beste VS-kodeoppsettet for JavaScript-utvikling?", eller som laster opp såpe skjermbilder av kode i stedet for tekst.

Noen ganger vil jeg bare takke deg

Det er en svak takknemlighetskultur på Stack Overflow. Jeg husker en gang siden automatisk kuttet ut ordene "hei" og "takk" fra spørsmål. Kanskje er dette fortsatt gjort, jeg har ikke sjekket.

I dag vet alle som har jobbet med kundestøtte godt at for mye høflighet kan komme i veien og til og med virke tvunget. Men noen ganger gjør noen på denne siden noe veldig viktig for deg, og den eneste måten å takke dem på er å gi dem et pluss. Det suger.

Effektivitet krever ikke at vi blir sjelløse roboter. En sidekanal kan gi mer autentisk kommunikasjon mellom mennesker, hvis brukerne selv ønsker det, selvfølgelig.

Noen ganger vil jeg vite hva som skjedde etter å ha mottatt svaret

Stack Overflow opererer på et transaksjonsprinsipp: noen stiller spørsmål, andre svarer. Hva skjer etter å ha mottatt et svar? Hvem vet? Noen ganger lurer jeg på dette. Var svaret mitt nyttig? Hvilket beskjedent prosjekt hjalp han? Hva lærte spørsmålsstilleren?

Selvfølgelig er det umulig å tilfredsstille denne nysgjerrigheten. Å kreve at brukere skal redegjøre for hvordan de vil bruke informasjonen de mottar, ville være svært problematisk, selv om du kunne gjøre det. Men det er interessant å tenke på det.

Gamification er effektivt...

…når du gjør prosesser til spill.

Jeg blir fortsatt litt bekymret når jeg ser det lille +10- eller +25-ikonet i statuslinjen. Kanskje disse små innslagene av gamification er grunnen til at jeg har kommet tilbake til siden i 10 år. Men med årene har jeg også begynt å lure på hva slags spill Stack Overflow er og hva det betyr å vinne.

Jeg er sikker på at systemet ble opprettet med de beste intensjoner: å belønne folk for nyttige spørsmål og svar. Men så snart du legger til høye poeng, trer den i kraft Goodharts lov, og noen brukere begynner å justere handlingene sine, ikke for å oppnå maksimal verdi, men for å oppnå maksimale vurderinger. Og dette er viktig fordi...

Omdømme betyr ikke hva du tror det betyr.

Omdømme tilsvarer ikke teknisk kompetanse, kommunikasjonsevner eller forståelse av hvordan Stack Overflow fungerer eller bør fungere.

Jeg mener ikke å si at rykte er ubrukelig. Det betyr bare ikke hva Stack Overflow-administratorer mener eller hva ordet "omdømme" skal bety. Jeg innså at omdømme er et mål på innflytelse. Vurder to hypotetiske svar publisert på nettstedet:

  • En om en vanlig git-operasjon. Jeg skrev et trelinjers svar på to minutter ved hjelp av Google.
  • Den andre handler om innviklet grafteori. Kanskje bare hundre mennesker i hele verden kan svare på det. Jeg skrev noen avsnitt og eksempelkode som forklarte problemet og hvordan det løses.

På fem år ble det første svaret sett 5 millioner ganger og fikk 2000 oppstemmer. Det andre svaret ble sett på 300 ganger og gitt to sølle oppstemmer.

Til en viss grad er dette veldig uærlig. Hvorfor belønne noe som var på rett sted til rett tid? (ikke alt bestemmes av flaks; å forstå spillereglene spiller også en stor rolle). På den annen side hjalp det første spørsmålet faktisk mange flere enn det andre. Kanskje det er verdt å erkjenne at anerkjennelse på en måte fører til akkumulering av "rykte"?

Så jeg anser "omdømme" på Stack Overflow som et slags mål på innflytelse. Ekte omdømme kan ikke måles med bare poeng, det kommer fra fellesskapet. Hvem sine råd lytter jeg til, hvem hjelper andre, hvem stoler jeg på? Kanskje disse vil alle være forskjellige mennesker, avhengig av om jeg skriver i PHP eller for iOS.

Med det sagt, jeg vet ikke hva Stack Overflow skal gjøre i denne forbindelse. Ville brukerne vært like motiverte hvis de i stedet for "omdømme" fikk "utspekulerte poeng"? Vil brukerne forbli like engasjerte hvis det ikke er noe poengsystem i det hele tatt? Jeg tror det er usannsynlig. Og myten om at "omdømme" på Stack Overflow tilsvarer reelt omdømme fordeler ikke bare selve nettstedet, men også dets mest aktive brukere. Vel, egentlig, hvem liker ikke å øke omdømmet sitt?

Nei, som oftest skjer i livet, for å få en reell ide om hva som skjer, må du ikke bare analysere tall. Hvis et innlegg har 10 tusen poeng på Stack Overflow, så se på hvordan denne personen kommuniserer, hvilke spørsmål og svar han publiserer. Og i alle unntatt eksepsjonelle tilfeller, husk at Stack Overflow-score alene er usannsynlig å indikere noe annet enn en persons evne til å bruke nettstedet. Og etter min erfaring snakker de ofte ikke engang om dette.

Jeg ville ikke vært produktiv uten Stack Overflow

Hver gang jeg trenger å gjøre noe komplisert i git, går jeg til Stack Overflow. Hver gang jeg trenger noe enkelt i bash, går jeg til Stack Overflow. Hver gang jeg får en merkelig kompileringsfeil, går jeg til Stack Overflow.

Jeg er ikke produktiv uten IntelliSense, en søkemotor, og Stack Overflow. Etter noen bøker å dømme gjør dette meg til en veldig dårlig programmerer. Jeg ville nok feilet mange tester og ikke løst mange problemer på brettet. Så være det. Seriøst, hver gang jeg bruker .sort i JavaScript, må jeg slå opp informasjon om når jeg får -1, 0 eller 1, og jeg skriver JS hver dag, og utvikler den mest populære editoren for språket.

Nei, Stack Overflow er et utrolig verktøy. Bare en tosk ville ikke bruke alle verktøyene som er tilgjengelige for ham. Så hvorfor ikke være en indre tosk som meg? Spar hjerneressursene dine for viktig kunnskap, som å huske alle plottene i Seinfeld-serien eller komme med sofistikerte ordspill (som mangler så mye i denne artikkelen, men det vil være mange andre av en helt annen karakter).

Stack Overflow er et mirakel

Stack Overflow lar alle, uavhengig av erfaring eller kunnskap, legge inn programmeringsspørsmål. Disse spørsmålene besvares av fullstendig fremmede, hvorav de fleste bruker tid av livet og karrieren på å hjelpe andre gratis.

Miraklet er selve eksistensen og resultatet av arbeidet til Stack Overflow. Jeg er sikker på at ikke alt blir så bra som skaperne hadde tenkt, men de prøver. Til tross for alle manglene, har siden hjulpet et stort antall mennesker i mange år, inkludert meg.

Stack Overflow vil ikke vare evig. En dag kommer det noe bedre. Forhåpentligvis er dette noe som vil lære av Stack Overflows feil og ta det beste fra det. Inntil da håper jeg at vi ikke tar denne siden for gitt. Dette er både et landemerke og et levende fellesskap, som stadig fylles på med nye mennesker. Hvis dette bekymrer deg, husk at alt dette er veldig skjørt, og selv små handlinger - som å hjelpe velmenende, men ennå uvitende nykommere - kan ha en positiv effekt. Hvis jeg kritiserer denne siden, er det bare fordi jeg bryr meg og jeg vet hvordan jeg kan gjøre den bedre.

PS

Jeg var fortsatt skolegutt da jeg kom til Stack Overflow. Jeg begynte akkurat å skrive (ES5!) JavaScript i Eclipse, og det virket som om 90 % av spørsmålene startet med "Bruke jQuery, bare...". Og selv om jeg ikke visste hva jeg gjorde, brukte fremmede tiden sin på å hjelpe meg. Jeg tror ikke jeg satte så stor pris på det den gangen, men jeg har ikke glemt det.

Folk vil alltid at Stack Overflow skal være noe annerledes: et spørsmål-og-svar-nettsted; et verktøy for å løse husholdningsproblemer; levestandard for programmering. Og for meg er dette nettstedet, til tross for sin vekst og mangler, i kjernen et åpent fellesskap der fremmede hjelper hverandre med å lære og forbedre seg. Og det er flott. Jeg er glad jeg har vært en del av Stack Overflow de siste 10 årene og håper å fortsette å gjøre det. Jeg ønsker å lære like mye nytt i det neste tiåret som jeg gjorde det forrige tiåret.

Kilde: www.habr.com

Legg til en kommentar