Kada softverska firma piše vodič o tome kako se bira softverska firma, sukob interesa vidite pre nego što ste stigli do prvog saveta. Zato krenimo od jedine reference koja tu nešto znači: značajan deo našeg posla čine projekti koje preuzimamo pošto su negde drugde krenuli naopako. Dolaze nam spasavanja, ponovne izgradnje i modernizacije sistema koji imaju tri godine, a već su legacy. Pogrešan izbor tako gledamo iznutra, osamnaest meseci pošto je ugovor potpisan, i obrazac se ponavlja skoro bez izuzetka. Naručilac gotovo nikada nije loše izabrao zato što nije pazio, nego zato što standardni proces izbora meri pogrešne stvari.
Spolja se razvojne firme jedva razlikuju: sajtovi pokazuju iste studije slučaja, iste logotipe i iste tvrdnje o seniorskim inženjerima i agilnoj isporuci, pa i naš među njima. A ono čime naručilac pokušava da presudi, dakle portfolio, reference i cenovnik, upravo su alati koje svaka firma godinama glanca. Ovaj tekst je čeklista za ono što se ispod njih ne vidi.
Šta portfolio i reference ne mogu da vam kažu
Portfolio je montaža najboljih trenutaka: svaka firma pokazuje svoja tri najbolja projekta, a taj izbor vam o prosečnom angažmanu ne govori ništa, jer je po konstrukciji pristrasnost preživelih. Projekti koji su kasnili godinu dana, oni koji su isporučeni pa tiho napušteni i oni koji su završili u sporu ne stoje na sajtu, a poverljivost svakoj firmi daje pristojan izgovor za rupe u listi. Iz portfolija saznajete koliko ta firma može u najboljem slučaju, a vi ćete živeti na njenom proseku.
Reference imaju istu manu, samo sa prijatnijim licem, jer ih bira sama firma. Dobićete tri najzadovoljnija klijenta iz poslednjih pet godina, a nikada nećete dobiti broj telefona onoga čiji je projekat napušten. Čak i iskreno oduševljena preporuka slabo dokazuje, pošto je ishod zavisio od konkretnog tima koji je te godine radio, a ljudi koji su napravili tu studiju slučaja u međuvremenu su možda dvaput promenili posao.
Reference ipak vredi pozvati, samo se pitanja moraju promeniti. Ne pitajte „da li ste bili zadovoljni“, jer to poziva na uvežbano da, nego „ispričajte mi o najgorem mesecu projekta i o tome šta su tada uradili“. Svaki iole ozbiljan angažman ima jedan loš mesec. Najkorisnije što jedna referenca može da vam kaže jeste da li je firma problem iznela rano, pošteno prepravila cenu i rešila ga, ili se ućutala i nastavila da fakturiše.
Šta čini dobrog partnera za softverski inženjering: četiri signala
Prvi je kako procenjuju. Firma koja izbaci cifru pre nego što je razumela kako poslujete već vam je time rekla kako radi. Prava procena dolazi tek posle pravih pitanja: o procesima, o podacima, o sistemima koje već vozite i o izuzecima zbog kojih je vaš posao baš vaš. Ako cena stigne pre tih pitanja, nije izvedena iz projekta nego postavljena da ga dobije, a razlika između ta dva broja isplivaće kasnije, obučena u zahteve za izmenu. Ako vam pre prvog razgovora treba referentna tačka, evo šta zaista određuje cenu softvera po meri.
Kako firma procenjuje, tako i isporučuje: ko nagađa cenu, nagađaće i dok gradi.
Drugi je na šta kažu ne. Pitajte direktno koje su projekte odbili u poslednjih godinu dana i zašto. Ako firma ne može da navede nijedan, onda ili uzima sve što se plaća, pa će na vašem projektu raditi ko je slobodan a ne ko odgovara, ili nikada nije ozbiljno razmislila u čemu je zapravo dobra. Ono što odbijaju najpoštenija je mapa stručnosti koju ćete u prodajnom procesu dobiti.
Treći je ko piše kod. Ljudi sa prva tri sastanka po pravilu nisu ljudi koji će graditi sistem, pa tražite da upoznate tehničkog vođu koji bi vodio projekat, dakle konkretnog inženjera a ne šefa isporuke, i njemu postavite tehnička pitanja o svom problemu. Firma koja veruje svojim inženjerima izvešće ih pred vas bez oklevanja, a firma koja vas zadržava na nivou tima za odnose s klijentima upravlja utiskom.
Četvrti je kako izgleda primopredaja. Kraj angažmana je tačka u kojoj se interesi najviše razilaze: do tada je izvođaču u interesu da radi dobro, a dokumentacija, primopredaja i vaša samostalnost jedini su delovi koji njega samo koštaju. Zato tražite dokaz: anonimizovan zapis o arhitekturi, runbook ili paket za primopredaju sa nekog završenog projekta. Firma koja takav dokument izvadi radila je to i ranije i računa da ćete umeti da radite bez nje, dok ona koja umesto dokumenta priča o partnerstvu učtivo opisuje zaključavanje.
Ta četiri signala razdvajaju partnera za softverski inženjering od izvođača koji prodaje sate: jedan odgovara za ishod, drugi za evidenciju radnih sati.
Kada je bolje ustati od stola
Podmetnuta seniornost je najčešća zamka. Seniorski inženjeri vode prezentaciju i uvodnu analizu, a istorija komitova već drugog meseca priča drugu priču. Od toga se ne štitite poverenjem nego strukturom: poimenično navedeni ljudi u ugovoru, pravo da upoznate svaku zamenu pre nego što uđe u tim i uvid u to ko se zaista pojavljuje na dnevnim sastancima.
Naplata po satu bez discipline obima. Sat sam po sebi nije loš, ali sat bez etapa, bez pisanog obima i bez definicije završenog znači da izvođač zarađuje više što projekat duže traje, a u strukturi ne postoji ništa što bi tome pružilo otpor. Pitanje nije „po satu ili fiksno“, nego „gde stoji odgovornost za procenu“. Ako je odgovor kod vas, disciplina obima ste vi. (Alternativu smo opisali u tekstu zašto fiksna cena softvera puca i kako to rešava naplata po etapi.)
„Možemo da počnemo u ponedeljak.“ Firma čiji je ceo tim slobodan već sutra time govori nešto o tražnji za svojim radom. Prave rupe u rasporedu postoje, jer se projekat završi ili se početak pomeri, ali ceo seniorski tim koji sedi na klupi retkost je u svakoj firmi koju vredi angažovati. Trenutnu dostupnost celog tima tretirajte kao hirurga bez liste čekanja.
Nemaju stav o dosadnim delovima vaše industrije. Svaka delatnost ima mašineriju koja se nikada ne pominje, od usaglašavanja i regulatornih izuzetaka do izuzetaka u cenovniku i pravila zakazivanja, i upravo tu projekti tonu. Partner ne mora ranije da je radio u vašoj industriji, ali mora da se upali kada se pređe na dosadne delove, jer će njih graditi najveći deo projekta. Ako razgovor stalno klizi ka uzbudljivoj površini proizvoda, dosadnih devet desetina učiće na vaš račun.
Osam pitanja za prvi razgovor
Signale je lakše pročitati kada ih tražite direktno, pa ova pitanja vredi postaviti doslovno i otprilike ovim redom.
- „Šta morate da saznate o našem poslovanju pre nego što nam date cifru?“
- „Koje ste projekte odbili u poslednjih godinu dana i zašto?“
- „Ko bi tačno pisao kod i možemo li da ga upoznamo pre potpisa?“
- „Ispričajte mi o projektu koji je loše prošao. Šta ste posle njega promenili?“
- „Kako kod vas izgleda primopredaja i možemo li da vidimo anonimizovan primer sa stvarnog projekta?“
- „Šta biste izbacili iz našeg brifa da prva verzija pre izađe u produkciju?“
- „Šta se dešava ako posle tri meseca odlučimo da stanemo?“
- „Kako ćemo posle šest meseci znati da li ovo funkcioniše?“
Slušajte da li u odgovorima ima konkretnosti i blage nelagode: dobri odgovori navode stvarne projekte, stvarne greške i stvarna ograničenja, a loši su glatki, uopšteni i istog trena saglasni. Šesto pitanje proverava osećaj za obim, jer će se pravi partner zalagati za fokusiranu prvu verziju za 2-3 meseca umesto platforme za godinu dana i reći će vam koji delovi brifa mogu da sačekaju. Sedmo pitanje je test zaključavanja: ko računa da će zaraditi produžetak, taj vam odlazak čini jeftinim, sa repozitorijumima i infrastrukturom kod vas i dokumentacijom kao isporukom, dok onaj ko planira da vas veže postaje neodređen.
Kada promeniti partnera za razvoj softvera
Mnogi koji čitaju ovu čeklistu ne biraju prvog partnera, nego odlučuju da li da zamene sadašnjeg. Znaci upozorenja retko su jedna katastrofa. Pre je to postepeno klizanje: probijeni rokovi koji više ne stižu sa objašnjenjem, sistem koji samo izvođač ume da pusti u produkciju, zahtevi za izmenu koji svakog kvartala koštaju više i tim koji se menja brže nego što dokumentuje. Ako važe dva od ovih znakova, sprovedite gornju čeklistu na sadašnjem partneru kao da ga upoznajete prvi put.
Ako odlučite da promenite partnera, redosled je važniji od izbora novog izvođača. Najpre osigurajte repozitorijume, naloge za infrastrukturu i pristupne podatke; uzmite dokumentaciju koja postoji, koliko god bila tanka; i primopredaju radite u etapama, a ne odjednom. Preuzimanje sistema na ovaj način čini velik deo našeg posla, pa pogledajte kako promeniti partnera za razvoj softvera, a da ne izgubite projekat i modernizaciju nasleđenog sistema bez pisanja od nule.
Zašto je bolje početi od nečeg manjeg od ugovora
Najdublji problem sa izborom partnera nije nijedan pojedinačni signal, nego to što vas standardni proces tera da sve odlučite odjednom: dva poziva, ponuda i šestocifrena obaveza. Intervjuima ne možete doći do sigurnosti u to kako se firma ponaša u stvarnim uslovima, ali možete kupiti mali uzorak tog ponašanja. Umesto velikog ugovora, počnite kratkim dijagnostičkim angažmanom: nedelju ili dve unutar jednog procesa, a na kraju procena, skica arhitekture i računica isplativosti koje zadržavate bez obzira na to šta se dalje desi.
Dijagnoza svaki signal iz ovog teksta pretvara iz tvrdnje u opažanje: gledate kako procenjuju umesto da o tome pitate, a upoznajete i inženjere koji bi zaista gradili, jer je dijagnoza tehnički posao koji tim za odnose s klijentima ne može da odradi. Na kraju vam ostaje rezultat koji možete odneti drugoj firmi, i to je pravi test. Ako je upotrebljiv jedino pod uslovom da njih angažujete, bio je to prodajni materijal našminkan da liči na isporuku. Neke firme ovo naplaćuju, neke rade sličnu stvar besplatno, mi radimo, i tako počinje svaki naš angažman, ali plaćeno ili besplatno manje je važno od oblika: kratko, ograničeno i sa rezultatom koji nadživi odnos.
To je ujedno i najjeftiniji način da otkrijete da vam neka firma ne odgovara, uključujući i nas. Sprovedite ovu čeklistu kako treba i lako se može desiti da zaključite kako neki drugi partner bolje pristaje vašem projektu nego mi. To nije neuspeh čekliste nego čeklista koja radi svoj posao. Poenta malog početka je u tome što vas zaključak, kako god da padne, košta dve nedelje umesto dva kvartala.
Skraćena verzija: zanemarite montažu najboljih trenutaka i čitajte firmu kroz ono kako se ponaša. Partner kojeg želite daje cenu tek pošto razume posao, ume da kaže šta odbija, izvodi inženjere pred vas, pokazuje stvaran dokument o primopredaji i postavlja angažman tako da je odlazak lak. Jer kako se firma ponaša dok vas još osvaja, to je plafon onoga kako će se ponašati kada ugovor bude potpisan.
Česta pitanja
Kako izabrati pravog partnera za razvoj softvera?
Procenjujte firmu po ponašanju, a ne po portfoliju: kako procenjuje, koje poslove odbija, da li možete da upoznate inženjere koji bi gradili vaš sistem i da li može da pokaže stvaran dokument o primopredaji. Zatim, pre potpisivanja velikog ugovora, počnite malim, jasno ograničenim angažmanom.
Šta čini dobrog partnera za softverski inženjering?
Dobar partner daje cenu tek kada razume vaše poslovanje, poimence navodi inženjere koji će raditi, probleme iznosi rano umesto da ih fakturiše i postavlja angažman tako da je odlazak jeftin: repozitorijumi i infrastruktura su vaši, a dokumentacija je isporuka.
Koji su znaci upozorenja kada angažujete firmu za razvoj softvera?
Seniori na prezentaciji, a juniori u komitovima, naplata po satu bez etapa i pisanog obima, ceo tim slobodan da počne u ponedeljak i nikakvo interesovanje za neglamurozne delove vašeg posla, gde projekti zapravo tonu.
Da li izabrati partnera sa fiksnom cenom ili sa naplatom po satu?
Nijedan model nije bezbedan sam po sebi. Pitajte gde stoji odgovornost za procenu. Naplata po etapi, odnosno fiksna cena za svaku prihvaćenu isporuku, drži izvođača odgovornim za procenu, a da vi ne morate unapred da specificirate sve.
Kada treba promeniti partnera za razvoj softvera?
Kada probijeni rokovi prestanu da dolaze sa objašnjenjem, kada samo izvođač ume da pusti ili razume sistem, ili kada je svaki zahtev za izmenu skuplji od prethodnog. Najpre osigurajte pristup kodu, infrastrukturi i dokumentaciji, a zatim primopredaju radite u etapama, ne odjednom.