Što sam naučio u 10 godina na Stack Overflowu

Što sam naučio u 10 godina na Stack Overflowu
Bliži mi se moja deseta godišnjica na Stack Overflowu. Tijekom godina, moj pristup korištenju stranice i percepcija iste se uvelike promijenio, te želim podijeliti svoje iskustvo s vama. I o ovome pišem sa stajališta prosječnog korisnika koji nije previše uključen u život zajednice stranice ili njezinu kulturu. Ovih dana sam odgovarao samo na pitanja vezana uz VS Code, proizvod na kojem radim. Međutim, aktivno sam sudjelovao u raspravama o širokom spektru tema. Za 10 godina ja postavio oko 50 pitanja i dao 575 odgovora, pregledao je bezbroj tuđih komentara.

Jon Skeete opisao kulturu Stack Overflowa mnogo bolje i autoritativnije nego što ću to ikada moći učiniti. Njegovo objavljivanje utjecalo je na neka od poglavlja u ovom članku, ali sveukupno ovo su moja vlastita iskrena razmišljanja o mojim iskustvima na Stack Overflowu, što je dobro, a što loše u vezi s web mjestom i kako se ono danas može koristiti. Ova će rasprava biti prilično površna, bez dubljeg poniranja u rad mjesta ili njegovu povijest.

Dakle, evo što sam naučio iz 10 godina korištenja Stack Overflowa.

Morate znati postavljati pitanja

Na prvi pogled, ništa ne može biti jednostavnije: unesite nekoliko riječi u tekstualno polje, kliknite "Pošalji" i internet će magično pomoći riješiti sve vaše probleme! Ali trebalo mi je gotovo 10 godina da shvatim koje riječi upisati u to prokleto polje da stvarno dobijem rezultate. Zapravo, još uvijek učim o tome svaki dan.

Postavljanje dobrih pitanja doista je podcijenjena vještina (kao i pisanje dobrog izvješća o problemu, što se toga tiče). Prvo, kako uopće odrediti je li pitanje "dobro"? Stack Overflow ponude savjet, koji navodi sljedeće kvalitete dobrog pitanja:

  • Odgovara li temi stranice?
  • Podrazumijeva objektivan odgovor.
  • Još nije pitan.
  • Istraživan je.
  • Jasno opisuje problem, obično s minimalnim, lako ponovljivim primjerom.

U redu, ali kako "jasna izjava o problemu" izgleda u praksi? Koje su informacije relevantne, a koje nisu? Ponekad se čini da prvo morate znati odgovor da biste postavili dobro pitanje.

Nažalost, malo tekstualno polje ovdje ne pomaže. Pa je li ikakvo čudo da toliko mnogo korisnika postavlja pitanja niske kvalitete? Ponekad je jedini odgovor koji dobiju poveznica na neku zbunjujuću dokumentaciju. I još će imati sreće. Mnoga pitanja niske kvalitete jednostavno se potiho odbijaju i nestaju u beskonačnoj niti pitanja.

Postavljanje dobrih pitanja je vještina. Srećom, može se razviti. Uglavnom sam učio čitajući hrpu pitanja i odgovora, bilježeći što je uspjelo, a što nije. Koje informacije su korisne, a koje smetaju? Iako ćete se i dalje bojati koristiti stečeno znanje u praksi i postavljati pitanja. Samo dajte sve od sebe i učite iz rezultata. Moram priznati da sam i sam pomalo posramljen nekim svojim ranim ignorantnim pitanjima, iako možda ovo dokazuje da sam dosta poboljšao svoje vještine postavljanja pitanja otkako sam se našao na ovoj stranici.

Loša i ne tako dobra pitanja nisu ista stvar

Neću zašećerivati ​​pilulu: neka su pitanja jednostavno loša.

Pitanje koje se sastoji od snimke zaslona i izraza "ZAŠTO OVO NE RADI!?!" - loše. Zašto? Očito je da se autor gotovo nimalo nije potrudio. Ovo nije toliko pitanje koliko zahtjev: "uradi ovo za mene!" Zašto bih to učinio? Moje je vrijeme previše dragocjeno da bih ga gubio pomažući nekome tko ne želi učiti za početak i neće cijeniti moju pomoć. Saznajte što je Stack Overflow.

Sada razmotrite pitanje pod naslovom "Kako ukloniti plave obrube na mojoj stranici", koje se sastoji od nekoliko odlomaka teksta koji govore o svojstvu CSS outline, ali bez eksplicitnog spominjanja riječi "CSS" ili "outline". Iako pitanje poput ovog može biti u suprotnosti s mnogim smjernicama Stack Overflowa, ne slažem se, to nije loše pitanje. Autor je barem pokušao dati neke podatke, čak i ne znajući što dati. Pokušaj se računa, kao i volja za opažanjem i učenjem.

Međutim, mnogi suradnici Stack Overflowa vjerojatno će tretirati oba pitanja na isti način: glasati protiv i zatvoriti. To je frustrirajuće i odbija mnoge neiskusne korisnike prije nego što nauče postavljati bolja pitanja i čak razumiju kako stranica funkcionira.

Stvarno loša pitanja nisu vrijedna vašeg vremena. Ali treba imati na umu da oni koji postavljaju ne baš dobra pitanja to čine nenamjerno. Žele postavljati dobra pitanja, ali ne znaju kako. Ako pridošlice kažnjavate slijepo i bez objašnjenja, kako će naučiti?

Dobro pitanje ne jamči odgovor

Stack Overflow obično pruža brže odgovore na jednostavna pitanja na koja mnogi ljudi mogu odgovoriti. Imate li pitanja o binarnom pretraživanju u JavaScriptu ili o HTML-u? Predivno! Primite pet odgovora u manje od sat vremena. Ali što je pitanje složenije ili specifičnije, manja je vjerojatnost da ćete dobiti odgovor, bez obzira na kvalitetu formulacije.

Vjerojatnost dobivanja odgovora također brzo opada s vremenom. Kad pitanje ode nekoliko stranica duboko u feed, izgubi se. Tjedan dana kasnije, možete se samo moliti da će netko s pravim znanjem naići na vaše pitanje (ili velikodušno kliknuti na njega).

Možda vam se neće svidjeti točni odgovori

Svaki mjesec dobijem nekoliko negativnih glasova za takozvane nepopularne odgovore. Ovo su vrste odgovora koji u suštini kažu: "razlog je zato što je tako dizajnirano", ili "nije moguće jer...", ili "to je greška koju prvo treba popraviti." U svim gore navedenim slučajevima autori ne dobivaju rješenje pa čak ni zaobilazno rješenje. I sumnjam da kada se ljudima ne sviđa što odgovor kaže, oni ga poništavaju. Čak ih i razumijem, ali to ne znači da su odgovori pogrešni.

Naravno, vrijedi i suprotno: dobri vam odgovori ne govore nužno ono što želite čuti. Neki od najboljih odgovora najprije odgovaraju na izvorno pitanje, ali zatim opisuju druge pristupe rješavanju problema. Ponekad odgovorim na pitanje korisnika, a zatim napišem dugačak tekst o tome zašto se to ne preporučuje.

Kad god se izražavanje stava pojednostavi na glasove gore i dolje ili gumb za sviđanje, gube se važne razlike. Ovaj se problem često pojavljuje na internetu. Koliko vam društvenih mreža dopušta da razlikujete "podržavam ovo" i "mislim da je dobro rečeno, čak i ako mi se ne sviđa ili se slažem s tim"?

Sve u svemu, unatoč mjesečnim negativnim glasovima, vjerujem da zajednica Stack Overflowa pošteno glasa. Držat ćemo se ovog puta.

Gotovo nikad ne pitam na Stack Overflowu

Što sam duže koristio ovu stranicu, to sam rjeđe postavljao pitanja na njoj. To je djelomično zbog mog profesionalnog razvoja. Mnogi problemi s kojima se susrećem na poslu su previše složeni da bih ih opisao jednostavnim pitanjima ili previše konkretni da bi mi itko mogao pomoći. Shvatio sam ograničenja stranice pa izbjegavam postavljati pitanja na koja gotovo sigurno neću dobiti dobar odgovor.

Ali ovdje sam rijetko postavljao pitanja, čak i kad sam učio novi jezik ili okvir. Ne zato što je toliki genije, upravo suprotno. Samo što, nakon godina provedenih na Stack Overflowu, kada imam pitanje, dođem do dubokog uvjerenja da je malo vjerojatno da ću biti prvi koji će ga postaviti. Počnem tražiti i gotovo uvijek nađem da je netko već pitao istu stvar prije par godina.

Promatranje pitanja drugih ljudi izvrstan je način da naučite nove stvari o svom proizvodu.

Sada radim dalje VS kod, pa sam stekao naviku gledati pitanja s oznakom vscode. Ovo je sjajan način da vidite kako se moj kôd koristi u stvarnom svijetu. S kojim se problemima korisnici susreću? Kako se može poboljšati dokumentacija ili API? Zašto nešto što sam mislio da je apsolutno jasno izaziva toliko nesporazuma?

Pitanja su važan signal koji pokazuje kako se vaš proizvod koristi. Ali poanta nije u tome da odgovorite i krenete dalje, već da prvo pokušate razumjeti zašto osoba ima pitanje. Možda postoji problem u proizvodu koji vam je nepoznat ili neke pretpostavke koje ste nesvjesno napravili? Pitanja su mi također pomogla otkriti mnoge greške i inspirirala me da nastavim raditi.

Ako održavate proizvod za programere, nemojte razmišljati o Stack Overflowu kao o odlagalištu (ili još gore, o groblju pitanja). Redovito provjeravajte koja su se pitanja i odgovori pojavili. To ne znači da morate sami odgovoriti na svako pitanje, ali signali iz Stack Overflowa previše su važni da biste ih zanemarili.

Granice između pitanja, izvješća o pogrešci i zahtjeva za značajkom su zamagljene.

Dosta pitanja o VS kodu na Stack Overflowu zapravo su bila izvješća o pogreškama. A mnogi drugi zapravo su zahtjevi za novim značajkama.

Na primjer, pitanje s naslovom "Zašto se VS Code ruši kada ja...?" - ovo je izvješće o bugu. VS Code ne bi se trebao srušiti u raznim situacijama. Odgovaranje na pitanja koja su izvješća o pogrešci je kontraproduktivno jer bi autori mogli biti zadovoljni zaobilaznim rješenjem i nikada ne bi podnijeli pravo izvješće o pogrešci. U ovakvim situacijama obično tražim od korisnika da prijave bug na Githubu.

U drugim slučajevima, razlike mogu biti manje očite. Na primjer, pitanje "Zašto JavaScript IntelliSense ne radi u VS Code?" Ovisno o tome kako JavaScript IntelliSense ne radi, problem može spadati u jednu od tri kategorije:

  • Ako je to problem konfiguracije korisnika, onda je to stvarno pitanje za Stack Overflow.
  • Ako bi u opisanom slučaju IntelliSense trebao raditi, ali ne radi, onda je to izvješće o bugu.
  • Ako u opisanom slučaju IntelliSense ne bi trebao raditi, onda je to zahtjev za novom značajkom.

Na kraju dana, većini korisnika nije stalo do ovih nijansi—oni samo žele da JavaScript IntelliSense radi.

I iako su te razlike važne za mene, kao osobu odgovornu za projekt, općenito mi ne bi trebale biti važne. Budući da su pitanja, izvješća o pogreškama i zahtjevi za značajkama načini izražavanja jedne ideje: korisnik očekuje nešto od mog koda, a to ne dobije. Da je proizvod savršen, korisnici nikada ne bi postavljali pitanja o njemu, jer bi im sve bilo jasno i radio bi točno ono što žele (ili bi im barem jasno rekao zašto ne može).

I programeri su ljudi

Ljudi su emotivni. Ljudi su iracionalni. Ljudi su seronje. Ne uvijek, naravno, ali ponekad! Vjerovali ili ne, i programeri su ljudi.

Postoji fantazija koju si mi programeri volimo govoriti: “Radimo s računalima, stoga moramo biti racionalni. Razumijemo kriptične simbole, pa moramo biti pametni. Softver je preuzeo svijet, pa moramo biti cool! cool! Naprijed!!!"

To je pogrešno. A kad bi bilo tako, pomozi Bog ostalim ljudima. Čak i na Stack Overflowu, tom alatu za profesionalce osmišljenom kao objektivna baza znanja, čak i u svom vlastitom, vrlo specifičnom kutku VS Codea, i dalje se susrećem sa svim vrstama uvreda: logičkim pogreškama, uvredama, mentalitetom stada itd.

Nemojte se zavaravati: vjerojatno niste tako savršeni kao što mislite. Ali to ne znači da se ne trebamo pokušati riješiti svojih nedostataka.

Čovječe, ja sam taj koji je ovo stvorio

I ja sam čovjek i s vremena na vrijeme me živcira ono što se događa na Stack Overflowu. Na primjer, kada korisnik samouvjereno napiše glupost ili jednostavno pogrešno odgovori na pitanje vezano za VS Code, proizvod koji sam ja kreirao i koji jako dobro poznajem. Začudo, čini se da što je odgovor pogrešniji, to je vjerojatnije da će ga netko nazvati nepobitnom činjenicom.

Kada se to dogodi, ponašam se kao na slici i upisujem točan odgovor.

Što sam naučio u 10 godina na Stack Overflowu

I nekoliko puta to je rezultiralo dugim nitima: jao meni što sam se usudio dovesti u pitanje njihovo znanje o onome što sam stvorio! Prestanite stalno pokušavati biti u pravu, prokleti pametnjakovići! Jer sam u pravu!!!

Lako je postati ciničan u ovom beznađu

Kada se suočite s beskonačnim nizom pitanja niske kvalitete, lako je postati ciničan. Zar nikad nije čuo za Google? Zna li uopće sastaviti koherentne rečenice? Što si ti, pas?

Ponekad pogledam desetke novih pitanja u danu. Konstantno promatranje svih tih nekvalitetnih pitanja riskira skliznuti u prezir ili cinizam. Taj se cinizam može preliti i na stranicu, što će potvrditi svatko tko je naišao na prerevnog moderatora ili proveo nekoliko sati istražujući i sastavljajući pitanje, da bi zauzvrat dobio negativne odgovore i nestao u zaboravu bez ikakvog objašnjenja.

Naravno, postoje korisnici koji se ne trude ni mrvicu pa postavljaju loša pitanja. Ali vjerujem da većina nekvalitetnih pitanja dolazi od ljudi s dobrim (iako glupim) namjerama. Uvijek se pokušavam sjetiti što znači biti početnik. Kad tek počnete, ne razumijete kako sve ovdje zapravo funkcionira. U nekim slučajevima čak ni ne znate kojim biste riječima pravilno izrazili svoj problem. Vjerujte, teško je biti u ovoj poziciji. A neugodno je kad vas poliju pometama samo zato što ste postavili pitanje.

Iako je Stack Overflow učinio puno kako bi pomogao početnicima, još je mnogo toga što treba učiniti. Pokušao sam pronaći ravnotežu između pridržavanja standarda stranice i popustljivosti prema neiskusnim korisnicima. To može uključivati ​​objašnjenje zašto sam glasao za zatvaranje pitanja ili objavljivanje komentara koji potiče korisnika da pruži više informacija. Imam još prostora za rast.

S druge strane, bez oklijevanja glasam protiv korisnika s reputacijom od 50 000 koji objavljuju pitanja poput "Koji je najbolji VS kodni raspored za razvoj JavaScripta?", ili koji učitavaju sapunaste snimke zaslona koda umjesto teksta.

Ponekad ti samo želim zahvaliti

Na Stack Overflowu postoji slaba kultura zahvalnosti. Sjećam se da je jednom davno stranica automatski izbacila riječi "bok" i "hvala" iz pitanja. Možda se to još uvijek radi, nisam provjerio.

Danas svatko tko je radio u korisničkoj podršci dobro zna da previše pristojnosti može stati na put, pa čak i djelovati isforsirano. Ali ponekad netko na ovoj stranici učini nešto vrlo važno za vas, a jedini način da mu zahvalite je da mu date plus. Sranje je.

Učinkovitost ne zahtijeva da postanemo roboti bez duše. Sporedni kanal može omogućiti autentičniju komunikaciju među ljudima, ako to sami korisnici žele, naravno.

Ponekad želim znati što se dogodilo nakon što sam dobio odgovor

Stack Overflow funkcionira na transakcijskom principu: neki ljudi postavljaju pitanja, drugi odgovaraju. Što se događa nakon primitka odgovora? Tko zna? Ponekad se pitam o ovome. Je li moj odgovor bio od pomoći? Koji je skromni projekt pomogao? Što je ispitivač naučio?

Naravno, nemoguće je zadovoljiti ovu znatiželju. Zahtijevati od korisnika da odgovaraju kako će koristiti informacije koje dobiju bilo bi vrlo problematično, čak i kad biste to mogli. Ali zanimljivo je razmišljati o tome.

Gamifikacija je učinkovita...

...pri pretvaranju procesa u igre.

Još uvijek se malo zabrinem kad vidim malu ikonu +10 ili +25 na statusnoj traci. Možda su ti mali dodaci gamifikacije razlog zašto se vraćam na stranicu već 10 godina. Ali s godinama sam se također počeo pitati kakva je to igra Stack Overflow i što znači pobijediti u njoj.

Siguran sam da je sustav napravljen u najboljoj namjeri: nagraditi ljude za korisna pitanja i odgovore. Ali čim dodate visoke rezultate, to stupa na snagu Goodhartov zakon, a neki korisnici počinju prilagođavati svoje radnje ne za postizanje maksimalne vrijednosti, već za postizanje maksimalnih ocjena. A ovo je važno jer...

Reputacija ne znači ono što mislite da znači.

Reputacija nije jednaka tehničkoj kompetenciji, komunikacijskim vještinama ili razumijevanju načina na koji Stack Overflow funkcionira ili bi trebao funkcionirati.

Ne želim reći da je reputacija beskorisna. To jednostavno ne znači ono što misle Stack Overflow administratori ili što bi riječ "reputacija" trebala značiti. Shvatio sam da je ugled mjera utjecaja. Razmotrite dva hipotetska odgovora objavljena na stranici:

  • Jedna o uobičajenoj git operaciji. Napisao sam odgovor u tri retka u dvije minute koristeći Google.
  • Drugi je o teoriji zamršenih grafova. Možda samo stotinjak ljudi na cijelom svijetu može odgovoriti na njega. Napisao sam nekoliko odlomaka i primjer koda koji objašnjava problem i kako ga riješiti.

U pet godina prvi je odgovor pregledan 5 milijuna puta i dobio je 2000 glasova za. Drugi odgovor pregledan je 300 puta i dva su ga glasala za.

U određenoj je mjeri to vrlo nepošteno. Zašto nagraditi nešto što je bilo na pravom mjestu u pravo vrijeme? (ne određuje sve sreća; veliku ulogu igra i razumijevanje pravila igre). S druge strane, prvo pitanje zapravo je pomoglo puno više ljudi nego drugo. Možda je vrijedno priznati da, u određenom smislu, priznanje vodi akumulaciji "ugleda"?

Stoga smatram da je "ugled" na Stack Overflowu neka vrsta mjere utjecaja. Prava reputacija ne može se mjeriti pukim bodovima, ona dolazi iz zajednice. Čije savjete slušam, tko pomaže drugima, kome vjerujem? Možda će to svi biti različiti ljudi, ovisno o tome pišem li u PHP-u ili za iOS.

Uz to rečeno, ne znam što bi Stack Overflow trebao učiniti u tom pogledu. Bi li korisnici bili toliko motivirani da umjesto "ugleda" zarađuju "bodove za lukavstvo"? Hoće li korisnici ostati jednako angažirani ako uopće ne bude sustava bodovanja? Mislim da je malo vjerojatno. A mit da je "reputacija" na Stack Overflowu jednaka stvarnoj reputaciji koristi ne samo samoj web stranici, već i njezinim najaktivnijim korisnicima. Pa, stvarno, tko ne voli povećavati svoj ugled?

Ne, kao što to najčešće biva u životu, da biste dobili stvarnu predodžbu o tome što se događa, morate analizirati ne samo brojke. Ako post ima 10 tisuća bodova na Stack Overflowu, onda pogledajte kako ta osoba komunicira, koja pitanja i odgovore objavljuje. I u svim slučajevima osim u iznimnim, imajte na umu da rezultati Stack Overflowa sami po sebi vjerojatno neće pokazati ništa osim sposobnosti osobe da koristi web mjesto. A prema mom iskustvu, često o tome i ne razgovaraju.

Ne bih bio produktivan bez Stack Overflowa

Svaki put kad trebam napraviti nešto komplicirano u git-u, odem na Stack Overflow. Svaki put kad trebam nešto jednostavno u bashu, odem na Stack Overflow. Svaki put kad dobijem čudnu pogrešku kompilacije, odem na Stack Overflow.

Nisam produktivan bez IntelliSensea, tražilice i Stack Overflowa. Sudeći po nekim knjigama, to me čini vrlo lošim programerom. Vjerojatno bih pao na puno testova i ne bih riješio mnogo problema na ploči. Neka tako i bude. Ozbiljno, svaki put kad koristim .sort u JavaScriptu, moram potražiti informacije o tome kada ću dobiti -1, 0 ili 1, i pišem JS svaki dan, razvijajući najpopularniji editor za jezik.

Ne, Stack Overflow je nevjerojatan alat. Samo budala ne bi koristila sve alate koji su mu dostupni. Pa zašto ne biste bili unutarnja budala poput mene? Sačuvajte svoje moždane resurse za važna znanja, kao što je pamćenje svih zapleta serije o Seinfeldu ili smišljanje sofisticiranih dosjetki (koje toliko nedostaju u ovom članku, ali bit će mnogo drugih potpuno drugačije prirode).

Stack Overflow je čudo

Stack Overflow omogućuje svakome, bez obzira na iskustvo ili znanje, postavljanje pitanja o programiranju. Na ova pitanja odgovaraju potpuni stranci, od kojih većina provodi vrijeme svog života i karijere besplatno pomažući drugima.

Čudo je sama činjenica postojanja i rezultat rada Stack Overflowa. Siguran sam da ne ispadne sve onako kako su tvorci zamislili, ali trude se. Unatoč svim nedostacima, stranica već dugi niz godina pomaže ogromnom broju ljudi, uključujući i mene.

Stack Overflow neće trajati vječno. Jednog dana doći će nešto bolje. Nadamo se da je ovo nešto što će učiti na pogreškama Stack Overflowa i izvući najbolje iz toga. Do tada, nadam se da ovu stranicu nećemo uzimati zdravo za gotovo. Ovo je i orijentir i životna zajednica, koja se stalno nadopunjuje novim ljudima. Ako vas to brine, zapamtite da je sve ovo vrlo krhko, pa čak i mala djela - poput pomoći dobronamjernim, ali još uvijek neukim pridošlicama - mogu imati pozitivan učinak. Ako kritiziram ovu stranicu, to je samo zato što mi je stalo i znam kako je učiniti boljom.

PS

Još sam bio školarac kad sam došao u Stack Overflow. Upravo sam počeo pisati (ES5!) JavaScript u Eclipseu i činilo se da 90% pitanja počinje s "Korištenje jQueryja, samo...". I iako nisam znala što radim, stranci su provodili vrijeme pomažući mi. Mislim da to u to vrijeme nisam baš cijenio, ali nisam zaboravio.

Ljudi će uvijek željeti da Stack Overflow bude nešto drugačije: mjesto za pitanja i odgovore; alat za rješavanje problema u kućanstvu; životni standard programiranja. Za mene je ova stranica, unatoč svom rastu i nedostacima, u svojoj srži otvorena zajednica u kojoj stranci pomažu jedni drugima u učenju i usavršavanju. I to je super. Drago mi je što sam bio dio Stack Overflowa zadnjih 10 godina i nadam se da ću tako i nastaviti. Želim naučiti što više novih stvari u sljedećem desetljeću kao što sam naučio u prethodnom desetljeću.

Izvor: www.habr.com

Dodajte komentar