Disciplina

Gradimo sam proizvod.

Model domena, API, interfejs i proces izdavanja koji ih izvodi u produkciju — osmišljavaju ih zajedno ljudi koji ih kasnije i vode.

Naš stav

Softver je sistem, a ne ekran.

Većina proizvoda zapinje na istom mestu. Interfejs je gotov, a ispod njega se ništa baš ne slaže: dve usluge čuvaju istog klijenta u dva oblika, pozadinski proces prepiše ono što je API upravo vratio, a svaka nova funkcionalnost košta više od prethodne.

Mi krećemo od domena. Kako posao zaista naziva stvari, kako izgleda ispravno stanje, koja pravila nikada ne smeju da se prekrše — zapisano, opisano u kodu na jednom mestu i provereno na granici sistema, umesto da se ponavlja u svakom delu koda koji ih obrađuje. Interfejs je tada pogled na model koji već stoji.

Proces izdavanja je deo proizvoda, a ne obaveza dodata posle njega. Migracije idu i napred i nazad, isporuka je jedna komanda koju dežurni inženjer može da pokrene u ponoć, a svaka verzija se može pratiti do commita iz kog je nastala. Zbog toga je druga godina proizvoda jeftinija od prve.

Isporuke

Šta ostaje posle rada na proizvodu.

Svaka stavka ispod je nešto što možete otvoriti, pokrenuti ili pročitati — a ne izveštaj o tome.

  • Model domena

    Pojmovi, stanja i pravila vašeg poslovanja, zapisani kao tipovi i primenjeni na jednom mestu umesto na šest.

  • API sa verzijama

    Dokumentovan ugovor sa proverenim oblicima zahteva i odgovora na granici, pa promena na jednoj strani ne može tiho da pokvari drugu.

  • Produkcioni interfejs

    Ekrani u kojima ljudi zaista rade — pristupačni, prilagodljivi i sastavljeni od komponenti koje vaš tim može da proširi bez nas.

  • Sloj podataka i migracije

    Šema sa migracijama u oba smera, početni podaci i vraćanje iz rezervne kopije koje ste uvežbali, a ne pretpostavili.

  • Testovi na stvarnim putanjama

    Tokovi koji nose novac, podatke ili poverenje, pokriveni i pokretani na svaki commit umesto nedelju pre izdanja.

  • Pipeline za isporuku

    Build, provera, isporuka — jedan pipeline na vašim nalozima, ponovljiv iz čistog checkouta na novoj mašini.

  • Nadzor sistema

    Logovi, tragovi i ono nekoliko upozorenja koja nešto znače, povezani pre lansiranja umesto posle prvog ispada.

  • Uputstvo i primopredaja

    Kako se isporučuje, vraća unazad, menja ključ i doziva prava osoba — napisano za onoga ko preuzima dalje.

Kako teče

Od domena do isporuke.

Bez otkrivanja radi otkrivanja. Svaki korak se završava nečim opipljivim — zapisanim modelom, radnim presekom, objavljenom verzijom.

  1. Model

    Radna sesija sa ljudima koji vode taj proces. Izlazimo sa zapisanim domenom: entiteti, stanja i pravila koja moraju da važe.

  2. Tanak presek

    Jedna putanja kroz ceo sistem — interfejs, API, podaci, isporuka — dokazana u kodu pre nego što se procena učvrsti.

  3. Izrada

    Nedeljne demo sesije u vašem okruženju. Obim se menja otvoreno, a testovi stižu zajedno sa funkcionalnošću, ne za njom.

  4. Očvršćivanje

    Namerno testiramo opterećenje, otkaze i oporavak: šta se dešava kada zavisnost uspori, kada se zadatak ponovi ili kada migracija mora unazad.

  5. Primopredaja

    Označeno izdanje, pisano uputstvo i zajednički obilazak sistema sa timom koji ga preuzima — dogovoren pre poslednjeg sprinta, ne posle njega.

Prikaz

Jedno izdanje, s kraja na kraj.

Alati i primopredaja

Sistem koji može da pokrene i neko sa strane.

Gradimo na vašim nalozima od prvog commita: vaš repozitorijum, vaš cloud, vaši ključevi. Ništa što postavimo ne zavisi od licence na naše ime ni od računara na našem stolu.

Na kraju ne dobijate arhivu koju treba raspakovati. Dobijate repozitorijum čiji README zaista radi, pipeline koji ga isporučuje i uputstvo za poslove koji su timu zaista potrebni u dva ujutru.

  • Vaš repozitorijum, vaši cloud nalozi, vaši ključevi.
  • Čist checkout se gradi i isporučuje jednom komandom.
  • Vraćanje unazad, zamena ključeva i dežurstvo zapisani pre lansiranja.
Pipeline u toku izdanja.

Tehnologije

Šta koristimo u radu na proizvodu.

  • TypeScript
  • Node.js
  • React
  • Next.js
  • Python
  • PostgreSQL
  • Redis
  • Prisma
  • Zod
  • Docker
  • GitHub Actions
  • Terraform
  • Vitest
  • Playwright
  • OpenTelemetry
  • Stripe

Biramo po projektu — obično prevagne ono što vaš tim već koristi.

Studije slučaja na ovoj strani su ilustrativni primeri koji stoje umesto objavljenih radova. Nijedan klijent nije imenovan i ne navodimo nikakve brojke.Pogledajte sve radove

Pitanja

Pitanja pre početka rada.

Da li preuzimate postojeći kod?

Da — preuzimanje postojećeg koda je za nas uobičajen posao. Počinjemo pregledom koda i pisanim nalazom: šta vredi zadržati, šta izolovati i koja prva izmena čini ostatak bezbednijim.

Ne predlažemo pisanje ispočetka osim ako je druga opcija zaista gora, a obrazloženje u oba slučaja dajemo napismeno.

Kako sarađujete sa našim inženjerima?

U istom repozitorijumu, na istoj tabli, uz pregled koda u oba smera. Zajednički rad na prvom preseku obično je najbrži način da tim usvoji obrasce koje uvodimo.

Ako vaši inženjeri radije zadrže interfejs, a nama prepuste platformu ispod njega, i ta podela funkcioniše.

Šta ako se obim promeni usred izrade?

Obično se i promeni. Obim se menja otvoreno, na nedeljnom demou: nešto ulazi, nešto izlazi, a taj kompromis se zapisuje umesto da se tiho proguta.

Ono što se ne menja bez razgovora jesu rok i budžet.

Šta se dešava posle lansiranja?

Sve je već vaše, pa nema šta da se prenosi. Neki timovi nastave sami, uz uputstvo; drugi nas zadrže određen broj dana mesečno za pregled, nadogradnje i dežurstvo.

U oba slučaja to je odluka, a ne automatsko produženje.

Sledeći korak

Opišite proizvod koji treba napraviti.

Jedan razgovor, bez prezentacije. Recite nam problem običnim rečima, a mi ćemo iskreno reći da li vam je potreban baš inženjering proizvoda — i kako bi izgledale prve dve nedelje.