Integrisani razvojni timovi naspram outsourcinga: Šta kompanije u operacijama pogrešno rade
• 7 min read

Kada građevinska kompanija, provajder terenskih usluga ili kompanija sa operacijama koje su intenzivne odluči da gradi softver, suočava se sa ranim i važnim pitanjem: kako angažovati inženjerski rad?
Najčešći odgovor je „pronađite agenciju ili outsourcujte razvoj“. Brzo je za početak, nema troškova zapošljavanja i obično možete naći nekoga ko je spreman da preuzme projekat po fiksnoj ceni.
Većinu vremena to ne funkcioniše — ne zato što su programeri loši, već zato što je model angažmana suštinski neusklađen sa onim što softver za operacije zahteva.
Ovaj tekst objašnjava zašto i kako izgleda bolji model.
Šta tradicionalni outsourcing zapravo isporučuje
Tradicionalni softverski outsourcing je optimizovan za specifičan scenario: jasno definisani zahtevi, stabilan obim i isporuka koja se može predati kada je završena.
U ovom modelu, vi napišete specifikaciju, dobavljač ponudi cenu, potpišete ugovor, a programeri razvijaju ono što je definisano. Kada završe, isporučuju kod i zatvaraju angažman. Plaćate po funkcionalnosti ili po fazi.
Ovo funkcioniše dobro za:
- Izgradnju samostalnog alata sa dobro razjašnjenim zahtevima
- Kreiranje web sajta ili marketinškog resursa
- Implementaciju usko definisanih integracija
- Povećanje kapaciteta na stabilnoj, mature bazi koda
Loše funkcioniše za softver za operacije, iz razloga koji dublje ulaze u prirodu domena.
Zašto outsourcing ne uspeva za ops platforme
Zahtevi još ne postoje — i ne mogu postojati.
Softver za operacije se otkriva, ne specificira. Zahtevi za platformu terenskih operacija deluju očigledno u dokumentu, ali postaju zaista kompleksni tek kada pravi korisnici pokušaju da koriste pravi softver u realnim uslovima.
Ne znate da vaši tehničari rade u podrumima bez signala dok ne implementirate i ne počnete da primate žalbe. Ne znate da tok rada za promenu naloga ima sedam ivica slučajeva dok vam prvi pilot korisnik ne pokaže proces. Ne znate da vaša mobilna aplikacija nije upotrebljiva sa rukavicama dok neko zaista ne proba na gradilištu.
Fiksni angažman za outsourcing nema mehanizam za rukovanje ovim otkrićima. Programeri razvijaju ono što je specificirano. Kada se stvarnost pokaže kompleksnijom od specifikacije, morate ili platiti dodatne promene (skupo), ugurati promene u postojeći obim (što rezultira dugom kodu), ili odložiti stvarne zahteve koje vaši korisnici zaista trebaju.
Kontekst se ne može preneti u dokumentu specifikacije.
Softver za operacije je duboko kontekstualan. Razumevanje zašto tok rada radnog naloga mora da funkcioniše ovako zahteva razumevanje organizacione strukture, ugovornih odnosa, regulatornih zahteva i neformalnih praksi koje su se razvijale godinama iskustva na terenu.
Taj kontekst živi u razgovorima, posmatranju i uranjanju u domen — ne u dokumentu zahteva. Outsourcovani programeri koji nikada nisu kročili na gradilište ili prisustvovali sastanku projekt menadžera doneće desetine malih odluka koje su tehnički ispravne, ali operativno pogrešne. Ove odluke se akumuliraju u proizvod koji radi u demo režimu, ali ne i u praksi.
Odgovornost se završava isporukom.
Kada outsourcing firma isporuči vaš projekat, njihov posao je završen. Bilo koji bugovi nakon isporuke, bilo koje arhitektonske odluke koje su pogrešne u skaliranju, bilo koji pogrešno shvaćeni zahtevi — sada su vaš problem. Imate kod, imate dokumentaciju (ako ste srećni) i imate tim koji je prešao na sledećeg klijenta.
Za ops platforme koje zahtevaju 12–24 meseca da sazru, ovaj model predaje znači da tim koji najbolje razume sistem odlazi pre nego što sistem bude zaista dokazan u produkciji.
Tehnički dug je nevidljiv dok ne postane skup.
Projekti po fiksnoj ceni stvaraju pritisak da se isporuči što stvara pritisak da se preseku uglovi. Uglovi koji se seku su obično arhitektonski — offline-first data layer koji je bio „lepo imati“, state machine koji je pojednostavljen da bi se uštedelo vreme, integracioni sloj koji je sveden na direktnu zavisnost. Odluke se čine u redu pri isporuci, ali katastrofalne su u skaliranju.
Šta zapravo znači ugrađeni razvoj
Ugrađeni razvojni tim nije samo povećanje osoblja. Nije „iznajmimo vam nekoliko programera“. To je suštinski drugačiji model angažmana baziran na kontinuitetu, kontekstu i zajedničkoj odgovornosti.
Ugrađeni timovi rade unutar konteksta vašeg proizvoda.
Ugrađeni tim učestvuje u planiranju proizvoda, prisustvuje sesijama istraživanja korisnika, učestvuje u pozivima sa klijentima i pregleda tiket za podršku. Razumeju zašto se funkcije grade — ne samo šta se gradi. Ovaj kontekst oblikuje arhitektonske odluke i otkriva kompromise koje čitalac specifikacije nikada ne bi znao da postavi.
Grade za srednji rok, ne za milestone.
Outsourcing dobavljač optimizuje za ispunjenje milestona i naplatu. Ugrađeni tim optimizuje za to da proizvod funkcioniše za 12 meseci. To su različite ciljne funkcije i proizvode različit kod, različitu arhitekturu i različitu dokumentaciju.
Zajednički preuzimaju rezultat sa vama.
Kada nešto krene po zlu u produkciji — a u ops softveru uvek nešto krene po zlu — ugrađeni tim je tu kada je najpotrebnije. Znaju kodnu bazu. Razumeju originalne odluke. Mogu da dijagnostikuju i poprave probleme u satima, a ne nedeljama.
Donose domen ekspertsko znanje, ne samo tehničku veštinu.
Najbolji ugrađeni timovi za platforme sa teškim operacijama kombinuju softverske inženjerske veštine sa znanjem domena. Već su gradili softver za terenske operacije. Znaju šta se kvari u skaliranju. Znaju šta se dešava kada offline sync ne funkcioniše, kada model dozvola ne podržava podizvođače ili kada sistem notifikacija stvara alert fatigue. Donose taj pattern library u vaš build.
Uobičajene primedbe — i iskreni odgovori
„Outsourcing je jeftiniji.“
Na prvi pogled, da. Kada uključite trošak ponovnog gradjenja pogrešno urađenog, rad osoblja na promenama, kašnjenje u izlasku na tržište i tehnički dug koji se akumulira nakon isporuke, outsourcing retko kada je jeftiniji. Za ops platforme posebno, kompleksnost domena znači da je razlika između specifikacije i realnosti velika — i svaki jaz košta novac.
„Nemamo budžet za dugoročni ugrađeni tim.“
Ugrađeni tim ne mora biti permanentan. Pravi model je često ugrađeni tim za inicijalnu gradnju platforme (12–18 meseci), sa prelaskom na interni tim uz ugrađenu podršku za dalji razvoj. Ugrađeni tim gradi znanje internog tima, dokumentuje arhitektonske odluke i pruža kontinuitet kroz predaju.
„Moramo brzo da se krećemo. Ugrađeni timovi previše dugo ulaze u posao.“
Vreme onboardinga dobro vođenog ugrađenog tima je obično 2–3 nedelje. Vreme potrebno da se oporavite od neuspelog outsourcing angažmana — uključujući arhitektonske dugove, nedostatak dokumentacije i mesece provedenih u obnovi poverenja sa ranim korisnicima koji su doživeli pokvareni proizvod — tipično je 6–12 meseci.
„Već imamo outsourcing dobavljača koji je radio slične projekte.“
Slični projekti u drugoj industriji nisu isti. Dobavljač koji je gradio softver za terensku industrijsku održavanje ima relevantno iskustvo, ali građevinarstvo ima različite strukture ugovora, kompleksnost učesnika i regulatorne zahteve. Delta je bitna.
Signali da treba razmotriti ugrađeni model
Gradite softver za operacije i bilo šta od sledećeg važi:
- Kompleksnost vaših tokova rada je visoka i zahtevi su još uvek u fazi otkrivanja
- Ciljate domenu sa fizičkim ograničenjima (terenski rad, offline okruženja, integracija sa hardverom)
- Mapa učesnika je kompleksna (više kompanija, uloga i nivoa pristupa zajedničkim podacima)
- Imate zahteve za usklađenošću ili auditabilnošću
- Planirate rast proizvoda tokom 18+ meseci
- Već ste imali negativno iskustvo sa outsourcingom i potrebno je oporaviti se
Kako BuildConTech funkcioniše
BuildConTech je ugrađeni razvojni partner za kompanije koje grade građevinske i operativne platforme. Ne preuzimamo fiksne ugovore. Radimo unutar vašeg produkt tima — na standupovima, planiranjima i razgovorima sa klijentima.
Donosimo arhitektonske obrasce specifične za ops-softver: offline-first arhitekturu, event-sourced modele podataka, multi-stakeholder sisteme dozvola i mobilna iskustva optimizovana za terenski rad. I donosimo iskustvo iz prethodnih građevinskih i operativnih platformi, što znači manje skupih otkrića i brže vreme do proizvoda koji stvarno funkcioniše u terenu.
Naš model angažmana je izgrađen za srednji rok — obično 12–24 meseca za novi razvoj platforme, sa jasno definisanim milestone-ima i redovnim pregledima radi osiguranja usklađenosti.
Ako ste na tački odlučivanja kako da gradite vašu ops platformu, razgovarajmo. Radije ćemo razgovarati sada nego nakon neuspelog outsourcing iskustva.
Related reading: