Ce am învățat în 10 ani pe Stack Overflow

Ce am învățat în 10 ani pe Stack Overflow
Mă apropii de a zecea aniversare pe Stack Overflow. De-a lungul anilor, abordarea mea privind utilizarea site-ului și percepția asupra acestuia s-au schimbat foarte mult și vreau să vă împărtășesc experiența mea. Și scriu despre asta din punctul de vedere al utilizatorului obișnuit care nu este foarte implicat în viața comunității site-ului sau în cultura acestuia. Zilele acestea am răspuns doar la întrebări legate de VS Code, produsul la care lucrez. Cu toate acestea, obișnuiam să particip activ la discuții pe o gamă largă de subiecte. In 10 ani eu a pus aproximativ 50 de întrebări și a dat 575 de răspunsuri, a analizat o multitudine de comentarii ale altor persoane.

Jon Skeete a descris cultura Stack Overflow mult mai bine și mai autoritar decât voi putea face vreodată. Publicarea sa a influențat unele dintre capitolele din acest articol, dar, în general, acestea sunt propriile mele reflecții sincere despre experiențele mele despre Stack Overflow, ce este bun și rău despre site și cum poate fi folosit astăzi. Această discuție va fi destul de superficială, fără a se scufunda adânc în funcționarea sitului sau în istoria acestuia.

Deci, iată ce am învățat din 10 ani de utilizare a Stack Overflow.

Trebuie să fii capabil să pui întrebări

La prima vedere, nimic nu poate fi mai simplu: introduceți câteva cuvinte în câmpul de text, faceți clic pe „Trimite”, iar internetul vă va ajuta în mod magic la rezolvarea tuturor problemelor! Dar mi-a luat aproape 10 ani să-mi dau seama ce cuvinte să tastau în acel nenorocit de câmp pentru a obține efectiv rezultate. De fapt, încă învăț despre asta în fiecare zi.

A pune întrebări bune este o abilitate cu adevărat subestimată (la fel și scrierea unui raport de problemă bun, de altfel). În primul rând, cum determinăm dacă o întrebare este „bună”? Oferte Stack Overflow aluzie, care enumeră următoarele calități ale unei întrebări bune:

  • Se potrivește cu tema site-ului?
  • Implică un răspuns obiectiv.
  • Nu a fost întrebat încă.
  • A fost cercetat.
  • Descrie clar problema, de obicei cu un exemplu minim, ușor de reprodus.

Bine, dar cum arată o „enunțare clară a problemei” în practică? Ce informații sunt relevante și ce nu? Uneori pare că, pentru a pune o întrebare bună, mai întâi trebuie să știi răspunsul.

Din păcate, câmpul de text mic nu ajută aici. Deci, este de mirare că atât de mulți utilizatori postează întrebări de calitate scăzută? Uneori, singurul răspuns pe care îl primesc este un link către o documentație confuză. Și totuși vor avea noroc. Multe întrebări de calitate scăzută sunt pur și simplu respinse în tăcere și dispar în firul nesfârșit de întrebări.

A pune întrebări bune este o abilitate. Din fericire, poate fi dezvoltat. În mare parte, am învățat citind o grămadă de întrebări și răspunsuri, notând ce a funcționat și ce nu. Ce informații sunt utile și ce este enervant? Deși încă îți va fi frică să folosești cunoștințele dobândite în practică și să pui întrebări. Doar încercați tot posibilul și învățați din rezultate. Trebuie să recunosc că eu însumi sunt puțin jenat de unele dintre întrebările mele ignorante timpurii, deși poate asta dovedește că mi-am îmbunătățit foarte mult abilitățile de a întreba de când m-am găsit pe acest site.

Întrebările rele și nu atât de bune nu sunt același lucru

Nu voi acoperi pastila: unele întrebări sunt doar proaste.

O întrebare constând dintr-o captură de ecran și expresia „DE CE NU FUNȚIONEAZĂ ASTA!?!” - rău. De ce? Este evident că autorul nu a depus aproape niciun efort. Aceasta nu este atât o întrebare, cât o cerere: „fă treaba asta pentru mine!” De ce aș face asta? Timpul meu este prea valoros ca să-l pierd ajutând pe cineva care nu vrea să învețe de la început și nu va aprecia ajutorul meu. Aflați ce este Stack Overflow.

Acum luați în considerare o întrebare intitulată „Cum să elimin chenarele albastre de pe pagina mea”, care constă din mai multe paragrafe de text care vorbește despre proprietatea outline CSS, dar fără a menționa în mod explicit cuvintele „CSS” sau „contur”. În timp ce o întrebare ca aceasta poate fi împotriva multor linii directoare Stack Overflow, nu sunt de acord, nu este o întrebare rea. Autorul a încercat măcar să dea niște informații, chiar și fără să știe ce să dea. Încercarea contează, la fel și dorința de a percepe și de a învăța.

Cu toate acestea, mulți colaboratori Stack Overflow vor trata probabil ambele întrebări în același mod: votul negativ și închiderea. Acest lucru este frustrant și îi oprește pe mulți utilizatori neexperimentați înainte de a putea învăța să pună întrebări mai bune și chiar să înțeleagă cum funcționează site-ul.

Întrebările cu adevărat proaste nu merită timpul tău. Dar trebuie avut în vedere că cei care pun întrebări nu foarte bune o fac neintenționat. Vor să pună întrebări bune, pur și simplu nu știu cum. Dacă îi pedepsești pe nou-veniți orbește și fără explicații, cum vor învăța ei?

O întrebare bună nu garantează un răspuns

Stack Overflow oferă de obicei răspunsuri mai rapide la întrebări simple la care mulți oameni pot răspunde. Aveți o întrebare despre căutarea binară în JavaScript sau despre HTML? Minunat! Primiți cinci răspunsuri în mai puțin de o oră. Dar cu cât întrebarea este mai complexă sau mai specifică, cu atât este mai puțin probabil să obțineți un răspuns, indiferent de calitatea formulării.

Probabilitatea de a primi un răspuns scade, de asemenea, rapid în timp. Când o întrebare pătrunde mai multe pagini în flux, se pierde. O săptămână mai târziu, nu poți decât să te rogi ca cineva cu cunoștințele potrivite să se împiedice de întrebarea ta (sau să dai clic cu generozitate pe ea).

Este posibil să nu vă placă răspunsurile corecte

În fiecare lună primesc mai multe voturi negative pentru răspunsuri așa-zise nepopulare. Acestea sunt tipurile de răspunsuri care spun, în esență, „motivul este pentru că a fost conceput astfel” sau „nu este posibil pentru că...”, sau „este o eroare care trebuie remediată mai întâi”. În toate cazurile de mai sus, autorii nu primesc o soluție sau chiar o soluție. Și bănuiesc că atunci când oamenilor nu le place ceea ce spune un răspuns, îl votează negativ. Ba chiar le înțeleg, dar asta nu înseamnă că răspunsurile sunt greșite.

Desigur, este și inversul: răspunsurile bune nu îți spun neapărat ceea ce vrei să auzi. Unele dintre cele mai bune răspunsuri răspund mai întâi la întrebarea inițială, dar apoi descriu alte abordări pentru rezolvarea problemei. Uneori răspund la întrebarea unui utilizator și apoi scriu un text lung despre motivul pentru care nu este recomandat să fac acest lucru.

Ori de câte ori expresiile de atitudine sunt simplificate la voturi sus și în jos sau un buton de like, distincțiile importante se pierd. Această problemă apare frecvent pe Internet. Câte rețele de socializare îți permit să faci distincția între „sustin asta” și „cred că este bine spus, chiar dacă nu-mi place sau nu sunt de acord cu asta”?

În general, în ciuda voturilor negative lunare, cred că comunitatea Stack Overflow votează în mod corect. Vom rămâne pe această cale.

Aproape niciodată nu întreb pe Stack Overflow

Cu cât am folosit mai mult acest site, cu atât mai rar am pus întrebări despre el. Acest lucru se datorează parțial creșterii mele profesionale. Multe dintre problemele cu care mă confrunt la locul de muncă sunt prea complexe pentru a fi exprimate în întrebări simple sau prea specifice pentru ca cineva să mă ajute. Mi-am dat seama de limitările site-ului, așa că evit să pun întrebări la care aproape sigur nu voi primi un răspuns bun.

Dar rareori puneam întrebări aici, chiar și atunci când învățam o limbă sau un cadru nou. Nu pentru că ar fi un geniu, dimpotrivă. Doar că, după ani în care am fost pe Stack Overflow, când am o întrebare, ajung la convingerea profundă că este puțin probabil să fiu primul care o pune. Încep să caut și aproape întotdeauna constat că cineva a întrebat deja același lucru cu câțiva ani în urmă.

Observarea întrebărilor altora este o modalitate excelentă de a afla lucruri noi despre produsul dvs.

Acum lucrez la Codul VS, așa că mi-am făcut un obicei să mă uit la întrebările etichetate vscode. Aceasta este o modalitate excelentă de a vedea cum este folosit codul meu în lumea reală. Ce probleme întâmpină utilizatorii? Cum poate fi îmbunătățită documentația sau API-ul? De ce ceva despre care credeam că este absolut clar provoacă atâtea neînțelegeri?

Întrebările sunt un semnal important care arată cum este utilizat produsul dvs. Dar ideea nu este să răspunzi și să mergi mai departe, ci să încerci să înțelegi mai întâi de ce persoana are o întrebare. Poate că există o problemă în produs care vă este necunoscută sau unele presupuneri pe care le-ați făcut fără să știți? Întrebările m-au ajutat să descopăr multe erori și m-au inspirat să continui să lucrez.

Dacă întrețineți un produs pentru dezvoltatori, nu vă gândiți la Stack Overflow ca la un teren de gunoi (sau mai rău, un cimitir de întrebări). Reveniți regulat pentru a vedea ce întrebări și răspunsuri au apărut. Acest lucru nu înseamnă că trebuie să răspundeți singur la fiecare întrebare, dar semnalele de la Stack Overflow sunt prea importante pentru a le ignora.

Limitele dintre o întrebare, un raport de eroare și o solicitare de caracteristică sunt neclare.

Câteva întrebări despre VS Code pe Stack Overflow au fost de fapt rapoarte de erori. Și multe altele sunt de fapt solicitări pentru funcții noi.

De exemplu, o întrebare cu titlul „De ce se blochează VS Code când fac...?” - acesta este un raport de eroare. VS Code nu ar trebui să se blocheze într-o varietate de situații. Răspunsul la întrebările care sunt rapoarte de erori este contraproductiv, deoarece autorii pot fi mulțumiți de o soluție și nu depun niciodată un raport de eroare real. În astfel de situații, de obicei cer utilizatorilor să depună un raport de eroare pe Github.

În alte cazuri, diferențele pot fi mai puțin evidente. De exemplu, întrebarea „De ce JavaScript IntelliSense nu funcționează în VS Code?” În funcție de modul în care JavaScript IntelliSense nu funcționează, problema se poate încadra în una dintre cele trei categorii:

  • Dacă este o problemă de configurare a utilizatorului, atunci este într-adevăr o întrebare pentru Stack Overflow.
  • Dacă în cazul descris, IntelliSense ar trebui să funcționeze, dar nu funcționează, atunci acesta este un raport de eroare.
  • Dacă în cazul descris, IntelliSense nu ar trebui să funcționeze, atunci aceasta este o solicitare pentru o nouă caracteristică.

La sfârșitul zilei, celor mai mulți utilizatori nu le pasă de aceste nuanțe – vor doar ca JavaScript IntelliSense să funcționeze.

Și deși aceste diferențe sunt importante pentru mine, în calitate de responsabil de proiect, în general nu ar trebui să conteze pentru mine. Deoarece întrebările, rapoartele de erori și solicitările de caracteristici sunt toate modalități de a exprima o idee: utilizatorul așteaptă ceva de la codul meu și nu îl primește. Dacă produsul ar fi perfect, utilizatorii nu și-ar pune niciodată întrebări despre el, pentru că totul le-ar fi clar și ar face exact ceea ce își doresc (sau cel puțin le-ar spune clar de ce nu poate).

Dezvoltatorii sunt și ei oameni

Oamenii sunt emotivi. Oamenii sunt iraționali. Oamenii sunt niște idioți. Nu întotdeauna, desigur, dar uneori! Și crezi sau nu, dezvoltatorii sunt și ei oameni.

Există o fantezie pe care nouă dezvoltatorilor ne place să ne spunem: „Lucrăm cu computere, așa că trebuie să fim raționali. Înțelegem simbolurile criptice, așa că trebuie să fim deștepți. Software-ul a cucerit lumea, așa că trebuie să fim cool! Misto! Redirecţiona!!!"

Este gresit. Și dacă ar fi așa, atunci Dumnezeu să-i ajute pe restul oamenilor. Chiar și pe Stack Overflow, acel instrument pentru profesioniști conceput ca o bază obiectivă de cunoștințe, chiar și în propriul meu colț foarte specific al VS Code, continui să întâmpin tot felul de scandaluri: erori logice, insulte, mentalitate de turmă etc.

Nu te înșela: probabil că nu ești atât de perfect pe cât crezi. Dar asta nu înseamnă că nu ar trebui să încercăm să scăpăm de neajunsurile noastre.

Omule, eu sunt cel care a creat asta

Și eu sunt om și, din când în când, mă enervează ce se întâmplă pe Stack Overflow. De exemplu, atunci când un utilizator scrie cu încredere prostii sau pur și simplu dă un răspuns eronat la o întrebare legată de VS Code, un produs pe care l-am creat și pe care îl cunosc foarte bine. În mod ciudat, se pare că, cu cât răspunsul este mai eronat, cu atât este mai probabil ca cineva să-l numească fapt incontestabil.

Când se întâmplă acest lucru, mă comport ca în imagine și scriu răspunsul corect.

Ce am învățat în 10 ani pe Stack Overflow

Și de mai multe ori acest lucru a dus la fire lungi: vai de mine că îndrăznesc să pun la îndoială cunoștințele lor despre ceea ce am creat! Nu mai încercați să aveți dreptate tot timpul, băieți al naibii de deștepți! Pentru ca am dreptate!!!

Este ușor să devii cinic în această lipsă de speranță

Când te confrunți cu un flux nesfârșit de întrebări de calitate scăzută, este ușor să devii cinic. Nu a auzit niciodată de Google? Știe măcar să construiască propoziții coerente? Ce ești, un câine?

Uneori mă uit la zeci de întrebări noi într-o zi. Observarea constantă a tuturor acestor întrebări de proastă calitate riscă să alunece în dispreț sau cinism. Acest cinism se poate răspândi pe site, așa cum va atesta oricine care a întâlnit un moderator exagerat de zel sau a petrecut câteva ore cercetând și compunând o întrebare, doar pentru a primi răspunsuri negative în schimb și va dispărea în uitare fără nicio explicație.

Desigur, există utilizatori care nu depun un efort și nu pun întrebări proaste. Dar cred că cea mai mare parte a întrebărilor de proastă calitate provin de la oameni cu intenții bune (deși prostii). Întotdeauna încerc să-mi amintesc ce înseamnă să fii începător. Când abia începi, nu înțelegi cum funcționează cu adevărat totul aici. În unele cazuri, nici măcar nu știți ce cuvinte să vă exprimați corect problema. Crede-mă, este greu să fii în această poziție. Și este neplăcut când ești stropit cu slop doar pentru că pui o întrebare.

Deși Stack Overflow a făcut multe pentru a-i ajuta pe începători, mai sunt încă multe de făcut. Am încercat să găsesc un echilibru între aderarea la standardele site-ului și a fi indulgent față de utilizatorii fără experiență. Acest lucru poate implica explicarea motivului pentru care am votat pentru a închide întrebarea sau postarea unui comentariu încurajând utilizatorul să furnizeze mai multe informații. Mai am loc de crescut.

Pe de altă parte, nu ezit să-i resping utilizatorii cu o reputație de 50 care postează întrebări precum „Care este cel mai bun aspect VS Code pentru dezvoltarea JavaScript?” sau care încarcă capturi de ecran de cod în loc de text.

Uneori vreau doar să-ți mulțumesc

Există o cultură slabă a recunoștinței pe Stack Overflow. Îmi amintesc cândva, site-ul a tăiat automat cuvintele „bună ziua” și „mulțumesc” din întrebări. Poate că acest lucru este încă făcut, nu am verificat.

Astăzi, oricine a lucrat în asistența clienților știe bine că prea multă politețe poate sta în cale și chiar poate părea forțat. Dar uneori cineva de pe acest site face ceva foarte important pentru tine, iar singura modalitate de a-i mulțumi este să-i oferi un plus. E nasol.

Eficiența nu ne cere să devenim roboți fără suflet. Un canal lateral poate oferi o comunicare mai autentică între oameni, dacă utilizatorii înșiși o doresc, desigur.

Uneori vreau să știu ce s-a întâmplat după ce am primit răspunsul

Stack Overflow funcționează pe un principiu tranzacțional: unii oameni pun întrebări, alții răspund. Ce se întâmplă după primirea unui răspuns? Cine ştie? Uneori mă întreb despre asta. A fost util răspunsul meu? La ce proiect modest a ajutat? Ce a învățat cel care a întrebat?

Desigur, este imposibil să satisfaci această curiozitate. Solicitarea utilizatorilor să dea seama de modul în care vor folosi informațiile pe care le primesc ar fi foarte problematică, chiar dacă ați putea face acest lucru. Dar e interesant să te gândești la asta.

Gamificarea este eficientă...

… când transformăm procesele în jocuri.

Încă sunt puțin îngrijorat când văd pictograma +10 sau +25 în bara de stare. Poate că aceste mici atingeri de gamification sunt motivul pentru care mă întorc pe site de 10 ani. Dar de-a lungul anilor, am început să mă întreb și ce fel de joc este Stack Overflow și ce înseamnă să câștigi la el.

Sunt sigur că sistemul a fost creat cu cele mai bune intenții: să răsplătească oamenii pentru întrebări și răspunsuri utile. Dar de îndată ce adaugi scoruri mari, intră în vigoare legea lui Goodhart, iar unii utilizatori încep să-și ajusteze acțiunile nu pentru a obține valoarea maximă, ci pentru a obține evaluări maxime. Și acest lucru este important pentru că...

Reputația nu înseamnă ceea ce crezi că înseamnă.

Reputația nu este echivalentă cu competența tehnică, abilitățile de comunicare sau înțelegerea modului în care funcționează sau ar trebui să funcționeze Stack Overflow.

Nu vreau să spun că reputația este inutilă. Pur și simplu nu înseamnă ce înseamnă administratorii Stack Overflow sau ce ar trebui să însemne cuvântul „reputație”. Mi-am dat seama că reputația este o măsură a influenței. Luați în considerare două răspunsuri ipotetice publicate pe site:

  • Una despre o operație git obișnuită. Am scris un răspuns de trei rânduri în două minute folosind Google.
  • Celălalt este despre teoria grafurilor încurcate. Poate doar o sută de oameni din întreaga lume pot răspunde. Am scris câteva paragrafe și un exemplu de cod explicând problema și cum să o rezolv.

În cinci ani, primul răspuns a fost vizualizat de 5 milioane de ori și a primit 2000 de voturi pozitive. Al doilea răspuns a fost analizat de 300 de ori și a primit două voturi pozitive.

Într-o anumită măsură, acest lucru este foarte necinstit. De ce să recompensezi ceva care a fost la locul potrivit la momentul potrivit? (nu totul este determinat de noroc; înțelegerea regulilor jocului joacă, de asemenea, un rol uriaș). Pe de altă parte, prima întrebare a ajutat de fapt mult mai mulți oameni decât a doua. Poate că merită să recunoaștem că, într-un fel, recunoașterea duce la acumularea de „reputație”?

Așa că consider că „reputația” pe Stack Overflow este un fel de măsură a influenței. Adevărata reputație nu poate fi măsurată prin puncte, ea provine din comunitate. Al cui sfat ascult, cine îi ajută pe alții, în cine am încredere? Poate că aceștia vor fi oameni diferiți, în funcție de faptul că scriu în PHP sau pentru iOS.

Acestea fiind spuse, nu știu ce ar trebui să facă Stack Overflow în acest sens. Ar fi utilizatorii la fel de motivați dacă în loc de „reputație” ar câștiga „puncte viclene”? Utilizatorii vor rămâne la fel de implicați dacă nu există un sistem de puncte? Eu nu cred acest lucru. Iar mitul că „reputația” pe Stack Overflow este echivalentă cu reputația reală beneficiază nu numai de site-ul în sine, ci și de cei mai activi utilizatori. Ei bine, într-adevăr, cui nu-i place să-și crească reputația?

Nu, așa cum se întâmplă cel mai adesea în viață, pentru a vă face o idee reală despre ceea ce se întâmplă, trebuie să analizați nu numai numerele. Dacă o postare are 10 mii de puncte pe Stack Overflow, atunci uită-te la modul în care această persoană comunică, ce întrebări și răspunsuri publică. Și în toate cazurile, cu excepția celor excepționale, rețineți că doar scorurile Stack Overflow este puțin probabil să indice altceva decât capacitatea unei persoane de a utiliza site-ul. Și din experiența mea, adesea nici nu vorbesc despre asta.

Nu aș fi productiv fără Stack Overflow

De fiecare dată când trebuie să fac ceva complicat în git, merg la Stack Overflow. De fiecare dată când am nevoie de ceva simplu în bash, merg la Stack Overflow. De fiecare dată când primesc o eroare ciudată de compilare, merg la Stack Overflow.

Nu sunt productiv fără IntelliSense, un motor de căutare și Stack Overflow. Judecând după unele cărți, asta mă face un programator foarte prost. Probabil că aș eșua la multe teste și nu aș rezolva multe probleme de pe placă. Așa să fie. Serios, de fiecare dată când folosesc .sort în JavaScript, trebuie să caut informații despre când voi obține -1, 0 sau 1 și scriu JS în fiecare zi, dezvoltând cel mai popular editor pentru limbaj.

Nu, Stack Overflow este un instrument incredibil. Doar un prost nu ar folosi toate instrumentele pe care le are la dispoziție. Deci de ce să nu fii un prost interior ca mine? Păstrează-ți resursele creierului pentru cunoștințe importante, cum ar fi memorarea tuturor intrigilor din seria Seinfeld sau găsirea unor jocuri de cuvinte sofisticate (care lipsesc atât de mult din acest articol, dar vor fi multe altele de cu totul altă natură).

Stack Overflow este un miracol

Stack Overflow permite oricui, indiferent de experiență sau cunoștințe, să posteze întrebări de programare. La aceste întrebări răspund străini completi, cei mai mulți dintre care își petrec timpul din viața și cariera lor ajutându-i pe alții gratuit.

Miracolul este însuși faptul existenței și rezultatul muncii Stack Overflow. Sunt sigur că nu totul iese la fel de bine cum și-au propus creatorii, dar ei încearcă. În ciuda tuturor neajunsurilor, site-ul a ajutat un număr mare de oameni de mulți ani, inclusiv pe mine.

Stack Overflow nu va dura pentru totdeauna. Într-o zi va veni ceva mai bun. Sperăm că acesta este ceva care va învăța din greșelile Stack Overflow și va lua tot ce este mai bun din el. Până atunci, sper să nu luăm acest site de bun. Acesta este atât un reper, cât și o comunitate vie, care este în mod constant completată cu oameni noi. Dacă acest lucru vă îngrijorează, amintiți-vă că totul este foarte fragil și chiar și acțiunile mici - cum ar fi ajutarea noilor veniți bine intenționați, dar încă ignoranți - pot avea un efect pozitiv. Dacă critic acest site, este doar pentru că îmi pasă și știu să-l fac mai bun.

PS

Eram încă școlar când am venit la Stack Overflow. Tocmai începeam să scriu (ES5!) JavaScript în Eclipse și se părea că 90% dintre întrebări începeau cu „Utilizarea jQuery, doar...”. Și chiar dacă nu știam ce fac, străinii își petreceau timpul ajutându-mă. Nu cred că am apreciat-o cu adevărat la momentul respectiv, dar nu am uitat.

Oamenii vor dori întotdeauna ca Stack Overflow să fie ceva diferit: un site de întrebări și răspunsuri; un instrument pentru rezolvarea problemelor casnice; nivelul de trai al programarii. Și pentru mine, acest site, în ciuda creșterii și a deficiențelor sale, este în centrul său o comunitate deschisă în care străinii se ajută reciproc să învețe și să se perfecționeze. Și asta e grozav. Mă bucur că am făcut parte din Stack Overflow în ultimii 10 ani și sper să continui să o fac. Vreau să învăț la fel de multe lucruri noi în următorul deceniu ca și în deceniul precedent.

Sursa: www.habr.com

Adauga un comentariu