Kaj sem se naučil v 10 letih na Stack Overflow

Kaj sem se naučil v 10 letih na Stack Overflow
Bližam se svoji deseti obletnici na Stack Overflowu. Z leti se je moj pristop do uporabe spletnega mesta in dojemanje le-tega zelo spremenil, zato želim svojo izkušnjo deliti z vami. In o tem pišem z vidika povprečnega uporabnika, ki ni preveč vpleten v življenje skupnosti ali kulturo spletnega mesta. Te dni sem odgovarjal le na vprašanja v zvezi z VS Code, izdelkom, na katerem delam. Vendar sem aktivno sodeloval v razpravah o najrazličnejših temah. V 10 letih sem zastavil približno 50 vprašanj in dal 575 odgovorov, pregledal nešteto komentarjev drugih ljudi.

Jon Skeete opisal kulturo Stack Overflow veliko boljši in avtoritativniji, kot bom kadarkoli zmogel. Njegova objava je vplivala na nekatera poglavja v tem članku, a na splošno so to moja odkrita razmišljanja o mojih izkušnjah s Stack Overflowom, o tem, kaj je dobro in kaj slabo na spletnem mestu in kako ga je mogoče uporabljati danes. Ta razprava bo dokaj površna, ne da bi se poglobila v delovanje mesta ali njegovo zgodovino.

Tukaj je torej tisto, kar sem se naučil v 10 letih uporabe Stack Overflowa.

Morate znati postavljati vprašanja

Na prvi pogled nič ne more biti enostavnejše: v besedilno polje vnesite nekaj besed, kliknite »Pošlji« in internet bo čarobno pomagal rešiti vse vaše težave! Toda potreboval sem skoraj 10 let, da sem ugotovil, katere besede naj vnesem v to prekleto polje, da bi dejansko dobil rezultate. Pravzaprav se o tem še vedno vsak dan učim.

Postavljanje dobrih vprašanj je resnično podcenjena veščina (kot tudi pisanje dobrega poročila o težavi). Prvič, kako sploh ugotovimo, ali je vprašanje "dobro"? Ponudbe Stack Overflow namig, ki navaja naslednje lastnosti dobrega vprašanja:

  • Ali se ujema s temo spletnega mesta?
  • Predstavlja objektiven odgovor.
  • Še ni bil vprašan.
  • Je bilo raziskano.
  • Jasno opiše težavo, običajno z minimalnim primerom, ki ga je enostavno ponoviti.

V redu, ampak kako "jasna izjava o problemu" izgleda v praksi? Katere informacije so pomembne in katere ne? Včasih se zdi, da morate najprej poznati odgovor, če želite postaviti dobro vprašanje.

Na žalost majhno besedilno polje tukaj ne pomaga. Ali je torej kaj čudnega, da toliko uporabnikov objavlja vprašanja nizke kakovosti? Včasih je edini odgovor, ki ga dobijo, povezava do nejasne dokumentacije. In še bodo imeli srečo. Številna vprašanja nizke kakovosti so preprosto tiho zavrnjena in izginejo v neskončni niti vprašanj.

Postavljanje dobrih vprašanj je veščina. Na srečo ga je mogoče razviti. Večinoma sem se naučil tako, da sem prebral kopico vprašanj in odgovorov ter ugotavljal, kaj je delovalo in kaj ne. Katere informacije so koristne in katere moteče? Čeprav vas bo še vedno strah uporabiti pridobljeno znanje v praksi in postavljati vprašanja. Samo dajte vse od sebe in se učite iz rezultatov. Moram priznati, da sem tudi sama nekoliko v zadregi zaradi nekaterih svojih zgodnjih ignorantskih vprašanj, čeprav morda to dokazuje, da sem svoje veščine spraševanja precej izboljšala, odkar sem se znašla na tej strani.

Slaba in ne tako dobra vprašanja niso ista stvar

Ne bom pocukral tabletke: nekatera vprašanja so preprosto slaba.

Vprašanje, sestavljeno iz posnetka zaslona in fraze "ZAKAJ TO NE DELUJE!?!" - slab. Zakaj? Očitno je, da se avtorica skorajda ni potrudila. To ni toliko vprašanje kot zahteva: "Naredi to delo zame!" Zakaj bi to naredil? Moj čas je preveč dragocen, da bi ga zapravljal za pomoč nekomu, ki se ne želi naučiti in ne bo cenil moje pomoči. Naučite se, kaj je Stack Overflow.

Zdaj razmislite o vprašanju z naslovom »Kako odstraniti modre obrobe na moji strani«, ki je sestavljeno iz več odstavkov besedila, ki govori o lastnosti orisa CSS, vendar brez izrecne omembe besed »CSS« ali »oris«. Čeprav je takšno vprašanje morda v nasprotju s številnimi smernicami Stack Overflow, se ne strinjam, to ni slabo vprašanje. Avtor je vsaj poskušal dati nekaj informacij, čeprav ni vedel, kaj dati. Šteje poskus, pa tudi pripravljenost na dojemanje in učenje.

Vendar pa bodo številni sodelavci Stack Overflow obe vprašanji verjetno obravnavali na enak način: glasovali proti in zaprli. To je frustrirajoče in odvrne številne neizkušene uporabnike, preden se naučijo postavljati boljša vprašanja in celo razumejo, kako spletno mesto deluje.

Res slaba vprašanja niso vredna vašega časa. Vendar se je treba zavedati, da tisti, ki postavljajo ne preveč dobra vprašanja, to počnejo nehote. Želijo postavljati dobra vprašanja, le ne vedo, kako. Če novince kaznujete na slepo in brez pojasnila, kako se bodo naučili?

Dobro vprašanje ne zagotavlja odgovora

Stack Overflow običajno zagotavlja hitrejše odgovore na preprosta vprašanja, na katera lahko odgovori veliko ljudi. Ali imate vprašanje o binarnem iskanju v JavaScriptu ali o HTML? Čudovito! Prejmite pet odgovorov v manj kot eni uri. Toda bolj ko je vprašanje zapleteno ali specifično, manj verjetno je, da boste dobili odgovor, ne glede na kakovost besedila.

Tudi verjetnost, da boste dobili odgovor, sčasoma hitro upade. Ko gre vprašanje več strani globoko v vir, se izgubi. Teden dni kasneje lahko samo molite, da bo nekdo s pravim znanjem naletel na vaše vprašanje (ali velikodušno kliknil nanj).

Morda vam pravilni odgovori ne bodo všeč

Vsak mesec prejmem več glasov proti tako imenovanim nepriljubljenim odgovorom. To so vrste odgovorov, ki v bistvu pravijo: "Razlog je, ker je tako zasnovano," ali "ni mogoče, ker ...", ali "gre za napako, ki jo je treba najprej popraviti." V vseh zgoraj navedenih primerih avtorji ne dobijo rešitve ali celo rešitve. In sumim, da ko ljudem ni všeč, kar pravi odgovor, ga zavrnejo. Celo razumem jih, a to ne pomeni, da so odgovori napačni.

Seveda velja tudi obratno: dobri odgovori vam ne povedo nujno tistega, kar želite slišati. Nekateri najboljši odgovori najprej odgovorijo na prvotno vprašanje, nato pa opišejo druge pristope k reševanju problema. Včasih odgovorim na vprašanje uporabnika in nato napišem dolgo besedilo o tem, zakaj tega ni priporočljivo storiti.

Kadarkoli se izražanje stališč poenostavi na glasovanje gor in dol ali gumb všeč, se izgubijo pomembne razlike. Ta težava se pogosto pojavlja na internetu. Koliko družbenih omrežij vam omogoča razlikovanje med "to podpiram" in "mislim, da je dobro povedano, čeprav mi ni všeč ali se s tem strinjam"?

Na splošno kljub mesečnim glasovom proti menim, da skupnost Stack Overflow glasuje pošteno. Te poti se bomo držali.

Skoraj nikoli ne sprašujem o Stack Overflowu

Dlje kot sem uporabljal to spletno mesto, manj pogosto sem na njem postavljal vprašanja. To je deloma posledica moje profesionalne rasti. Številne težave, s katerimi se srečujem pri delu, so preveč zapletene, da bi jih lahko izrazili v preprostih vprašanjih, ali preveč specifičnih, da bi mi lahko kdo sploh pomagal. Zavedam se omejitev spletnega mesta, zato se izogibam postavljanju vprašanj, na katera skoraj zagotovo ne bom dobil dobrega odgovora.

Toda tu sem redko postavljal vprašanja, tudi ko sem se učil novega jezika ali ogrodja. Ne zato, ker bi bil takšen genij, ravno nasprotno. Gre le za to, da sem po letih delovanja na Stack Overflowu, ko imam vprašanje, globoko prepričan, da ga verjetno ne bom prvi postavil. Začnem iskati in skoraj vedno najdem, da je že nekdo vprašal isto stvar pred nekaj leti.

Opazovanje vprašanj drugih ljudi je odličen način, da se naučite novih stvari o svojem izdelku.

Zdaj delam naprej VS koda, zato mi je postalo navada, da pogledam vprašanja z oznako vscode. To je odličen način, da vidim, kako se moja koda uporablja v resničnem svetu. S kakšnimi težavami se srečujejo uporabniki? Kako je mogoče izboljšati dokumentacijo ali API? Zakaj nekaj, kar sem mislil, da je popolnoma jasno, povzroča toliko nesporazumov?

Vprašanja so pomemben signal, ki kaže, kako se vaš izdelek uporablja. Toda bistvo ni v tem, da odgovorite in nadaljujete, ampak da poskusite najprej razumeti, zakaj ima oseba vprašanje. Morda je v izdelku težava, ki vam ni znana, ali pa so domneve, ki ste jih nevede naredili? Vprašanja so mi tudi pomagala odkriti številne napake in me navdihnila za nadaljnje delo.

Če vzdržujete izdelek za razvijalce, ne mislite na Stack Overflow kot na odlagališče (ali še huje, na pokopališče vprašanj). Redno preverjajte, katera vprašanja in odgovori so se pojavili. To ne pomeni, da morate sami odgovoriti na vsako vprašanje, vendar so signali Stack Overflowa preveč pomembni, da bi jih prezrli.

Meje med vprašanjem, poročilom o napaki in zahtevo po funkciji so zabrisane.

Kar nekaj vprašanj o kodi VS na Stack Overflowu je bilo pravzaprav poročil o napakah. In mnoge druge so pravzaprav zahteve po novih funkcijah.

Na primer vprašanje z naslovom "Zakaj se koda VS zruši, ko naredim ...?" - to je poročilo o napaki. Koda VS se ne bi smela zrušiti v različnih situacijah. Odgovarjanje na vprašanja, ki so poročila o napakah, je kontraproduktivno, ker so lahko avtorji zadovoljni z rešitvijo in nikoli ne vložijo pravega poročila o napakah. V takšnih situacijah običajno prosim uporabnike, da prijavijo napako na Github.

V drugih primerih so lahko razlike manj očitne. Na primer vprašanje "Zakaj JavaScript IntelliSense ne deluje v kodi VS?" Glede na to, kako JavaScript IntelliSense ne deluje, lahko težava spada v eno od treh kategorij:

  • Če gre za težavo s konfiguracijo uporabnika, je to res vprašanje za Stack Overflow.
  • Če bi v opisanem primeru IntelliSense moral delovati, vendar ne deluje, je to poročilo o napaki.
  • Če v opisanem primeru IntelliSense ne bi smel delovati, je to zahteva za novo funkcijo.

Na koncu dneva večini uporabnikov ni mar za te nianse – želijo samo, da JavaScript IntelliSense deluje.

In čeprav so te razlike zame, kot odgovornega za projekt, pomembne, mi na splošno ne bi smele biti pomembne. Ker so vprašanja, poročila o napakah in zahteve po funkcijah načini izražanja ene ideje: uporabnik nekaj pričakuje od moje kode in tega ne dobi. Če bi bil produkt popoln, uporabniki o njem nikoli ne bi spraševali, ker bi jim bilo vse jasno in bi delal točno to, kar hočejo (ali jim vsaj jasno povedal, zakaj ne more).

Tudi razvijalci so ljudje

Ljudje smo čustveni. Ljudje so neracionalni. Ljudje so kreteni. Seveda ne vedno, včasih pa! In verjeli ali ne, tudi razvijalci so ljudje.

Obstaja fantazija, ki si jo razvijalci radi pripovedujemo: »Delamo z računalniki, zato moramo biti racionalni. Razumemo kriptične simbole, zato moramo biti pametni. Programska oprema je zavzela svet, zato moramo biti kul! kul! Naprej!!!"

To je narobe. In če bi bilo tako, potem Bog pomagaj ostalim ljudem. Celo pri Stack Overflowu, orodju za profesionalce, zasnovanem kot objektivna baza znanja, tudi v svojem lastnem, zelo specifičnem kotu VS Code, še naprej naletim na najrazličnejše ogorčenje: logične zmote, žalitve, čredno miselnost itd.

Ne zavajajte se: verjetno niste tako popolni, kot mislite. Toda to ne pomeni, da se ne bi smeli poskušati znebiti svojih pomanjkljivosti.

Stari, jaz sem tisti, ki je to ustvaril

Tudi jaz sem človek in od časa do časa me razjezi dogajanje na Stack Overflowu. Na primer, ko uporabnik samozavestno napiše neumnost ali preprosto napačno odgovori na vprašanje v zvezi z VS Code, produktom, ki sem ga ustvaril jaz in ga zelo dobro poznam. Nenavadno se zdi, da bolj kot je odgovor napačen, večja je verjetnost, da ga bo nekdo označil za neizpodbitno dejstvo.

Ko se to zgodi, ravnam kot na sliki in napišem pravilen odgovor.

Kaj sem se naučil v 10 letih na Stack Overflow

In večkrat je to povzročilo dolge niti: gorje mi, ker sem si drznil podvomiti v njihovo znanje o tem, kar sem ustvaril! Nehajte se vedno truditi imeti prav, prekleti pametnjakoviči! Ker imam prav!!!

V tem brezupu je lahko postati ciničen

Ko se soočite z neskončnim tokom nizkokakovostnih vprašanj, zlahka postanete cinični. Ali še nikoli ni slišal za Google? Ali sploh zna sestaviti skladne stavke? Kaj si ti, pes?

Včasih pogledam na desetine novih vprašanj na dan. Nenehno opazovanje vseh teh nekakovostnih vprašanj tvega zdrs v prezir ali cinizem. Ta cinizem se lahko prelije na spletno stran, kar bo potrdil vsak, ki je naletel na preveč vnetega moderatorja ali porabil nekaj ur za raziskovanje in sestavljanje vprašanja, le da je v zameno prejel negativne odgovore in brez pojasnila izginil v pozabo.

Seveda obstajajo uporabniki, ki se ne potrudijo in objavljajo slaba vprašanja. Vendar verjamem, da večina nekakovostnih vprašanj prihaja od ljudi z dobrimi nameni (čeprav neumnimi). Vedno se poskušam spomniti, kaj pomeni biti novinec. Ko si šele na začetku, ne razumeš, kako stvari tukaj v resnici delujejo. V nekaterih primerih sploh ne veste, s katerimi besedami bi pravilno izrazili svojo težavo. Verjemite, težko je biti v tem položaju. In neprijetno je, ko te polivajo s potožnicami samo zato, ker postaviš vprašanje.

Čeprav je Stack Overflow naredil veliko za pomoč novincem, je treba storiti še veliko več. Poskušal sem najti ravnovesje med spoštovanjem standardov spletnega mesta in popustljivostjo do neizkušenih uporabnikov. To lahko vključuje razlago, zakaj sem glasoval za zaprtje vprašanja, ali objavo komentarja, ki uporabnika spodbuja, da zagotovi več informacij. Še vedno imam prostor za rast.

Po drugi strani pa brez oklevanja glasujem proti uporabnikom z ugledom 50, ki objavljajo vprašanja, kot je "Katera je najboljša postavitev kode VS za razvoj JavaScript?", ali ki namesto besedila nalagajo umazane posnetke zaslona kode.

Včasih se ti želim samo zahvaliti

Na Stack Overflowu je šibka kultura hvaležnosti. Spomnim se, da je nekoč stran samodejno izrezala besedi "zdravo" in "hvala" iz vprašanj. Morda se to še vedno izvaja, nisem preveril.

Danes vsakdo, ki je delal v podpori strankam, dobro ve, da je preveč vljudnosti lahko v napoto in se zdi celo prisiljeno. Toda včasih nekdo na tem spletnem mestu stori nekaj zelo pomembnega za vas in edini način, da se mu zahvalite, je, da mu date plus. Zanič je.

Učinkovitost ne zahteva, da postanemo brezdušni roboti. Stranski kanal lahko poskrbi za bolj pristno komunikacijo med ljudmi, če uporabniki sami to seveda želijo.

Včasih želim vedeti, kaj se je zgodilo po prejemu odgovora

Stack Overflow deluje po transakcijskem principu: nekateri postavljajo vprašanja, drugi odgovarjajo. Kaj se zgodi po prejemu odgovora? Kdo ve? Včasih se sprašujem o tem. Je bil moj odgovor v pomoč? Kateremu skromnemu projektu je pomagal? Kaj se je spraševalec naučil?

Seveda je nemogoče potešiti to radovednost. Zahtevati od uporabnikov, da odgovarjajo, kako bodo uporabili prejete informacije, bi bilo zelo problematično, tudi če bi to lahko storili. Je pa zanimivo razmišljati o tem.

Igrifikacija je učinkovita ...

…pri spreminjanju procesov v igre.

Še vedno me malo skrbi, ko v vrstici stanja vidim majhno ikono +10 ali +25. Morda so te malenkosti igrifikacije razlog, da se že 10 let vračam na spletno mesto. Toda z leti sem se začel tudi spraševati, kakšna igra je Stack Overflow in kaj pomeni zmaga pri njej.

Prepričan sem, da je bil sistem narejen z najboljšimi nameni: nagraditi ljudi za koristna vprašanja in odgovore. Toda takoj, ko dodate visoke ocene, začne veljati Goodhartov zakonin nekateri uporabniki začnejo prilagajati svoja dejanja, ne da bi dosegli največjo vrednost, ampak da bi pridobili največje ocene. In to je pomembno, ker...

Ugled ne pomeni tega, kar mislite, da pomeni.

Ugled ni enakovreden tehnični usposobljenosti, komunikacijskim veščinam ali razumevanju, kako Stack Overflow deluje ali bi moral delovati.

Ne mislim reči, da je ugled neuporaben. To preprosto ne pomeni, kaj mislijo skrbniki Stack Overflow ali kaj naj bi pomenila beseda "ugled". Spoznal sem, da je ugled merilo vpliva. Razmislite o dveh hipotetičnih odgovorih, objavljenih na spletnem mestu:

  • Ena o običajni operaciji git. Z Googlom sem v dveh minutah napisal trivrstični odgovor.
  • Drugi je o teoriji zapletenih grafov. Morda nanj lahko odgovori le sto ljudi na celem svetu. Napisal sem nekaj odstavkov in vzorčno kodo, ki pojasnjuje težavo in kako jo rešiti.

V petih letih si je prvi odgovor ogledalo 5 milijonov krat in prejel 2000 glasov za. Drugi odgovor so pogledali 300-krat in prejeli dva slaba glasovanja za.

Do neke mere je to zelo nepošteno. Zakaj bi nagrajevali nekaj, kar je bilo ob pravem času na pravem mestu? (ni vse odvisno od sreče; veliko vlogo igra tudi razumevanje pravil igre). Po drugi strani pa je prvo vprašanje dejansko pomagalo veliko več ljudem kot drugo. Morda je vredno priznati, da v nekem smislu priznanje vodi v kopičenje »ugleda«?

Zato menim, da je "ugled" na Stack Overflowu neke vrste merilo vpliva. Pravega ugleda ni mogoče meriti zgolj s točkami, prihaja iz skupnosti. Čigave nasvete poslušam, kdo pomaga drugim, komu zaupam? Morda bodo to vsi različni ljudje, odvisno od tega, ali pišem v PHP ali za iOS.

Glede na to ne vem, kaj bi moral storiti Stack Overflow v zvezi s tem. Ali bi bili uporabniki tako motivirani, če bi namesto "ugleda" zaslužili "točke zvitosti"? Ali bodo uporabniki ostali tako angažirani, če točkovanja sploh ne bo? Mislim, da je malo verjetno. In mit, da je "ugled" na Stack Overflow enak resničnemu ugledu, ne koristi samo spletnemu mestu samemu, temveč tudi njegovim najbolj aktivnim uporabnikom. No, res, kdo ne mara povečati svojega ugleda?

Ne, kot se najpogosteje zgodi v življenju, da bi dobili pravo predstavo o tem, kaj se dogaja, morate analizirati ne le številke. Če ima objava 10 tisoč točk na Stack Overflowu, potem poglejte, kako ta oseba komunicira, kakšna vprašanja in odgovore objavlja. In v vseh primerih, razen v izjemnih primerih, ne pozabite, da rezultati Stack Overflow sami po sebi verjetno ne kažejo nič drugega kot sposobnost osebe za uporabo spletnega mesta. In po mojih izkušnjah se o tem pogosto niti ne pogovarjajo.

Brez Stack Overflowa ne bi bil produktiven

Vsakič, ko moram narediti nekaj zapletenega v git, grem na Stack Overflow. Vsakič, ko potrebujem nekaj preprostega v bashu, grem na Stack Overflow. Vsakič, ko dobim čudno napako pri prevajanju, grem na Stack Overflow.

Nisem produktiven brez IntelliSense, iskalnika in Stack Overflowa. Sodeč po nekaterih knjigah sem zaradi tega zelo slab programer. Verjetno bi padel na številnih testih in ne bi rešil veliko problemov na tabli. Naj bo. Resno, vsakič, ko v JavaScriptu uporabim .sort, moram poiskati informacije o tem, kdaj bom dobil -1, 0 ali 1, in vsak dan pišem JS ter razvijam najbolj priljubljen urejevalnik za jezik.

Ne, Stack Overflow je neverjetno orodje. Samo bedak ne bi uporabil vseh orodij, ki so mu na voljo. Zakaj torej ne bi bil notranji norec, kot sem jaz? Prihranite svoje možganske vire za pomembno znanje, kot je zapomnitev vseh zapletov serije Seinfeld ali izmišljevanje prefinjenih besednih iger (ki jih v tem članku tako manjka, vendar bo veliko drugih popolnoma drugačne narave).

Stack Overflow je čudež

Stack Overflow omogoča vsakomur, ne glede na izkušnje ali znanje, da objavi vprašanja v zvezi s programiranjem. Na ta vprašanja odgovarjajo popolni tujci, ki večinoma preživijo čas svojega življenja in kariere tako, da brezplačno pomagajo drugim.

Čudež je samo dejstvo obstoja in rezultat dela Stack Overflow. Prepričan sem, da ne gre vse tako dobro, kot so zamislili ustvarjalci, vendar se trudijo. Kljub vsem pomanjkljivostim pa stran že vrsto let pomaga ogromno ljudem, tudi meni.

Stack Overflow ne bo trajal večno. Nekega dne bo prišlo nekaj boljšega. Upajmo, da je to nekaj, kar se bo naučilo iz napak Stack Overflowa in iz njega potegnilo najboljše. Do takrat pa upam, da te strani ne bomo jemali za samoumevno. To je hkrati mejnik in živa skupnost, ki se nenehno dopolnjuje z novimi ljudmi. Če vas to skrbi, ne pozabite, da je vse to zelo krhko in že majhna dejanja - kot je pomoč dobronamernim, a še nevednim prišlekom - imajo lahko pozitiven učinek. Če kritiziram to stran, je to samo zato, ker mi je mar in vem, kako jo izboljšati.

PS

Ko sem prišel v Stack Overflow, sem bil še šolar. Ravno sem začel pisati (ES5!) JavaScript v Eclipse in zdelo se je, kot da se 90 % vprašanj začne z »Uporaba jQuery, samo ...«. In čeprav nisem vedel, kaj počnem, so mi neznanci krajšali čas in mi pomagali. Mislim, da tega takrat nisem zares cenil, a tega nisem pozabil.

Ljudje bodo vedno želeli, da je Stack Overflow nekaj drugačnega: spletno mesto za vprašanja in odgovore; orodje za reševanje gospodinjskih težav; življenjski standard programiranja. In zame je to spletno mesto kljub svoji rasti in pomanjkljivostim v svojem bistvu odprta skupnost, kjer neznanci drug drugemu pomagajo pri učenju in izboljšanju. In to je super. Vesel sem, da sem bil del Stack Overflow zadnjih 10 let in upam, da bom tako še naprej. V naslednjem desetletju se želim naučiti toliko novih stvari, kot sem se jih v prejšnjem desetletju.

Vir: www.habr.com

Dodaj komentar