Tehno Novo

Category: programiranje

  • Nacionalna država je stari softver. Šta se dešava kada ga prepišemo?

    Premotajmo unapred do 2025. Veći deo sveta i dalje radi na Governance OS 2.0, operativnom sistemu za nacionalne države koji je prvi put pokrenut pre vekova.

    Nadogradili smo svaki drugi kritični sistem u našim životima – od komunikacije do finansija – ali najvažniji radi na zastarelom kodu.

    Postoji negde oko 800 milijardi linija 60 godina starog COBOL-a koji pokreće kritični vladin i finansijski softver1. To je više linija antičkog koda nego što ima zvezda u Mlečnom putu.

    To je civilizacijski dug.

    U mom poslednjem tekstu tvrdilo se da je upravljanje najnovija klasa imovine. Ovaj tekst je prospekt za graditelje. Ako je upravljanje tržište, šta je proizvod?

    Vreme je za potpuno refaktorisanje. Ali da biste izgradili novo, morate razumeti staro. Morate posmatrati nacionalnu državu ne kao ideologiju, već kao tehničku arhitekturu.
    Governance OS 1.0: Monolitni mejnfrejm

    Pitč: Centralizovana kontrola za haotičan svet.

    Era: Od drevnih carstava do apsolutnih monarhija (oko 3000. p. n. e. – 1700. n. e.).

    Analogija: IBM mejnfrejm u zaključanoj, klimatizovanoj sobi.

    slika

    Arhitektura: Monolitna. Religija, zakon, vojska i ekonomija su svi bili sastavljeni u jedan, nerazdvojni binarni kod.
    Izvorni kod: Zatvoren. Kod je bio „božanska pravo“ ili „volja osvajača“. Samo jedan korisnik je imao administratorska prava: Sveštenik-kralj ili Car.
    API: Nema. Da biste interagovali sa sistemom, bila vam je potrebna fizička blizina administratoru. Niste mogli da „pozovete“ funkciju; morali ste da molite za publiku na dvoru.
    Skaliranje: Zasnovano na hardveru. Da biste proširili mrežu, kupovali ste više hardvera (vojnika) i osvojili više teritorije (čvorova).
    Korisničko iskustvo: Stabilno, predvidljivo i potpuno neslobodno. Sistem je nudio jednu uslugu: red. Cena je bila vaša apsolutna pokornost.

    Funkcionisalo je milenijumima. Ali monolitni se ne prilagođavaju; oni se raspadaju.
    Governance OS 2.0: Lokalni poslovni paket

    Predstavljanje: Prava, predstavljanje i stabilna valuta.

    Era: Moderna nacionalna država (oko 1700 – 2008).

    Analogija: Lokalni softverski paket Oracle ili SAP iz 1990-ih.

    slika

    Arhitektura: Naduveni monolit sa nekim API-jima. Osnovne funkcije su i dalje centralizovane, ali možete komunicirati sa njima putem definisanih protokola.
    Izvorni kod: Delimično otvorenog koda. Zovemo ga „Ustav“. Možete ga pročitati, ali ne možete lako poslati zahtev za povlačenje.
    API: Nespretni i sa velikom latencijom. Zovemo ih izbori, sudovi i lobiranje. Vremena odziva se mere godinama, a pozivi su skupi.
    Korisnički nalozi: „Državljanstvo“. Uključivanje se uglavnom vrši pri rođenju. Izlazak sa sajta (ofbording) je težak i skup. Ovo je krajnja vezanost za dobavljača.
    Ažuriranja: Zakrpe (zakonodavstvo) su spore i često uvode više grešaka nego što ih ispravljaju. Potpuna nadogradnja sistema (novi ustav) zahteva katastrofalno forkovanje – revoluciju ili građanski rat.

    300 godina kasnije, on se pretvorio u sistem toliko opterećen sopstvenom složenošću da je njegovo krpljenje kao pokušaj pokretanja Kubernetesa na faksu.
    Upravljanje OS 3.0: Kompozibilno društvo

    Neću se pretvarati da imam završen plan. Zamislite OS 3.0 kao biblioteku kompozibilnih, forkabilnih repozitorijuma za građevinske štedionice.

    slika

    Suvereni identitet: Samostalno održavani sloj identiteta koji nije vezan za vaše mesto rođenja.
    Rešavanje sporova: Sudovi na lancu i decentralizovana arbitraža.
    Formiranje kapitala: Alati za blagajne u vlasništvu zajednice i rizično finansiranje.
    Pravo i upravljanje: Forkabilni ustavni moduli i transparentni sistemi glasanja.
    Društveni grafikon: Proverljiva reputacija i društvene mreže u vlasništvu zajednice.
    Fizički interfejs: Protokoli za povezivanje sa fizičkim svetom, od zakupa zemljišta u specijalnim ekonomskim zonama do pop-ap „ambasada“.

    Dva korisnika, dva bola

    Izbeglica: Anja nema pasoš. Bežeći od sukoba, njen identitet koji je izdala država nestao je sa granicom koju je prešla. Za OS 2.0, ona je duh, nesposobna da otvori bankovni račun, poseduje imovinu ili legalno radi. Za OS 3.0, njen identitet je skup kriptografskih ključeva koje ona kontroliše. Njen dokaz o čovečnosti se verifikuje na lancu. Ona može da prima uplate, gradi reputaciju i pristupa globalnom tržištu, bez potrebe za dozvolom.

    Osnivač: Dejvid želi da izgradi biotehnološki startap u Najrobiju. Troši 9 meseci i hiljade dolara snalazeći se u birokratiji samo da bi registrovao svoju kompaniju. Prekogranična plaćanja su noćna mora. OS 3.0 nudi DAO DOO registrovan za nekoliko minuta. Njegova tabela kapitalizacije je na lancu. Može da prikuplja kapital globalno i da trenutno isplaćuje doprinosioce, bilo gde u svetu.

    Ova nova arhitektura nije o tehničkim karakteristikama. Radi se o ljudskim koristima: mogućnosti slobodnog kretanja i obavljanja transakcija, pristupa brzoj pravdi i privlačenja kapitala i talenata iz globalnog fonda.

    Znam šta mislite. Novi sistem deluje apstraktno, a borba protiv aktuelnog lidera deluje nemoguće.

    Dozvolite mi da vam dam

  • 680 sati, 4 rekonstrukcije i otkaz: Kako sam pravio softver dok sam radio u smenama u skladištu

    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.

    1. 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.