Pomoz' Bog!

5 min

Kako je religija učinila da promenim podnaslov na LI.

Nije da mi je zapis ispod imena sad nešto posebno važan. Važnije je ono ispod čega ime stoji.

Nego, priča ne počinje ovde. Mora da se premota malo unazad, taman na mesto gde po ko zna koji put refaktorišem isti kod. Projekat je živa stvar i kako raste, tako nastaju novi obrasci. Postojeći kod mora da se menja, kažem sebi. Ali kako da to objasnim timu? Sutra će doći na posao (jer samo noću se radi onaj pravi, tektonski refaktoring, zar ne?) i zateći - opet - nove promene. Nisu se “ohladile” ni prethodne, kada eto novih. Znam da će prevrnuti očima meni iza leđa odmah nakon ne-baš-ubedljivog objašnjena rezona, ako se uopšte budu udostojili da saslušaju.

Štos u priči je da tim samo umišljam, jer ne postoji. Imaginarni tim čine samo moji strahovi. Nesigurnost u tome da je izmena u koju jesam siguran odraz mog nerazumevanja programiranja, posla i, time, vascelog svemira. Kako to da nisam odmah napisao sve kako treba? Koliko beše decenija gotovo svakodnevnog pisanja koda imam? Zašto onda toliko česte izmene?

(Liči na dobro mesto da uvedemo božanstva u priču? Ne još; molim za strpljenje, uskoro.)

U strahu možda jesu velike oči, ali ne vidiš mnogo dalje od sebe. Suočavanje sa problemom ovde znači razumeti zašto tim tako razmišlja. Zašto ne volimo izmene u kodu? Da li ih izjednačavamo sa slabošću? Zašto se refaktorisanje doživljava kao žulj u cipeli, tehnički dug, kugla i lanac?

(Možda ovde? Ne još.)

A da bi to razumeli, moramo se vratiti na izvor, švenk na protagonistu. Otkuda je došla namera za promenom? Da ostavimo po strani neprestano dalje razumevanje zahteva… promene postojećeg koda su i dalje tu. Kakvo je opravdanje iza izmena? Pročitano iz knjiga? Novi podkast? Dizajn obrasci? John Malkovich je tako rekao? Iskustvo? Popadali testovi? Formalan dokaz?

Ni jedno od navedenog.

(Sada. Vreme je da uvedemo božansko u priču. Za razliku od latinske poslovice, ne rešava stvar.)

Javilo mi se.

Developija i Razvojvera

Programeri na početku 21. veka žive utopijski politeistički svet. Zajednički imenitelj digitalnih vernika je samo čin verovanja: razvojvera. Skoro pa sve ostalo se razlikuje: koliko je božanstava, koja su, kako se praktikuju i koja su ona prava.

Iskustvo zna da bude izvor taštine. Vredi, ali ima rok; ne prestajemo da razvojverujemo da nas i dalje drži na pravom, onom jedinom, putu. Uporno nastavljamo kao da se ništa od spoljnih parametera ne menja: ono što je radilo pre, mora da radi i sada i zauvek.

Razvojverujemo da smo iz prve pogodili baš sve u projektu. Nisam čuo da je bilo ko odbacio prvu verziju da bi napisao drugu, a potom i treću. Ne, dosta je prvo javljanje i prikazanje, ma čak i nagoveštaj; samo teraj dalje.

Razvojverujemo da umemo da prepoznamo dobro i dobro prepoznamo uvek i u svakom trenutku. Dok god se držimo onoga što razvojvera propoveda, nema greške, lakše je. Kada prođe kanonizaciju, tehnologija postaje sveta i opravdana.

Razvojverujemo u alatke, procedure, metodologije, okvire; nikada nas neće izneveriti, ma kakva god da je prilika. Uvek su rešenje i svakoliko utoličenje mudrosti.

Koliko tek vračeva, svetaca, apostola, arhajskih trijada, poglavica i sveštenika postoji… Razvojverujemo im bez trunka sumnje. Svaki programer svoje idole slavi, jer oni najbolje tumače knjigu promena i predviđaju budućnost izbora koje nisu ni videli.

Velikim crkvama FAANG-a se prinose žrtve. “Tamo rade najbolji inženjeri,” prenosi se mit s kolena na koleno, gleda im se u skute s divljenjem, klikće s ljubavlju. Konačan cilj je sjedinjenje s velikim crkvama, širenje vere, broja vernika i dobijanje vizit kartice kao dokaza o žrtvi. Ako to ne dobacimo, onda bar da im budemo što više nalik.

Razvojvera nije nešto što se propituje i preispituje. Razumna objašnjenja i potraga za odgovorom “zašto” jesu jeres. A znamo šta s jereticima treba činiti: obasipati nestrpljivim komentarima na LI i ne lajkovati.

Zašto je i utopija? Verujemo da je razvojvera dovoljan i jedini odgovor na sve.

LI

Javilo mi se, dakle, kako promeniti kod na ono što mi se ukazalo kao bolje. Jedino objašnjenje koje zapravo mogu da pružim je da mi… (sledi ironičan krešendo)… verujete. Mogu samo da se pravdam vremenom provedenim razmišljajući o razvoju softvera. Imam odgovore na mnoga pitanja, ali sam siguran i da mnoge ne želite čuti. Među njih spada odgovor “da” na pitanje: “može li i dalje bolje?”; kako odmičete tako se prostranstvo uvida povećava. No na kraju, to su samo moji uvidi. Ono što, na žalost, ne mogu da pružim je dokaz da sveukupni kod postaje kvalitetniji. Mogu da pričam o visokoj koheziji, maloj među-zavisnosti (gotovo svi principi su izvedeni iz ovih); opet je sve samo rekla-kazala. Ili rekla-zaboravila.

Razvoj softvera je nedokaziv, nepotpuni zadatak; čak ni empirijska aktivnost, jer se iskustvo ne sakuplja.

Dugo vremena je moj potpis na LI glasio “Software engineer.” Na sva usta se trudim da objasnim da je u pitanju nepretenciozni životni poziv posvećen preciznom softverskom razvoju vrednosti. Softverski inženjer je taj koji znanje pretvara u alatku zarad omogućavanja vrednosti.

Štos je što smo nauku zamenili pukim verovanjem, a fokus prebacili na razvoj radi razvoja, umesto na delotvornost.

Vreme je da prihvatim: nisam nikakav inženjer. Mogu da negujem taj sentiment, tragam za boljim obrascima, nosim bele košulje sa crnom, uskom kravatom, ali ostajem samo preplavljeni prepolovljeni razvojvernik, koji slavi svoja božanstva, neguje digitalne rituale i igra se staklenim đinđuvama. Ne bavim se nikakvim naukama: samo proizvodim kod rukama.

Potpis na LI je promenjen; vreme je za molitvu, kurzor opominjuće blinka.

🧧
Nisam definisan svojim stavovima. Stavove usvajamo, menjamo, nadograđujemo, ali oni ne čine nas same. Manje je važno da li se slažemo, koliko da se razumemo.