Pravo orodje za pravi problem
V tej panogi obstaja neuradna lestvica, ki pripisuje verodostojnost glede na to, kaj uporabljaš, in nanjo smo že zdavnaj nehali biti pozorni. Tehnologijo izbiramo glede na nalogo pred sabo, ne glede na to, kaj sporoča drugim razvijalcem: jezik, ki ga zna prebrati cela ekipa, podatkovno bazo, ki jo vaši ljudje poznajo dovolj dobro, da jo razhroščijo ob drugi uri zjutraj, urejevalnik in operacijski sistem, v katerih pač razmišljate najhitreje.
*Teoretično boljše* orodje, ki ga pod pritiskom nihče v ekipi ne zna upravljati, je **napačno orodje**. Programski opremi, ki jo dostavimo, ni bilo še nikoli mar, na kateri postavitvi je nastala, in na koncu tudi nam ne.
Read the reasoning
Lastništvo nad vsako vrstico, na katero se zanašate
Naveličali smo se odpiranja projekta, ki je pred pol leta tekel brezhibno, in izgubljanja celega dne za razpletanje odvisnosti, še preden napišemo eno samo vrstico poslovne logike. Zato smo del, ki je naš, skrčili na skoraj nič: **nič odvisnosti med izvajanjem**, tistih nekaj preostalih datotek tretjih oseb pa enkrat prenesemo, preberemo in jih shranimo naravnost v repozitorij, namesto da bi jih sproti vlekli iz registra, ki si lahko premisli ali čez noč izgine.
Manjša kot je površina, ki je ne nadzirate, manj presenečenj prispe v najbolj neprimernem trenutku. Cilj je preprost - projekt odpreti čez pol leta in da je *točno tak kot na dan, ko ste ga zapustili*.
Read the reasoning
Deterministično generiranje, varčno razmišljanje
Orodja umetne inteligence so resnično uporabna in po njih sežemo vsak dan, vendar večina dela, ki ga ljudje predajajo tem orodjem, v resnici ne potrebuje razmišljanja - potrebuje doslednost. Vse, kar ima pravilen, stabilen in zapisljiv odgovor, sodi v generator, ne v verjetnostno ugibanje, ki stane denar ob vsakem klicu in vsakič nekoliko zaniha, ko pet razvijalcev isto zahtevo ubesedi na pet različnih načinov.
Konvencije zapišemo *enkrat* - poimenovanja, validacijo, meje transakcij, pravila, na katera se domena tiho opira - jih pregledamo skupaj in jih brez odstopanj uporabimo povsod. Model je za resnično novo, težko razmišljanje; generator je za **doslednost**, in prav doslednost je tisto, kar podjetje v resnici plačuje, ko kupuje programsko opremo.
Read the reasoning
Predanost podatkovni bazi in njena polna uporaba
Obstaja vodilo, ki pravi, da je treba vsako aplikacijo zasnovati tako, da je mogoče podatkovno bazo kadar koli zamenjati, a za večino projektov je to udobna iluzija, ki tiho stane veliko več, kot kdaj koli prinese. V praksi se podatkovna baza skoraj nikoli ne zamenja, zato jo obravnavamo kot to, kar v resnici je: **trajno** in edini vir resnice.
To pomeni, da uporabimo, kar dejansko ponuja - pravi SQL, ki ga je mogoče prebrati, poglede, omejitve, premišljena imena stolpcev, izbrana še pred prvo vrstico generirane kode - namesto da bi jo skrivali za plastjo, ki se pretvarja, da so vse baze enake. To namišljeno prenosljivost plačujete *vsak dan*, z izpuščenimi funkcijami in dodano kompleksnostjo, za selitev, ki je najverjetneje nikoli ne bo.
Read the reasoning
Enostavnost je funkcija, ne kompromis
Enostavnost ni popuščanje ekipe, ki je premajhna, da bi stvari naredila pravilno - je premišljena izbira in za majhne do srednje velike aplikacije, ki jih gradimo, je običajno prava. Prava mera kompleksnosti je tolikšna, kolikor je problem zares zahteva: brez koraka gradnje med kodo in delujočim strežnikom, vsaka funkcija v svoji mapi namesto razpršena po tehničnih plasteh, sodobna osnova brskalnikov namesto desetletja nakopičenih obvodov, smiselne privzete vrednosti namesto neskončnega nastavljanja, za katero se nihče več ne spomni razloga.
**Vsaka plast, ki je ne dodate, je plast, ki ne more odpovedati**, je ni mogoče izkoristiti za napad in ne more stati med vami in delujočo kodo, ko gre nekaj končno narobe ob najslabšem možnem času.
Read the reasoning
Lastništvo nad tem, kje teče vaša programska oprema
Kje teče vaša programska oprema, je poslovna odločitev z resničnimi posledicami, ne tehnična podrobnost, ki jo prepustite tistemu, ki je pač nastavil račun. Za organizacije, za katere gradimo - tiste z znanim, omejenim občinstvom in ne z milijoni neznancev - je iskren odgovor pogosto vaš lasten skromen strežnik, na majhnem VPS-u ali kar tiho v sami stavbi.
Strošek je predvidljiv do centa, nadzor je zares *vaš*, zgodba o varstvu podatkov je tako preprosta kot natančno vedeti, kje podatki ležijo, aplikacija pa deluje naprej, ko ima internet ali tuj podatkovni center slab dan. Postavitev je namenoma neblesteča: **potegnete najnovejšo kodo, znova zaženete proces in opravljeno je**.
Read the reasoning
Grajeno, da traja in da se prilagaja
Večina tega, na čemer gradimo, je namenoma dolgočasna: izrisovanje na strežniku, SQL, generiranje kode - stare ideje, za katere se je panoga za kratek čas prepričala, da jih je prerasla, in se zdaj tiho vrača k njim, ker nikoli zares niso prenehale biti pravilne. Edina prava stava na obronku je izvajalno okolje spodaj, ki smo ga prevzeli zgodaj in namenoma, in takšne zgodnje, praktične izkušnje se obrestujejo na način, ki vam ga noben blog zapis pozneje ne more podariti.
*Dolgočasno tam, kjer mora biti dolgočasno, zgodnje tam, kjer se splača biti zgoden.* Plačilo je en sam projekt, ki se zna upogniti od statične predstavitvene strani v prijavljeno skrbniško ploščo, ne da bi ga zavrgli in znova napisali v trenutku, ko stranka spremeni smer. Čez pet let **dolgočasna izbira skoraj vedno zmaga**.
Read the reasoning
Doslednost pri kakovosti, kjer to šteje
Nima vsa programska oprema enakih vložkov, in pretvarjanje, da jih ima, je ena dražjih napak zadnjega desetletja. Ko je število všečkov trideset sekund napačno, ni nihče oškodovan; ko gre račun ven za napačen znesek, so oškodovani *vsi*, glasno in dolgo.
Zato za kodo, ki se dotika denarja, zalog ali evidenc, držimo drugačno merilo - strogost, ki si jo je to delo vedno zaslužilo, preden se je komu mudilo: prave teste okoli robnih primerov, ki resnično štejejo, pravi človeški pregled vsega pomembnega in konfiguracijo, ki **glasno odpove in se noče zagnati**, namesto da životari na tihi privzeti vrednosti, ki tiho počne napačno stvar. Hitrost je čudovita, a nikoli ni izgovor za to, da dostavimo nekaj napačnega.
Read the reasoning