Stack Overflow (2008)

2008. dva blogera pogledaju forume iz 2003. i Experts Exchange s paywallom na odgovorima, pa odluče da znanje o kodu treba biti besplatno, rangirano i, jebemu, gamificirano.

poglavlje 15/2420 min čitanja2001 – 2010
ti@kronika:~$ ./sviraj k5_15_stack.mp3

# da, poglavlje ima pjesmu. ne, nitko ne zna zašto.

Godina je 2008., i imaš problem s kodom. Ništa dramatično — null pointer (program pokušava posegnuti za nečim što, tehnički, ne postoji, kao da tražiš ključeve u džepu koji nemaš), glupa greška, tri sata izgubljena zbog jednog krivog navodnika. Guglaš. I guglanje te, kao neka digitalna sudbina, dovede na jedno od dva mjesta, ovisno o tome koliko si te večeri imao sreće.

Prvo mjesto je forum. Star, trom, dizajniran nekad 2003., s temom koja se zove nešto poput »PROBLEM S KONEKCIJOM NA BAZU — HITNO«. Otvoriš je s nadom. Prvi post postavlja točno tvoje pitanje, riječ po riječ, kao da je taj čovjek prije pet godina sjedio u tvojoj glavi. Srce ti zaigra. Scrollaš dalje. Drugi post: »i ja imam isti problem«. Treći: tišina. Zadnji post, dvije godine kasnije, glasi: »riješio sam, nema na čemu«. To je to. Cijela nit. Netko je pronašao rješenje, zatvorio laptop i otišao dalje sa svojim životom, a tebe je ostavio da visiš u internetskoj praznini kao žrtvu najkraće moguće poante. Ovo nije anegdota — ovo je trauma cijele jedne generacije programera, ponavljana toliko puta da je prestala biti smiješna i postala nešto poput vremenske prognoze: očekivano, neizbježno, iritantno.

Drugo mjesto je gore. Ima ime koje, ako ga pročitaš brzo i bez razmišljanja, pročitaš pogrešno — i baš ti ta omaška unaprijed govori sve što treba znati o iskustvu koje slijedi. Experts Exchange. Google te dovede točno na odgovor koji trebaš, vidiš prvu rečenicu, čak i naslov teme s rješenjem — i onda, baš kad pomisliš da si spašen, stranica se zamuti, prekrije reklamama i formom za prijavu, i traži pretplatu da bi ti otkrila ono što je, tehnički, već ispisano na stranici koju upravo gledaš. To nije baza znanja. To je znanje zarobljeno iza stakla, s cjenikom zalijepljenim na vrata.

Negdje u pozadini toga, dvojica ljudi s vlastitim blogovima — koje pola industrije čita kao svetu literaturu, jer to u tom trenutku doista i jest sveta literatura [vidi poglavlje 8] — gledaju isti krajolik i vide isto što i ti: forume-groblja i naplatu za ono što bi trebalo biti besplatno. Umjesto da napišu još jedan bijesan post o tome, kažu si jednu rečenicu koja će za par godina promijeniti svakodnevicu milijuna ljudi koji tipkaju kod: znanje se ne skriva, znanje se rangira, i — zašto ne — znanje se malo i gamificira, kao da je pitanje o pokvarenom pokazivaču u kodu (onom dosadnom trenutku kad program pokuša doći do nečega što ne postoji i sve se sruši) zapravo razina u igrici koju svi zajedno igraju, a ne znaju to.

Nitko od njih dvoje te večeri 2008. nije znao da grade novi dom za cijelu jednu profesiju. Mislili su da rješavaju iritaciju. Ispada da je iritacija, kad je dovoljno univerzalna, najbolji poslovni plan koji postoji.

Taj forum iz davnih dana, negdje duboko u noć, s onim čovjekom koji je otišao dalje sa svojim životom bez objašnjenja — cijela jedna generacija programera ima ga urezanog u kosti.

Alternativa je bila gora. Experts Exchange, plati ili gledaj prazno polje. (Ime stranice, čitano bez crtice, krije u sebi jednu urnebesnu igru riječi — o tome više za par redaka.)

Jeff Atwood i Joel Spolsky pogledali su ovaj krajolik i zaključili nešto naizgled trivijalno: problem nije tehnologija, problem je dizajn. Forum je napravljen za razgovor. A programer u tri ujutro ne želi razgovor. Ne želi zajednicu, ne želi debatu o tome je li njegovo pitanje dobro postavljeno, ne želi trideset odgovora od kojih se dvadeset devet svađaju međusobno. Želi jednu stvar. Rješenje. I želi ga odmah, ne na četvrtoj stranici teme koja je skrenula u vječnu, besmislenu svađu je li kod ljepši s tabulatorima ili razmacima.

Pa su dizajnirali stranicu koja to i radi. Stack Overflow, lansiran 2008., na prvi pogled izgleda kao forum, ali ispod haube je nešto sasvim drugo — mašina za konvergenciju. Pitanje gore, odgovori ispod, i svaki odgovor se glasa gore-dolje kao da je na sudu javnog mnijenja. Najbolji odgovor se ne skriva na petoj stranici teme — dižeš ga glasovima do vrha, a onda ga onaj tko je pitao može i formalno okruniti zelenom kvačicom. Prihvaćen odgovor. Kraj priče. Nema traženja kroz šesnaest stranica beskonačnih internetskih svađa (»flame warova«, kako se to zove kad se rasprava pretvori u vatru bez pobjednika) o tome čiji je pristup elegantniji.

I onda, kao da to nije bilo dovoljno pametno, ubacili su još jednu stvar koju smo već vidjeli negdje — sjećaš se wiki-generacije iz trećeg poglavlja, ono da svatko može urediti svašta? Ista logika, ovdje na steroidima. Tvoje pitanje od prije šest godina, s pogrešnim naslovom i tipfelerom u kodu, netko drugi danas može urediti, popraviti, doraditi. Odgovor ne trune. Živi, mijenja se, poboljšava se dok ti spiš. Sadržaj nije vlasništvo, sadržaj je zajednički organizam koji se sam čisti.

A da bi taj organizam imao razlog da se čisti sam, trebala je valuta. Ne novac — reputacija. Brojka pored tvog imena koja raste kad ti drugi korisnici glasaju odgovor gore — svaki od njih klikne na strelicu prema gore ili prema dolje pored tvog odgovora, i taj klik fizički pomiče broj bodova i mijenja poredak na stranici, baš kao da cijela zajednica glasa nogama koji je odgovor bolji. Ta brojka te otključava za sve više moći na stranici: prvo možeš komentirati, onda uređivati tuđe postove, onda glasati za brisanje, na kraju postaješ nešto poput neplaćenog moderatora čitavog interneta programerskog znanja. Uz to bedževi — sitne digitalne medalje za tisuću ovoga, deset tisuća onoga — sustav nagrađivanja tako čist i tako djelotvoran da bi mu se posavidio bilo koji dizajner mobilnih igara.

I radilo je. Ne pola-pola, ne uz škripu — radilo je fenomenalno. Ljudi su danonoćno odgovarali na pitanja stranaca, besplatno, samo za brojku i medalju i osjećaj da su negdje na tom internetu — vidljivo — pametni. Gamifikacija znanja, i pogodi što, upalila je iz prve. Barem u početku. Jer svaki sustav koji nagrađuje brzinu i količinu, prije ili kasnije nauči ljude da igraju sustav, a ne da rješavaju probleme — a to je priča za sljedeći dio ovog poglavlja.

Eksplozija korisnosti
§ 02

Eksplozija korisnosti

Ono što se dogodilo dalje nije bilo postupno prihvaćanje, nego eksplozija — i ne u metaforičnom smislu, nego u smislu da 2006. možda nisi znao da Stack Overflow postoji, a već 2010. si ga koristio deset puta dnevno bez da si to ikad svjesno odlučio. Nisi tražio Stack Overflow. Tražio si zašto mi Python baca IndexError na liniji koja očito nema indeksa, Google je izbacio rezultat, kliknuo si — i eto te tamo. Opet.

Razlog je banalan i genijalan istovremeno: Google je volio Stack Overflow, a Stack Overflow je zaslužio da ga se voli. SEO — ono umijeće (često prljavo) da natjeraš Google da tvoju stranicu stavi što više gore u rezultatima pretrage — danas najčešće asocira na farme spama i deset reklama prije nego dođeš do recepta za kolač. Na Stack Overflowu je taj mehanizam, iz sasvim drugog razloga, radio kako treba, bez trikova. Format pitanje-odgovor, s glasovima koji su birali najbolji odgovor, stvarao je stranicu koju je bilo lako strojno indeksirati i koja je — što je rjeđe — stvarno vrijedila klika kad bi je Google indeksirao. Google ne voli sadržaj zato što je lijepo napisan; voli ga zato što ljudi na njemu ostaju, ne odlaze odmah nazad, ne traže dalje. Stack Overflow je taj signal slao dosljedno, godinu za godinom, milijun pitanja za milijun pitanja, dok nije postao gravitacijsko središte cijelog programerskog interneta. Ne trik. Samo posljedica dizajna koji je stvarno rješavao problem, pa je internet to primijetio na svoj tupi, statistički način.

Za koju godinu situacija je postala apsurdna u onom dobrom smislu: koje god pitanje da si postavio — NullPointerException, kako centrirati div (ozbiljno, ovo je bilo svoje poglavlje frustracije), zašto for-petlja ne izlazi kad misliš da bi trebala — prvi rezultat na Googleu bio je Stack Overflow. Ne drugi, ne treći nakon dva sponzorirana linka. Prvi. To se dogodilo tako dosljedno da je programerska kultura to pretvorila u šalu koja odavno nije šala: kruži i ideja o knjizi — fizičkoj, s koricama — koja bi se zvala nešto poput »Kod copiran sa Stack Overflowa«, s praznim stranicama unutra. Fora radi zato što svi znaju da bi bila istinita. Svaki programer, od junior stažista do onog tipa koji ti je napisao operativni sustav koji koristiš, ima trenutak u karijeri kad je copy-pasteao rješenje s ekrana, promijenio ime varijable da izgleda kao njegovo, i pustio da se to smatra radom. Nitko se toga ne stidi javno, ali svi se smiju istoj šali. To je ono najbolje što humor može učiniti — pretvoriti zajedničku sramotu u zajedničko olakšanje.

Postoje čak i pokušaji da se izmjeri koliko je Stack Overflow zapravo uštedio vremena i produktivnosti programerima širom svijeta, koliko god takve brojke treba uzeti s dozom sumnje jer metodologija tu obično znači anketirati programere koliko su nešto uštedjeli, a programeri su, generalno, loši u procjeni vlastitog vremena. Neka od tih istraživanja spominju desetke minuta dnevno po programeru koje bi inače otišle na čitanje dokumentacije, listanje starih forumskih rasprava ili — u najgorem slučaju — ponovno izmišljanje kotača koji je netko drugi već lijepo objasnio prije tri godine. Pomnoži to s desecima milijuna aktivnih programera na planeti, kroz petnaestak godina, i dobiješ broj koji zvuči nestvarno, nešto u rangu milijuna radnih sati godišnje spašenih zahvaljujući otvorenom, besplatnom, javno indeksiranom znanju. Broj nije precizan. Ali smjer je.

Uspon je, dakle, bio pravi uspon — ne hype koji se rasplinjuje na prvi pad dionica, nego korisnost koja se doslovno uklopila u svakodnevnu naviku milijuna ljudi bez da ju je itko morao reklamirati. Ali svaka priča o usponu ovakve strogosti mora prije ili poslije stići do dijela gdje pravila koja su omogućila kvalitetu počinju gušiti baš one ljude koji tu kvalitetu trebaju najviše. I taj dio dolazi odmah.

Kultura: strogost kao feature i bug
§ 03

Kultura: strogost kao feature i bug

Svaka zajednica koja naraste dovoljno brzo dođe do istog trenutka: onog kad prestane biti skup ljudi koji se međusobno poznaju i postane sustav koji mora obraditi tisuće upita dnevno. Stack Overflow je taj trenutak dočekao negdje oko 2010., i tu priča, koja je do sad bila čista uspješnica, dobiva svoju sjenu. Jer sustav koji obrađuje tisuće upita dnevno mora imati pravila, a pravila netko mora provoditi — na Stack Overflowu to su moderatori, i tu vrijedi odmah razbiti zabludu: nisu to plaćeni djelatnici tvrtke u nekom uredu, nego obični korisnici koji su nakupili dovoljno reputacije (onih bodova od glasova o kojima smo već pričali) da im platforma dodijeli posebne ovlasti — zatvaranje, brisanje, uređivanje tuđih pitanja. A pravila, kad ih primjenjuju umorni volonteri s previše moći i premalo strpljenja, imaju tendenciju da s vremenom postanu oružje.

Najpoznatija žrtva te tendencije zove se closed as duplicate — »zatvoreno kao duplikat«. Mehanika je, na papiru, genijalna: ako je pitanje već postavljeno i odgovoreno, nema smisla imati istu raspravu dvaput — zatvoriš novo pitanje, preusmjeriš korisnika na staro, baza znanja ostaje čista. U teoriji, uredništvo. U praksi, tisuće ljudi koji su tek stigli na stranicu, s pitanjem koje je NJIMA bilo novo, dobili su hladan pečat, link na temu iz 2011. koja rješava sedamdeset posto sličan problem, i nulu odgovora na ono što ih je stvarno mučilo. Zatvoreno. Duplikat. Sljedeći.

I moramo ovdje biti pošteni, jer lako je ispričati ovo kao priču o zlim moderatorima koji su gazili nevine početnike — a istina je, kao i uvijek, neugodnija i dosadnija. Kvaliteta ZAHTIJEVA strogost. Baza znanja od milijun necjelovitih, polovičnih, kontekstualno mutnih pitanja, bez ikakve kurative, bila bi neupotrebljiva balega — digitalna verzija onog razbacanog foruma iz 2003. koji smo spominjali na početku ovog poglavlja. Netko mora reći ne. Netko mora rezati. Sustav koji ne filtrira, utopi se u sebi za par godina.

Tako je nastao fenomen koji su korisnici sami prekrstili u RTFM s bodovima — Read The Fucking Manual (»pročitaj taj jebeni priručnik«), ali ovaj put s gamifikacijskim sustavom koji tu grubost aktivno nagrađuje. Jer sjeti se mehanike iz prošle sekcije: reputacija se dobiva glasovima na pitanja i odgovore, prihvaćenim odgovorima, uređivanjem — a tek dovoljno visoka reputacija otvara moć da zatvaraš pitanja drugima. Netko s dovoljno bedževa i dovoljno slobodnog vremena mogao je postati samoproglašeni čuvar kapije, i svaki closed as duplicate mu je donosio malu, opipljivu potvrdu vlastite važnosti. Sustav osmišljen da nagrađuje korisnost nagrađivao je, ako si dobro pipnuo formulu, i čist bahatizam obučen u odjeću kvalitete.

Rezultat je bio predvidljiv i mjerljiv: novajlije, upravo ljudi kojima je stranica najpotrebnija, dočekivali su birokratski hladan tim. Prvo pitanje na Stack Overflowu za mnogog studenta programiranja postalo je rite de passage sličniji vojnoj obuci nego dobrodošlici — postaviš pitanje, čekaš, gledaš kako ga netko označi kao loše formulirano, kao duplikat, kao „ne pokazuje dovoljno truda”, i onda, ako imaš sreće, dobiješ jednu rečenicu pomoći ispod pola stranice kritike tvog stila pisanja koda. Interna istraživanja same platforme, kasnije objavljena javno, priznala su ono što je zajednica godinama šaputala: nove korisnice i korisnici bježe sa stranice brže nego što stignu dobiti odgovor, i to posebno vrijedi za žene u programiranju, kojima je ton diskusije nerijetko bio primjetno hladniji.

Stack Overflow to nije ignorirao — bilo bi lakše ispričati priču da jest. Pokrenuli su inicijative s imenima ravno iz priručnika za korporativnu kulturu: „Be Nice” politiku, programe dobrodošlice u kojima su iskusniji korisnici trebali aktivno dočekivati novajlije s ohrabrenjem umjesto s pečatom osude, redizajn cijele stranice 2018. godine s ciljem da izgleda manje kao sudnica i više kao pomoć. Rezultati su bili — osrednji. Kultura koja se skamenila kroz milijune interakcija ne popravlja se promjenom fonta na gumbu ni novim CSS-om, onim kodom koji određuje kako stranica izgleda, za banner dobrodošlice.

I tu dolazimo do prave pouke ovog poglavlja, one koja se rimuje s pričom o Wikipediji iz trećeg poglavlja ove knjige: pravila skaliraju savršeno. Napiši smjernicu jednom, primjenjuje je milijun ljudi. Kultura — ton, empatija, ono neopisivo nešto što razlikuje strogog ali dobrog mentora od birokrata s markicom — ne skalira nikako. Ona se prenosi osobno, primjerom, iz generacije korisnika u generaciju korisnika, i u trenutku kad zajednica prijeđe iz stotina u milijune, taj prijenos jednostavno puca. Ono što je na malom forumu bilo „stariji kolega te ispravlja jer mu je stalo” na milijunskoj platformi postaje anoniman glas iz mračne dvorane koji te kaznenim bodovima podsjeća da nisi dovoljno tražio prije nego što si otvorio usta.

Stack Overflow je time postao živi dokaz jedne od najneugodnijih istina o internetu: sustav može biti istovremeno najbolja stvar koja se dogodila tvojoj struci i mjesto gdje bi se, da znaš unaprijed kako će te dočekati, dvaput predomislio prije nego postaviš pitanje. Obje stvari su istinite. Nijedna ne poništava drugu.

Copy-paste programiranje kao fenomen
§ 04

Copy-paste programiranje kao fenomen

OK, sad ono što svi žele reći, ali malo drugačije nego što misliš. Negdje između trećeg i četvrtog milijuna odgovorenih pitanja dogodilo se nešto tiho, bez najave, bez press-konferencije: programiranje kao vještina promijenilo je definiciju. Ne šalim se. Ono što je nekad značilo „znati programirati” — imati u glavi sintaksu, algoritme, sve te rubove gdje se stvari lome — polako je klizilo prema nečem drugom: znati NAĆI. Znati koju kombinaciju riječi utipkati u tražilicu, znati prepoznati koji je od pet rezultata na Stack Overflowu onaj pravi, znati što u odgovoru s 47 glasova zapravo treba kopirati i što treba prilagoditi svom slučaju.

I to, dragi moj, nije mala promjena. To je promjena vrste posla. Umjesto da si arhiva, postao si indeksator arhive. Umjesto da pamtiš kako se u tri jezika parsira datum, pamtiš da postoji dobar odgovor negdje na internetu i da ga treba pronaći za otprilike devedeset sekundi. Neki bi rekli — degradacija. Ja bih rekao — specijalizacija. Čovječanstvo je odavno prestalo pamtiti brojeve telefona, pa nismo postali glupi, samo smo prebacili taj dio posla na telefon. Stack Overflow je bio taj prijelaz za znanje o kodu.

A onda — i ovo je važno — taj korak »znati naći« nastavio se dalje mutirati. Prvo si tražio ključne riječi. Onda si tražio konkretno pitanje, formulirano skoro kao rečenica, kao da razgovaraš s nekim. I tu je, ako malo zamisliš unaprijed, već postavljen skoro cijeli koncept: znati NAĆI bio je prijelazni oblik prema znati PITATI. I to ne pitati forum s tisuću tuđih ljudi koji možda odgovore za tri dana, nego nešto — ili nekog — što odgovara odmah. Predigra za asistente koji danas pišu pola tvog koda dok ti piješ kavu. O tome detaljnije kasnije u ovoj enciklopediji (Knjiga 7), ali zapamti ovu rečenicu, vratit ćemo se na nju: Stack Overflow je istrenirao generaciju programera da traže odgovore umjesto da ih pamte — i time, sasvim nesvjesno, istrenirao i modele koji će jednog dana tu istu generaciju učiniti nepotrebnom. Trening-set i žrtva, u istom tijelu. Ironija tako debela da bi mogla nositi ime.

I tu je, mislim, prava presuda, ako je uopće moguća: nije problem što kopiraš. Problem je razumiješ li što kopiraš. Copy-paste s razumijevanjem je ono što su programeri uvijek radili i zvali ga „učenje na primjeru”. Copy-paste bez razumijevanja je ono što je Stack Overflow, čisto statistički, olakšao milijunima ljudi da rade brže nego ikad — jer kad imaš odgovor s tri tisuće glasova i zelenom kvačicom, zašto bi gubio vrijeme čitajući dokumentaciju koja to isto objašnjava u petnaest puta više riječi?

Je li to onda pad ili evolucija? Iskreno — oboje, i to je poanta, ne izlika. Pad, jer je generacija programera izašla iz škole umijući izvrsno formulirati pitanje, a ne nužno rješavati problem bez njega. Evolucija, jer je ista ta generacija sposobna riješiti u jednom danu ono za što je prethodnoj trebao tjedan istraživanja po debelim knjigama koje više nitko ne kupuje. Presuda, kao i uvijek u ovoj enciklopediji, nije moja. Sjediš u poroti. Samo znaj da je isti sud, malo drugačijim riječima, izrečen i knjigama recepata, i kalkulatorima, i Googleu. Svaki put kad čovječanstvo prestane pamtiti nešto, netko negdje jauče da propada civilizacija. Civilizacija je, do sada, uporno preživljavala.

Zalazak u trijumfu
§ 05

Zalazak u trijumfu

I onda, negdje oko 2022., 2023., krivulja na grafu prometa krene dolje. Ne naglo, ne katastrofalno, ali dosljedno — kao kad primijetiš da ti stalni gost u kafiću sve rjeđe dolazi i pomisliš, ništa, valjda ima puno posla, a onda skužiš da je otvorio kafić dva ulaza dalje. Vrijeme se, gle čuda, poklapa gotovo do mjeseca s trenutkom kad je krajem 2022. svijetu postao dostupan ChatGPT, pa taj podatak, iako sam po sebi ne dokazuje ništa, teško da je slučajnost. Podaci koje su razni analitičari vrtjeli po objavljivanju pokazivali su padove prometa na Stack Overflowu od nekoliko desetaka posto u odnosu na vrhunac, godina na godinu, ovisno koga pitaš i koju metriku gleda — broj posjeta, broj novih pitanja, broj registracija. Brojke se razlikuju od izvora do izvora i treba ih uzeti s dozom opreza, ali smjer je nedvojben: manje ljudi dolazi tražiti odgovore na mjesto gdje su odgovori — desetljeće i pol — bili najgušće koncentrirani na cijelom internetu.

Zašto? Zato što ne moraš više otvoriti karticu, formulirati pitanje, provjeriti nije li duplikat, čekati da netko s dovoljno reputacije udostoji odgovoriti — samo pitaš model. On ti odmah, u prvom licu, uredno formatirano, objasni zašto ti null pointer exception puca baš na toj liniji. I evo paradoksa vrijednog cijele ove enciklopedije: taj model je to naučio uglavnom — ne isključivo, ali uglavnom — čitajući Stack Overflow. Milijune pitanja, milijune odgovora, milijune komentara tipa »ovo ti neće radit, probaj ovako«, sve to je bilo hrana. Baza znanja koja je desetljeće i pol strpljivo, glasovima i bedževima, filtrirala dobre odgovore od loših — upravo je time postala savršen udžbenik za nešto što će je, u konačnici, ugasiti.

Ono što je ironično — a ironija ovdje nije zloba, samo je tako ispalo — jest da je sam Stack Overflow bio zamišljen kao ubojica prijašnjeg sustava. Forumi su umrli jer je Stack Overflow bio bolji, brži, pretraživiji, gušći znanjem po kvadratnom centimetru ekrana. Sad se to isto događa i njemu, samo je ubojica ovaj put nešto što je iz njega izraslo, a ne nešto što je stajalo pored njega. Nije ga pobijedio konkurent. Pobijedila ga je njegova vlastita arhiva.

Poanta koju vrijedi ponijeti dalje kroz ovu enciklopediju, jer će se vraćati: znanje, kad ga pustiš na slobodu, ne ostaje slobodno zauvijek. Netko dođe, pročita cijelu knjižnicu u jednoj noći, i onda ti prodaje sažetak. Stack Overflow je to učinio forumima. Model je to učinio Stack Overflowu. Tko će to učiniti modelu — to je priča za neko od sljedećih poglavlja, ne za ovo.