Šta sam naučio za 10 godina na Stack Overflowu

Šta sam naučio za 10 godina na Stack Overflowu
Približavam se svojoj desetoj godišnjici na Stack Overflowu. Tokom godina, moj pristup korištenju stranice i percepcija o njoj su se dosta promijenili i želim podijeliti svoje iskustvo s vama. I o tome pišem iz ugla prosječnog korisnika koji nije previše uključen u život zajednice stranice ili njene kulture. Ovih dana sam samo odgovarao na pitanja vezana za VS Code, proizvod na kojem radim. Međutim, ranije sam aktivno učestvovao u raspravama o širokom spektru tema. Za 10 godina I postavio oko 50 pitanja i dao 575 odgovora, pregledao je bezbroj komentara drugih ljudi.

Jon Skeete opisao kulturu Stack Overflowa mnogo bolji i autoritativniji nego što ću ja ikada moći. Njegovo objavljivanje uticalo je na neka od poglavlja u ovom članku, ali sve u svemu, ovo su moja iskrena razmišljanja o mojim iskustvima sa Stack Overflow-om, šta je dobro, a šta loše na sajtu i kako se može koristiti danas. Ova rasprava će biti prilično površna, bez dubokog uranjanja u funkcionisanje sajta ili njegovu istoriju.

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

Morate biti u mogućnosti postavljati pitanja

Na prvi pogled, ništa ne može biti jednostavnije: unesite nekoliko riječi u polje za tekst, kliknite na “Pošalji” i Internet će magično pomoći u rješavanju svih vaših problema! Ali trebalo mi je skoro 10 godina da shvatim koje riječi da upišem u to prokleto polje da bih zapravo dobio rezultate. Zapravo, još uvijek učim o tome svaki dan.

Postavljanje dobrih pitanja je zaista potcijenjena vještina (kao i pisanje dobrog izvještaja o problemu, u tom slučaju). Prvo, kako uopće možemo odrediti da li je pitanje „dobro“? Stack Overflow ponude nagovještaj, koji navodi sljedeće kvalitete dobrog pitanja:

  • Da li odgovara temi stranice?
  • Podrazumijeva objektivan odgovor.
  • Još nije pitano.
  • Istražena je.
  • Jasno opisuje problem, obično s minimalnim primjerom koji se lako može ponoviti.

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

Nažalost, malo tekstualno polje ovdje ne pomaže. Pa je li čudo što toliko korisnika postavlja pitanja lošeg kvaliteta? Ponekad je jedini odgovor koji dobiju link do neke zbunjujuće dokumentacije. I još će imati sreće. Mnoga nekvalitetna pitanja jednostavno se tiho odbijaju i nestaju u beskrajnoj niti pitanja.

Postavljanje dobrih pitanja je vještina. Na sreću, može se razviti. Uglavnom sam učio čitajući gomilu pitanja i odgovora, beležeći šta je uspelo, a šta ne. Koje informacije su korisne, a šta neugodne? Iako ćete se i dalje bojati koristiti stečeno znanje u praksi i postavljati pitanja. Samo pokušajte i učite iz rezultata. Moram priznati da je i mene malo neugodno zbog nekih svojih ranih neznalica, iako to možda dokazuje da sam dosta poboljšao svoje vještine postavljanja pitanja otkako sam se našao na ovoj stranici.

Loša i ne baš dobra pitanja nisu ista stvar

Neću zaslađivati ​​pilulu: neka pitanja su loša.

Pitanje koje se sastoji od snimka ekrana i fraze "ZAŠTO OVO NE RADI!?!" - loše. Zašto? Očigledno je da se autor gotovo nimalo nije potrudio. Ovo nije toliko pitanje koliko zahtjev: „uradite ovaj posao za mene!“ Zašto bih ovo uradio? Moje vrijeme je previše dragocjeno da bih ga trošio pomažući nekome ko ne želi da uči za početak i neće cijeniti moju pomoć. Saznajte šta je Stack Overflow.

Sada razmotrite pitanje pod naslovom "Kako ukloniti plave ivice na mojoj stranici", koje se sastoji od nekoliko pasusa teksta koji govori o svojstvu CSS outline, ali bez eksplicitnog pominjanja riječi "CSS" ili "outline". Iako ovakvo pitanje može biti u suprotnosti sa mnogim smjernicama Stack Overflowa, ne slažem se, to nije loše pitanje. Autor je barem pokušao dati neke informacije, čak i ne znajući šta da da. Pokušaj se računa, kao i spremnost za opažanjem i učenjem.

Međutim, mnogi saradnici Stack Overflow-a će vjerovatno tretirati oba pitanja na isti način: poništiti i zatvoriti. Ovo je frustrirajuće i odbija mnoge neiskusne korisnike prije nego što nauče postavljati bolja pitanja i čak razumjeti kako stranica funkcionira.

Zaista 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 da postavljaju dobra pitanja, samo ne znaju kako. Ako pridošlice kažnjavate slijepo i bez objašnjenja, kako će oni naučiti?

Dobro pitanje ne garantuje 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 JavaScript-u ili o HTML-u? Divno! Primite pet odgovora za manje od sat vremena. Ali što je pitanje složenije ili konkretnije, manja je vjerovatnoća da ćete dobiti odgovor, bez obzira na kvalitet formulacije.

Verovatnoća dobijanja odgovora takođe brzo opada tokom vremena. Kada pitanje ide nekoliko stranica duboko u feed, gubi se. Nedelju dana kasnije, možete se samo moliti da neko sa pravim znanjem naleti na vaše pitanje (ili velikodušno klikne na njega).

Možda vam se ne sviđaju tačni odgovori

Svaki mjesec dobijem nekoliko negativnih glasova za takozvane nepopularne odgovore. Ovo su vrste odgovora koji u suštini govore, „razlog je zato što je tako dizajniran“, ili „nije moguće jer...“, ili „to je greška koju prvo treba popraviti“. U svim gore navedenim slučajevima, autori ne dobijaju rješenje, pa čak ni zaobilazno rješenje. I pretpostavljam da kada se ljudima ne sviđa ono što piše u odgovoru, oni ga omalovažavaju. Čak ih i razumijem, ali to ne znači da su odgovori pogrešni.

Naravno, istina je i suprotno: dobri odgovori vam ne govore nužno ono što želite da čujete. Neki od najboljih odgovora prvo odgovaraju na izvorno pitanje, ali zatim opisuju druge pristupe rješavanju problema. Ponekad odgovorim na pitanje korisnika i onda napišem dugačak tekst zašto se to ne preporučuje.

Kad god se izrazi stava pojednostave na glasove gore i dolje ili dugme sviđa mi se, bitne razlike se gube. Ovaj problem se često javlja na internetu. Koliko društvenih mreža vam omogućava da razlikujete „podržavam ovo“ i „mislim da je to dobro rečeno, čak i ako mi se ne sviđa ili se ne slažem s tim“?

Sve u svemu, uprkos mjesečnim glasovima protiv, vjerujem da zajednica Stack Overflow glasa pošteno. Mi ćemo se držati ovog puta.

Gotovo nikad ne pitam na Stack Overflowu

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

Ali rijetko sam postavljao pitanja ovdje, čak i kada sam učio novi jezik ili okvir. Ne zato što je tako genije, baš suprotno. Jednostavno, nakon godina rada na Stack Overflowu, kada imam pitanje, dolazim do dubokog uvjerenja da je malo vjerovatno da ću ga prvi postaviti. Počinjem da tražim i skoro uvek nađem da je neko već pitao istu stvar pre par godina.

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

Sada radim na tome VS Code, tako da sam stekao naviku da gledam pitanja označena vscode. Ovo je odličan način da vidite kako se moj kod koristi u stvarnom svijetu. S kojim se problemima susreću korisnici? 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 poenta nije odgovoriti i nastaviti dalje, već pokušati prvo razumjeti zašto osoba ima pitanje. Možda postoji problem u proizvodu koji vam je nepoznat, ili neke pretpostavke koje ste nesvjesno iznijeli? Pitanja su mi takođe pomogla da otkrijem mnoge greške i inspirisala me da nastavim sa radom.

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

Granice između pitanja, izvještaja o grešci i zahtjeva funkcije su zamagljene.

Dosta pitanja o VS kodu na Stack Overflow-u su zapravo bili izvještaji o greškama. I mnogi drugi su zapravo zahtjevi za novim funkcijama.

Na primjer, pitanje s naslovom "Zašto se VS Code ruši kada uradim...?" - ovo je izvještaj o grešci. VS Code se ne bi trebao srušiti u raznim situacijama. Odgovaranje na pitanja koja su izveštaji o greškama je kontraproduktivno jer autori mogu biti zadovoljni rešenjem i nikada ne podnesu pravi izveštaj o greškama. U ovakvim situacijama obično tražim od korisnika da podnesu izvještaj o grešci na Githubu.

U drugim slučajevima, razlike mogu biti manje očigledne. Na primjer, pitanje "Zašto JavaScript IntelliSense ne radi u VS Code?" Ovisno o tome kako JavaScript IntelliSense ne radi, problem može pasti 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 ovo izvještaj o grešci.
  • Ako u opisanom slučaju IntelliSense ne bi trebao raditi, onda je ovo zahtjev za novom funkcijom.

Na kraju krajeva, većina korisnika ne mari za ove nijanse – oni samo žele da JavaScript IntelliSense radi.

I iako su ove razlike važne za mene, kao osobu odgovornu za projekat, generalno ne bi trebalo da mi smetaju. Zato što su pitanja, izvještaji o greškama i zahtjevi za funkcijama načini izražavanja jedne ideje: korisnik nešto očekuje od mog koda, a ne razumije. Da je proizvod savršen, korisnici nikada ne bi postavljali pitanja o njemu, jer bi im sve bilo jasno i radio bi upravo ono što žele (ili im barem jasno rekao zašto ne može).

I programeri su ljudi

Ljudi su emotivni. Ljudi su iracionalni. Ljudi su seronje. Ne uvek, naravno, ali ponekad! A vjerovali ili ne, i programeri su ljudi.

Postoji fantazija koju mi ​​programeri volimo da kažemo sebi: „Mi radimo sa računarima, pa moramo biti racionalni. Razumijemo zagonetne simbole, pa moramo biti pametni. Softver je preuzeo svijet, tako da moramo biti cool! Cool! Naprijed!!!"

Ovo je pogrešno. A ako je tako, pomozi Bože ostalim ljudima. Čak i na Stack Overflowu, tom alatu za profesionalce osmišljenom kao objektivna baza znanja, čak iu mom, vrlo specifičnom kutku VS Code-a, i dalje se susrećem sa svim vrstama uvreda: logičke zablude, uvrede, mentalitet stada, itd.

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

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

I ja sam čovjek, i s vremena na vrijeme me nervira ono što se dešava na Stack Overflowu. Na primjer, kada korisnik samouvjereno piše gluposti ili jednostavno daje pogrešan odgovor na pitanje vezano za VS Code, proizvod koji sam ja kreirao i koji jako dobro poznajem. Čudno, čini se da što je odgovor pogrešniji, veća je vjerovatnoća da će ga neko nazvati neospornom činjenicom.

Kada se to desi, ponašam se kao na slici i napišem tačan odgovor.

Šta sam naučio za 10 godina na Stack Overflowu

I nekoliko puta je to rezultiralo dugim nitima: jao meni što sam se usudio dovesti u pitanje njihovo znanje o onome što sam stvorio! Prestanite da pokušavate da budete u pravu sve vreme, prokleto pametnjakovići! Jer sam u pravu!!!

Lako je postati ciničan u ovom beznađu

Kada se suočite sa beskonačnim nizom pitanja lošeg kvaliteta, lako je postati ciničan. Zar nikad nije čuo za Google? Zna li on uopće graditi koherentne rečenice? Šta si ti, pas?

Ponekad pogledam na desetine novih pitanja u toku dana. Stalno posmatranje svih ovih nekvalitetnih pitanja rizikuje da sklizne u prezir ili cinizam. Ovaj cinizam se može preliti i na stranicu, što će potvrditi svako ko je naišao na pretjerano revnog 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 i postavljaju loša pitanja. Ali vjerujem da većina nekvalitetnih pitanja dolazi od ljudi s dobrim namjerama (iako glupih). Uvek pokušavam da se setim šta znači biti novajlija. Kada tek počnete, ne razumete kako sve ovde zaista funkcioniše. U nekim slučajevima čak ni ne znate kojim riječima biste ispravno izrazili svoj problem. Vjerujte mi, teško je biti u ovoj poziciji. I neprijatno je kada te poliju šljamom samo zato što si postavio pitanje.

Iako je Stack Overflow učinio mnogo da pomogne početnicima, još mnogo toga treba učiniti. Pokušao sam da pronađem balans između pridržavanja standarda sajta i popustljivosti prema neiskusnim korisnicima. Ovo može uključivati ​​objašnjenje zašto sam glasao za zatvaranje pitanja ili postavljanje komentara koji ohrabruje korisnika da pruži više informacija. Još imam prostora da rastem.

S druge strane, nemam oklijevanja da odbacim korisnike sa reputacijom od 50 koji postavljaju pitanja poput „Koji je najbolji izgled VS koda za razvoj JavaScripta?“, ili koji postavljaju sapunjaste snimke koda umjesto teksta.

Ponekad samo želim da ti zahvalim

Postoji slaba kultura zahvalnosti na Stack Overflowu. Sjećam se da je jednom davno stranica automatski izrezala riječi “zdravo” i “hvala” iz pitanja. Možda se to još radi, nisam provjerio.

Danas, svako ko je radio u korisničkoj podršci dobro zna da previše pristojnosti može stati na put, pa čak i djelovati prisilno. Ali ponekad vam neko na ovoj stranici učini nešto veoma važno, a jedini način da mu se zahvalite je da mu date plus. Sranje.

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

Ponekad želim da znam šta se desilo nakon što sam dobio odgovor

Stack Overflow radi na principu transakcije: neki ljudi postavljaju pitanja, drugi odgovaraju. Šta se dešava nakon dobijanja odgovora? Ko zna? Ponekad se pitam o ovome. Je li moj odgovor bio od pomoći? U kom skromnom projektu je pomogao? Šta je ispitivač naučio?

Naravno, nemoguće je zadovoljiti ovu radoznalost. Zahtijevanje od korisnika da vode računa o tome kako će koristiti informacije koje dobiju bilo bi vrlo problematično, čak i kada biste to mogli učiniti. Ali zanimljivo je razmišljati o tome.

Gamifikacija je efikasna...

…kada procese pretvaramo u igre.

I dalje se malo brinem kada vidim malu ikonicu +10 ili +25 u statusnoj traci. Možda su ovi mali dodiri gamifikacije razlog zašto se vraćam na stranicu već 10 godina. Ali tokom godina, takođe sam počeo da se pitam kakva je igra Stack Overflow i šta znači pobeda u njoj.

Siguran sam da je sistem kreiran u najboljoj namjeri: da nagradi 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 da bi postigli maksimalnu vrijednost, već da bi dobili maksimalne ocjene. A ovo je važno jer...

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

Reputacija nije ekvivalentna tehničkoj kompetenciji, komunikacijskim vještinama ili razumijevanju kako Stack Overflow funkcionira ili bi trebao funkcionirati.

Ne želim reći da je reputacija beskorisna. To jednostavno ne znači šta znače administratori Stack Overflow-a ili šta bi reč "reputacija" trebalo da znači. Shvatio sam da je reputacija mjera uticaja. Razmotrite dva hipotetička odgovora objavljena na stranici:

  • Jedna o uobičajenoj git operaciji. Napisao sam odgovor u tri reda za dvije minute koristeći Google.
  • Drugi je o teoriji isprepletenih grafova. Možda samo stotinu ljudi u cijelom svijetu može odgovoriti. Napisao sam nekoliko pasusa i primjer koda koji objašnjavaju problem i kako ga riješiti.

U pet godina, prvi odgovor je pregledan 5 miliona puta i dobio je 2000 glasova. Drugi odgovor je pogledan 300 puta i dobio dva oskudna glasanja.

U određenoj mjeri ovo je vrlo nepošteno. Zašto nagrađivati ​​nešto što je bilo na pravom mjestu u pravo vrijeme? (nije sve određena srećom; razumijevanje pravila igre također igra veliku ulogu). S druge strane, prvo pitanje je zapravo pomoglo mnogo više ljudi od drugog. Možda je vrijedno prepoznati da, na neki način, priznanje vodi gomilanju „ugleda“?

Stoga smatram da je „reputacija“ na Stack Overflow-u neka vrsta mjere uticaja. Prava reputacija se ne može mjeriti samo poenima, ona dolazi iz zajednice. Čije savjete slušam, ko pomaže drugima, kome vjerujem? Možda će sve to biti različiti ljudi, ovisno o tome da li pišem na PHP-u ili za iOS.

Uz to rečeno, ne znam šta bi Stack Overflow trebao učiniti u tom pogledu. Da li bi korisnici bili jednako motivirani da umjesto „reputacije“ zarađuju „lukave poene“? Hoće li korisnici ostati na istom nivou ako uopće ne postoji bodovni sistem? Mislim da nije. A mit da je „reputacija“ na Stack Overflow-u ekvivalentna stvarnoj reputaciji koristi ne samo samom sajtu, već i njegovim najaktivnijim korisnicima. Pa, zaista, ko ne voli da povećava svoju reputaciju?

Ne, kao što se najčešće dešava u životu, da biste dobili pravu predstavu o tome šta se dešava, morate analizirati ne samo brojeve. Ako objava ima 10 hiljada poena na Stack Overflowu, onda pogledajte kako ova osoba komunicira, koja pitanja i odgovore objavljuje. I u svim, osim u izuzetnim slučajevima, imajte na umu da je malo vjerovatno da će rezultati Stack Overflowa sami po sebi ukazivati ​​na bilo šta osim na sposobnost osobe da koristi stranicu. A prema mom iskustvu, često o tome i ne pričaju.

Ne bih bio produktivan bez Stack Overflowa

Svaki put kada treba da uradim nešto komplikovano u git-u, idem na Stack Overflow. Svaki put kada mi treba nešto jednostavno u bash-u, idem na Stack Overflow. Svaki put kada dobijem čudnu grešku u kompilaciji, idem na Stack Overflow.

Nisam produktivan bez IntelliSense-a, pretraživača i Stack Overflow-a. Sudeći po nekim knjigama, to me čini veoma lošim programerom. Vjerovatno bih pao na puno testova i ne bih riješio puno problema na ploči. Neka bude tako. Ozbiljno, svaki put kada koristim .sort u JavaScript-u, moram da tražim 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 nevjerovatan alat. Samo budala ne bi koristila sve alate koji su mu dostupni. Pa zašto ne bi bio unutrašnja budala kao ja? Sačuvajte svoje moždane resurse za važna znanja, kao što je pamćenje svih zapleta serije Seinfeld ili smišljanje sofisticiranih kalambura (koje tako nedostaju u ovom članku, ali će biti mnogo drugih potpuno drugačije prirode).

Stack Overflow je čudo

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

Čudo je sama činjenica postojanja i rezultat rada Stack Overflowa. Siguran sam da ne ispadne sve onako kako su kreatori zamislili, ali oni pokušavaju. I pored svih nedostataka, stranica već dugi niz godina pomaže ogromnom broju ljudi, uključujući i mene.

Stack Overflow neće trajati vječno. Jednog dana će doći nešto bolje. Nadamo se da je ovo nešto što će naučiti iz grešaka Stack Overflowa i izvući najbolje iz njega. Do tada, nadam se da ovu stranicu nećemo uzimati zdravo za gotovo. Ovo je i orijentir i životna zajednica, koja se stalno popunjava novim ljudima. Ako vas ovo brine, zapamtite da je sve ovo vrlo krhko, pa čak i male akcije - poput pomaganja dobronamjernim, ali još uvijek neukim pridošlicama - mogu imati pozitivan učinak. Ako kritikujem ovu stranicu, to je samo zato što mi je stalo i što znam kako da je poboljšam.

PS

Još sam bio školarac kada sam došao u Stack Overflow. Upravo sam počeo da pišem (ES5!) JavaScript u Eclipse-u, i činilo se da 90% pitanja počinje sa „Korišćenje jQueryja, samo...“. I iako nisam znao šta radim, stranci su provodili svoje vrijeme pomažući mi. Mislim da to tada nisam baš cijenio, ali nisam zaboravio.

Ljudi će uvijek željeti da Stack Overflow bude nešto drugačije: stranica sa pitanjima i odgovorima; alat za rješavanje kućnih problema; životni standard programiranja. I za mene je ova stranica, uprkos svom rastu i nedostacima, u svojoj srži otvorena zajednica u kojoj stranci pomažu jedni drugima da uče i usavršavaju se. I to je super. Drago mi je što sam bio dio Stack Overflow-a posljednjih 10 godina i nadam se da ću tako nastaviti. Želim da naučim onoliko novih stvari u narednoj deceniji kao iu prethodnoj deceniji.

izvor: www.habr.com

Dodajte komentar