Zhruba raz za mesiac nám príde rovnaká požiadavka: „Pošlite nám aspoň rámcovú cenu, kód vám ukážeme, keď sa dohodneme.” Rozumieme, prečo to firmy robia — obvolávajú tri agentúry a chcú porovnateľné čísla. Kedysi sme vyhoveli. Dnes odpovedáme, že číslo pošleme radi, ale až potom, čo sme kód videli. Tento zápis je o tom, prečo na tom trváme aj za cenu, že občas prídeme o zákazku.
Píšeme to z pohľadu konzultingu a preberania existujúcich systémov — situácií, keď nový klient prichádza s appkou, ktorú postavil niekto iný. O tom, ako vyzerá naša platená dvojtýždňová diagnostika, sme už písali. Toto je krok pred ňou: prečo ani obyčajná ponuka nevznikne bez pohľadu dovnútra.
Odhad naslepo je len tip s podpisom
V roku 2021 sme naceňovali rozšírenie rezervačného systému. Zadanie znelo jednoducho: pridať druhú pobočku a nové cenové pásma. Podľa popisu sme odhadli pätnásť dní. Kód sme prvýkrát videli po podpise — a našli sme databázu bez jedinej migrácie (schéma sa roky menila ručne priamo na produkcii), nula testov a konfiguráciu pobočky zadrôtovanú na štyridsiatich miestach. Reálny čas: takmer trojnásobok. Rozdiel sme vtedy zhltli my, ale nikomu tým nepomohol — projekt sa vliekol a klient aj tak čakal dlhšie, než mu ktokoľvek sľúbil.
Mohli sme to zvaliť na zlé zadanie. Pravda je, že chyba bola na našej strane: podpísali sme číslo, ktoré sme nemali ako vedieť. Popis funkcionality hovorí, čo systém robí. Nehovorí nič o tom, v akom stave je — a cenu určuje stav, nie funkcionalita.
Pol dňa čítania, ktoré dnes predchádza každému číslu
Namiesto toho si dnes pred ponukou vyžiadame prístup ku kódu — stačí read-only — a strávime v ňom zhruba štyri hodiny. Nečítame všetko. Pozeráme sa na šesť konkrétnych vecí:
- Git históriu — kto commitoval, ako často a kedy naposledy. Repo, kde posledný commit spravil pred rokom človek, ktorý už vo firme nepracuje, je iný projekt než živý kód.
- Závislosti — dátumy v lockfile. Framework tri major verzie pozadu nie je detail, je to samostatná položka rozpočtu.
- Migrácie — či zmeny schémy žijú v kóde, alebo sa databáza menila ručne. Toto je najspoľahlivejší jednotlivý signál celkovej disciplíny.
- Testy a CI — nie pokrytie ako číslo, ale či vôbec existuje spôsob, ako zistiť, že sme niečo rozbili.
- Nasadzovanie — ako sa kód dostáva na produkciu a koľko ľudí to vie spraviť. „Deploy robí Peter cez FTP” je odpoveď, ktorá mení ponuku.
- Najhorší endpoint — otvoríme si ten najzložitejší kus biznis logiky a prečítame ho celý. Desať minút v najhoršom súbore povie viac než hodina v peknom README.
Čo to spraví s číslom
Ponuka písaná naslepo má reálny rozptyl plus-mínus sto percent — len to na nej nie je napísané. Po pol dni v kóde sa vieme dostať na rozptyl, za ktorý sa nehanbíme, a hlavne vieme povedať, čo presne cenu tlačí hore: chýbajúce migrácie, ručný deploy, závislosti po životnosti. Klient tak prvýkrát vidí svoj systém očami niekoho zvonku — a niekedy je práve tento zoznam cennejší než samotná ponuka.
A občas je výsledkom, že ponuku nedáme. Zhruba v jednom prípade z desiatich po prečítaní kódu povieme, že prevzatie nedáva zmysel — že lacnejšie vyjde nechať systém dožiť a postaviť vedľa neho nový, alebo že sa na projekt jednoducho nehodíme. Aj to je výsledok. Lacnejší pre obe strany než rok spoločného trápenia.
Ponuka napísaná bez pohľadu do kódu nie je odhad. Je to tip so záväzným podpisom — a riziko toho tipu vždy nesie buď klient, alebo my.
Keď kód nemôžete len tak poslať
Najčastejšia námietka je dôvernosť, a je legitímna. Riešenie je pritom rutina: podpíšeme NDA (štandardnú obojstrannú máme pripravenú), dostaneme read-only prístup do repozitára, prípadne si kód prejdeme spolu na zdieľanej obrazovke bez toho, aby čokoľvek opustilo firmu. Za tie roky sa nestalo, že by sa to nedalo vyriešiť do dvoch dní. Jediný skutočný varovný signál je iný: keď vo firme nevie prístup ku kódu udeliť nikto. To nie je prekážka obhliadky — to je prvý nález.
Ak preberáte systém po inom dodávateľovi, alebo len chcete druhý názor na to, v akom stave je ten váš, ozvite sa. Pol dňa čítania je zadarmo súčasť každej našej ponuky — a keď treba ísť hlbšie, presne na to máme dvojtýždňovú diagnostiku.