Kako preživeti rad sa programerima
Softver je skup. Iz mog iskustva, dosta ljudi to stvarno razume tek kada uđu u razvoj prvog ozbiljnog proizvoda.
Dok je ideja još na papiru, sve deluje relativno jednostavno. Napravimo aplikaciju, dodamo nekoliko funkcionalnosti, angažujemo tim i krenemo. Danas još deluje i dostupnije nego ranije jer AI alati stvarno jesu spustili cenu prototipizacije i brzog MVP razvoja.
Iskreno, pre nego što uložite ozbiljan novac u razvoj, mnogo je pametnije prvo validirati ideju. Tu mogu potpuno otvoreno da preporučim Marka Milojkovića i ekipu iz Eterne za ljude kojima treba brzo testiranje ideje bez ulaženja odmah u ozbiljan produkcijski razvoj.
Mnogo manje boli kada shvatiš da ideja ne radi posle manjeg MVP budžeta nego kada to otkriješ nakon ulaganja vrednosti jedne garsonjere.
Ali onog trenutka kada proizvod krene ka pravoj produkciji, stvari postaju dosta ozbiljnije.
I tu većina problema zapravo nema veze sa programiranjem. Najčešće problem postane saradnja između biznisa i developera.
"Samo još ovo"
Jedna od najskupljih rečenica u razvoju softvera.
Nikada nije samo još ovo.
Sa strane biznisa to često deluje potpuno razumno. Doda se nova opcija, promeni se jedan deo flow-a, ubaci se još jedna mogućnost za korisnika. Ali softver retko funkcioniše linearno.
Jedna mala promena ume da napravi deset novih pitanja koja niko nije planirao kada je projekat počinjao. I što sistem postaje ozbiljniji, posledice "malih izmena" postaju skuplje.
Tu često nastane prvi ozbiljan konflikt između biznisa i tehničkog tima. Biznis vidi funkcionalnost. Developer vidi posledice. I obe strane imaju osećaj da ih ona druga namerno usporava.
Najskuplji projekti koje sam video nisu nužno bili tehnički najkompleksniji.
Najskuplji su uglavnom bili oni gde:
- nema specifikacije,
- niko nije znao šta je pravi prioritet,
- smer se konstantno menjao,
- rokovi su se davali nasumično,
- i gde je sve bilo hitno.
Haos je užasno skup u razvoju softvera.
Kad god to kažem ljudi prvo pomisle na novac, ali i ljudi vremenom izgube fokus. Tim prestane da radi planski i krene da radi reaktivno. Procene više ništa ne znače jer se kontekst menja iz dana u dan. Posle nekog vremena više niko nije siguran šta je završeno, šta je privremeno, a šta će ostati zauvek deo sistema.
Tada budžet počne ozbiljno da curi.
Senior developer ne koči. Senior developer vidi dalje.
Postoji još jedna stvar koju mislim da dosta ljudi pogrešno proceni kada rade sa senior developerima.
Kada iskusan developer postavlja mnogo pitanja, to vrlo često nije komplikovanje posla već je njegovo iskustvo (upravo zbog kojeg je tu).
Ljudi koji su dovoljno dugo radili na ozbiljnim sistemima unapred vide gde stvari mogu da krenu nizbrdo. Već su gledali:
- privremena rešenja koja su ostala godinama,
- feature-e koji su zakomplikovali ceo proizvod,
- i deployeve koji su delovali bezazleno dok nisu završili kao višednevni problem.
Zbog toga seniori mnogo češće govore:
„Može, ali…"
I upravo to "ali" je veoma često razlog zašto ih plaćate skuplje.
Previše optimizacije ume da bude jednako opasno kao loš kod
Naravno, ni tehnički timovi nisu uvek potpuno u pravu. Postoje developeri koji vremenom izgube osećaj za realan biznis i čemu softver zapravo služi.
Nekad se toliko fokus prebaci na arhitekturu, optimizaciju i "idealno rešenje" da proizvod počne da kasni tržištu.
Tržište zabole uvo za vaš elegantni kod.
Ljude zanima da proizvod rešava problem i da postoji na vreme.
Nije svaki sistem Netflix. Nekada je dovoljno da radi stabilno i da ne pravi haos.
Mikromenadžment ubija dobar tim
Najgora stvar koju možete da uradite kvalitetnom tehničkom timu je konstantan mikromenadžment.
Posle nekog vremena ljudi prestanu da rade kreativno i proaktivno. Krenu samo da zatvaraju taskove i izbegavaju probleme. A tim koji radi defanzivno gotovo nikada ne pravi ozbiljno dobar proizvod.
Pravi proizvod koji pokušava da preživi. To nije isto.
Programeri nisu mađioničari
Ne mogu da ubrzaju vreme. Ne mogu da uklone kompleksnost sistema. Ne mogu da poprave godine loših odluka preko noći.
Dobar tehnički tim može da napravi ogromnu razliku kada postoji poverenje i normalna komunikacija.
Ogroman broj problema u razvoju softvera nema veze sa tehnologijom. Mnogo češće problem nastane kada biznis i tehnika počnu da rade jedni protiv drugih umesto zajedno.
Na kraju dana, razvoj softvera nije samo tehnički proces.
To je odnos poverenja između ljudi koji imaju isti cilj, ali veoma često potpuno drugačiji pogled na problem.
Kada biznis i tehnika nauče da rade zajedno umesto jedni protiv drugih, razvoj prestane da bude konstantno gašenje požara i postane nešto što zapravo može da raste zdravo i dugoročno.
Najbolji projekti na kojima sam radio nisu bili oni bez problema, nego oni gde su ljudi mogli normalno da razgovaraju kada problemi nastanu.
To pravi ogromnu razliku.
U ENON Solutionsu smo kroz godine rada prošli kroz veoma različite projekte, timove i faze razvoja proizvoda. Od brzih MVP validacija do ozbiljnih produkcijskih sistema.
Najveća stvar koju smo naučili usput jeste da dobar softver retko nastane samo iz dobrog koda.
Mnogo češće nastane iz dobre saradnje.