Postoji specifična vrsta tehnološkog sadržaja koje sam se zasitio.
Ona vrsta gde je neko „napravio SaaS za vikend“ ili „prešao put od ideje do 10.000 dolara MRR-a za 30 dana“.
Ona vrsta koja čini da izgradnja softvera izgleda kao montažna sekvenca: brzi rezovi, dramatična muzika, neizbežan uspeh. Ovo nije ta priča.
Ovo je oko 680 sati kodiranja nakon smena u skladištu. Četiri kompletne rekonstrukcije.
Laptop koji redovno dostiže 94°C.
I dobijanje otkaza tri dana pre Božića. Neurednije je. Sporije je.
I mislim da je bliže onome kako zgrada zapravo izgleda za većinu nas.
Postavka o kojoj niko ne priča
Pre devet meseci, preselio sam se iz Poljske u Holandiju. Ne zbog startapa. Ne zbog tehnološke uloge.
Za posao u skladištu – sakupljač porudžbina u distributivnom centru.
Vrsta posla gde hodate 15-20 kilometara dnevno između polica, skenirate barkodove i utovarujete palete na kamione.
Leđa su me bolela. Noge su me bolele. Moji snovi da budem „pravi programer“ delovali su veoma daleko.
Ali svake noći, nakon što bi se smene završile, otvarao bih svoj laptop, mašinu iz 2014. koja je zvučala kao mlazni motor i redovno pretila da mi zapali sto, i programirao bih.
Pravio sam PC Workman
alat za praćenje sistema nastao iz jednostavne frustracije:
postojeći alati vam govore da je vaš procesor na 87%, ali vam ne govore zašto.
Koji proces? Koja aplikacija u pozadini? Da li je Chrome opet Chrome?
Ono ažuriranje Windows-a koje radi tiho?
Želeo sam alat koji objašnjava, a ne samo prikazuje. Jednostavan koncept.
Izvršenje se pokazalo sve samo ne to.
Prva rekonstrukcija: Voleti svoje smeće.
Moja prva verzija je, objektivno, bila užasna.
Nisam to znao u to vreme. Bio sam ponosan na to.
Dodao sam emodžije indikatore svuda jer sam mislio da izgledaju „moderno“. Napravio sam panele za skrolovanje za svaku metriku.
Natrpao sam 15+ funkcija jer više funkcija znači bolji proizvod, zar ne? Pogrešno.
Dve nedelje svakodnevne upotrebe otkrile su sve.
Emodžiji su učinili imena procesa nečitljivim. Skrolovanje je bilo iscrpljujuće.
Funkcije su se takmičile za pažnju, i nijedna od njih nije pobedila.
Obrisao sam skoro sve što sam napisao. Petnaest hiljada redova, nestalo.
Lekcija je bila bolna, ali suštinska: „radi“ i „dobro“ nisu sinonimi.
Kod koji radi nije isti kao kod koji biste zapravo želeli da koristite.
Druga rekonstrukcija: Zamka arhitekture Klasična prekomerna korekcija.
Ako je moja prva verzija bila previše neuredna, moja druga bi bila besprekorna.
Arhitektura vođena događajima. Modularni sistem dodataka. Jasno razdvajanje briga.
Sve o čemu čitate u blogovima o softverskom inženjerstvu.
Rezultat je izgledao kao mobilna aplikacija… loša mobilna aplikacija, koja radi na desktopu. Struktura je bila prelepa.
Korisničko iskustvo nije bilo. Takođe sam napravio svoju najskuplju grešku tokom ove faze.
Proveo sam dve nedelje gradeći automatsku kontrolu ventilatora.
Uređivači krivih prevlačenjem i ispuštanjem. Pregledi u realnom vremenu. Elegantan kod.
Zatim sam pokrenuo odgovarajuće bezbednosne testove i shvatio: jedna pogrešna konfiguracija može da sprži korisnikov GPU.
Obrisao sam celu funkciju.
Dve nedelje rada, nestale.
Dvadeset devet funkcija doživelo bi istu sudbinu pre nego što je ovaj projekat isporučen.
Noć kada se sve promenilo
3 ujutru. Laptop vrišti na 34°C.
Upravo sam završio 10-časovnu smenu u skladištu. Buljio sam u svoju Git istoriju – preko 200 kommita.
Većina njih je rekla stvari poput „popravi“, ili „možda ovaj put“, ili „zašto ovo ne radi?“
I postavio sam sebi pitanje koje sam izbegavao: Šta zapravo pravim? Ne na način odustajanja.
Na iskren, brutalan način procene. Pravio sam alat za ljude koji žele da razumeju svoj računar.
Ali sam ga pravio kao neko ko pokušava da dokaže da može da piše kod.
To su potpuno različite motivacije. Proizvode potpuno različite proizvode.
Te noći sam odbacio korisnički interfejs. Ponovo.
Treća rekonstrukcija: Pravo pitanje.
Konačno sam postavio pravo pitanje…
ne „koje funkcije mogu da dodam?“ već „šta neko zapravo treba da vidi?“ Odgovor je bio sramotno jednostavan.
CPU i RAM jedan pored drugog. Jedan pogled, puna slika. Bez skrolovanja.
Gradientne pozadine za procese. Gornji korisnik dobija najtamniju nijansu. Trenutna vizuelna hijerarhija bez čitanja brojeva.
Kliknite da istražite. Sumnjiv proces? Kliknite. Detalji.
Nema navigacije kroz meni. Obrisao sam 15.000 redova tokom ovog refaktorisanja.
Poraslo je sa 39.000 na 24.000. Proizvod je postajao sve bolji kako sam uklanjao kod.
To je delovalo kontraintuitivno. Bilo je istina.
- decembar. Tri dana pre Božića.
Agencija je pozvala.
„Proba nije uspela.“ Bio sam u privremenom smeštaju u zemlji koja nije bila moja.
Moji psi su bili u Poljskoj. Moja porodica je bila u Poljskoj. Moj laptop je umirao. A moj projekat je bio 70% završen.
Logičan odgovor: panika, fokus na preživljavanje, napuštanje sporednog projekta.
Šta sam uradio: započeo sam obnovu #4.
Možda je to posvećenost. Možda je ludilo. Verovatno oboje.
Šta vas ograničenja zapravo uče.
Evo šta sam naučio tokom te faze obnove dok sam bio nezaposlen: Ograničenja nisu prepreke. Ona su filteri.
Izgradnja na hardveru koji umire značila je da svaka funkcija mora da opravda svoju RAM memoriju.
Nije dozvoljeno preopterećenje. Svaka funkcija je zaslužila svoje mesto ili je bila ukinuta.
Izgradnja nakon iscrpljujućih smena značila je da nema vremena za elegantan kod koji nije rešavao stvarne probleme.
Isporuka ili spavanje. Nema srednjeg puta. Samo izgradnja je značila da je svaka greška bila moja. Svaka pobeda je bila dokaz da nisam gubio vreme.
Nema tima iza kog bih se mogao sakriti. Ograničenja me nisu usporila.
Učinili su proizvod boljim.
Brojevi koje niko ne deli: 680+ sati kodiranja.
Nakon smena u skladištu. Vikendom. Praznicima. 39.000 napisanih redova. 24.000 zadržano. Skoro 40% obrisano. 4 kompletne rekonstrukcije korisničkog interfejsa.
Moj je nestao oko 2. nedelje. Ono što je ostalo bila je tvrdoglavost. „Radni kod“ je zamka. Moja prva verzija je radila savršeno. Takođe je bila smeće za korišćenje. Brišite više. Najbolji kod je često kod koji ne isporučite. Ograničenja pomažu više od resursa. Ona teraju na fokus. Pojavljuju se kada nije zabavno. To je jedina razlika između isporučenih i napuštenih.
Trenutni status: PC radnik.
Zato što nisam odustao. Ne znam da li ova priča ima srećan kraj.
Još uvek sam usred toga.
Ali znam ovo: bliži sam isporuci nečeg stvarnog nego ikad pre.
I to sam naučio na teži način = kroz 680 sati, 4 rekonstrukcije, laptop koji se umire i otkaz tri dana pre Božića.
Ako nešto gradite sami i to vam se čini bolno sporim, nemam magični savet. Samo ovo: taj osećaj je normalan. Tako zapravo izgleda gradnja. Nastavite dalje.
