Isti se softver ne piše dvaput

Isti se softver ne piše dvaput

"Težak je život programera", umeo je šaljivo da kaže jedan moj prijatelj. I jeste težak. Naša profesija napreduje veoma brzo. Tehnologije i prakse, koje danas koristimo za razvoj softvera, već sutra postaće naš tehnički dug. Često imamo ambivalentan odnos prema svom poslu: konstantno smo oduševljeni novim, a ogorčeni nasleđem. Nije retkost da poželimo da otvorimo praznu datoteku i počnemo iz početka.

programiranje

“Težak je život programera”, umeo je šaljivo da kaže jedan moj prijatelj. I jeste težak. Naša profesija napreduje veoma brzo. Tehnologije i prakse, koje danas koristimo za razvoj softvera, već sutra postaće naš tehnički dug. Često imamo ambivalentan odnos prema svom poslu: konstantno smo oduševljeni novim, a ogorčeni nasleđem. Nije retkost da poželimo da otvorimo praznu datoteku i počnemo iz početka.

Promena je jedina konstanta

Sigurno ste već čuli izreku da “dobar softver nikada nije završen”. Svako ko je na tržište poslao bar jednu komercijalnu aplikaciju, zna da razvoj softvera nije precizno isplaniran, vremenski ograničen projekat. Mene više podseća na dečiju igru Lego kockama, gde nam se na početku čini da imamo jasnu ideju šta želimo da napravimo, a onda se ciljevi često menjaju. U igru odjednom uleću i neki autići i kartonska kutija, a neretko shvatimo i da nam fale neke kocke. Igra zapravo nikada ne dolazi do nekog logičnog kraja. Uglavnom se završava kad nas prekine mama. Ili žena.

Promene su u prirodi razvoja softvera. Na njega utiče toliko nepoznatih stvari, da je svako dugoročnije planiranje potpuno besmisleno. Pod našom su kontrolom samo vizija i proces. Sve ostalo je reakcija na tržište i korisnike. Programer, koji nakon mnogih godina razvoja nekog softvera želi da ga napiše iz početka, zaboravlja na tu promenljivu prirodu svog posla. On gleda unazad i jasno vidi pogrešne odluke, koje su uzrok za tehnički dug. Međutim, često ne može da razume pod kakvim su okolnostima takve odluke donete i pogrešno pretpostavlja da će ovog puta, poučen iskustvom, moći bolje da planira i izbegne nove greške. Iskustvo jeste važno ali novo vreme donosi nove nepoznate, koje imaju neki novi, nepredvidljiv uticaj na razoj. Najbolje što možemo da uradimo nije da srušimo i počnemo iz početka, već da prilagodimo naš proces, nadajući se da će za par godina nekog novog programera glava boleti manje nego nas.

Loša ideja

Smatram da u praksi ili:

  1. refaktorišemo, popravljamo, odnosno nadgrađujemo postojeći softver ili
  2. pišemo novi, koji treba da prati neku novu viziju i odgovori nekom novom tržištu.

Trećeg nema. Napisati postojeći softver iz početka ima smisla koliko i ponovo napraviti isti avion od Lego kocaka. Ko ima decu, razumeće.

Koliko je ponovno pisanje postojećeg softvera loša ideja, najbolje je opisao Joel Spolsky u svom članku: “Stvari koje nikad ne bi smeli da radite, prvi deo”. U njemu opisuje slučaj kompanije Netscape, na koju je odluka da iz početka napiše svoj web browser imala katastrofalne poslovne posledice. Mlađi čitaoci možda neće znati za Netscape, ali možda je i to jedna od tih posledica. Ako ikada poželite da napišete neki softver iz početka, predlažem da prvo pročitate Joelov članak.

Opasna terminologija

Uprkos svemu, programeri i danas često koriste termin “napisati iz početka”. Sve i da smo vas do sad Joel i moja malenkost ubedili u besmislenost toga, ponekad je i sama terminologija opasna. Ali to bih želeo da vam objasnim na primeru iz sopstvenog iskustva.

Klijent za koga trenutno radim je jedno veselo, nemačko softversko preduzeće. Već 8 godina razvijaju softver, čiji su korisnici uglavnom pravnici, koji cene sigurnost. Prodaja ide dobro, pa je direktor uglavnom zadovoljan. Zadovoljna je i operativa. Zadovoljna je čak i recepcija. Jedini, koji nisu toliko zadovoljni, su programeri. Tokom svih tih godina, u njihovom se softveru nagomilao tehnički dug. Tištio je taj tehnički dug vođu razvoja, pa je s vremena na vreme preklinjao svog šefa, da ga pusti da softver “refaktoriše buldožerom”. Iskusni direktor se nije dao prevariti, pa je zahteve da se počne iz početka dugo odbijao. Sve do prošle godine. Tada je, na veliko veselje svojih programera, dao zeleno svetlo za razvoj nove verzije – iz nule. Šta li se promenilo?

Slušajući programere, dok su mi pričali šta sve žele da urade u novoj verziji, odzvanjala su uglavnom moderna tehnička rešenja: te Angular, te Node, te Redis, te Bootstrap, itd. A onda sam upoznao direktora. Njegova očekivanja nisu bila toliko tehnička. Pričao mi je oduševljeno o tome kako advokati budućnosti žele da rade na telefonima i tabletima. Objašnjavao je kako su se promenili poslovni modeli jer su se i konzervativniji klijenti navikli na SaaS, kako postoje nove prilike na drugim tržištima, gde sigurnost, posebno nakon poslednjih NSA skandala, ima sve veću cenu, itd. Stekao sam utisak da razgovaram s vizionarom, koji zapravo ne želi toliko novu verziju postojećeg softvera, koliko neki nov proizvod, koji će odgovoriti nekim novim izazovima. Motiv je poslovni, a ne tehnički. Izašao sam oduševljen. Zasukali smo rukave i razvoj je počeo.

Nešto, što sam na početku ignorisao, a što mi je tek kasnije upalo u uši, je da ceo tim razvoj nove verzije naziva “pisanje iz početka”. “Pišemo iz početka”, govorili su drugim kolegama. “Gradimo je iz nule”, čuo sam kako neko objašnjava preko telefona. Nekako sam neoprezno i sam prihvatio tu terminologiju ali sam ubrzo počeo da shvatam njen negativan uticaj. Obzirom da mi “pišemo iz početka” postojeći softver, onda ga koristimo kao da je specifikacija za novi. Produktna ekipa je pokušavala da osmisli novi korisnički interfejs, sve vreme gledajući u stari i pretpostavljajući da će korisnici nove verzije biti identični postojećim. Programeri su pokušavali da reše iste tehničke probleme na novi način, ne pitajući se da li te probleme ovog puta uopšte treba rešavati. Postalo mi je jasno da “pisanje iz početka” nije samo bezazlena terminologija, već pristup, koji ima opasan uticaj na naš razvojni proces.

Korisnik pre tehnologije

Kada razvoj softvera počne iz početka, u glavama treba imati viziju, a ne tehnologiju. Motiv treba da bude poslovni, a ne tehnološki. Ako su nam prioriteti poređani tako, da nam je glavni cilj otplatiti tehnički dug, a ne rešiti nove probleme ili napasti novo tržište, da li ćemo dovoljno vremena utrošiti na inovaciju? Bojim se da ne.

“Težak je život programera”, umeo je šaljivo da kaže moj prijatelj. Imao je pravo. Ali život prvo moramo da olakšamo korisniku, pa tek onda sebi.

Sukladno članku 94. Zakona o elektroničkim medijima, komentiranje članaka na Netokraciji dopušteno je samo korisnicima koji ostave svoje ime i prezime te mail adresu i prihvate pravila ponašanja.

Pravila ponašanja

Na Netokraciji za vas stvaramo kvalitetan, autorski potpisan sadržaj i zaista se veselimo vašim kvalitetnim, kontruktivnim komentarima. Poštujmo stoga jedni druge prilikom komentiranja, kao i Zakon, držeći se sljedećih pravila ponašanja:

  • Ne budite 💩: Nema vrijeđanja, diskriminiranja, ni psovanja (osim ako nije osobni izričaj, ali onda neka psovka bude općenita, a ne usmjerena prema nekome). Također, upoznajte se sa stavkom 2. članka 94. Zakona o elektroničkim medijima prije no što ostavite komentar.
  • Samo kvalitetna rasprava, manje trolanja: Ne morate se ni sa kim slagati, ali budite konstruktivni i doprinesite raspravi! Svako trolanje, flameanje, koliko god "plesalo" na granici, leti van.
  • Imenom i prezimenom, nismo Anonymous 👤: Autor sadržaja stoji iza svog sadržaja, stoga stojite i vi iza svog komentara. Koristimo ime i prezime te pravu email adresu.

Kako koristimo podatke koje ostavljate? Bacite oko na našu izjavu o privatnosti.

Sve ostale komentare ćemo s guštom spaliti, jer ne zaslužuju svoje mjesto na internetu.

Komentari

  1. Petar

    Petar

    13. 12. 2013. u 3:38 pm Odgovori

    Osobno ne volim kada ljudi daju isključive savjete. Uvijek radi ovo, nikad ne radi ono.

    Više volim “možda”, “ovisi”, “ponekad”, ali da, problem je da se to teže “prodaje”.

    Tako da ovo “Isti se softver ne piše dvaput” može biti istina većinu vremena ali nikako uvijek.

    Život je komplicirana stvar i možemo doći u bezbroj situacija, posebno kad se okolnosti često mijenjaju.

    Popravljao sam jako slabi kod, koji je “radio”. Ali više se je isplatilo tu jad i bijedu napisati iznova nego biti pod stalnom brigom kad će puknuti i koliko dana ću potrošiti da nađem gdje je problem. Ali tada je išlo za relativno malu investiciju, tako da sve ovisi.

    Na nekoj burzi su investirali milijune u .NET kod, pa su koliko se sjećam otkrili da im je problem garbage collector, jer im stvara kašnjenje od nekoliko milisekundi. Ali tamo su te ms vrijedne ogromne pare. I bacaj sve u vodu i piši na novo u C-u.

    It depends……

    :))

  2. Poratl za posao

    Poratl za posao

    16. 12. 2013. u 10:41 am Odgovori

    Slažem se s Petrom. Sve je stvar pojedinačne situacije. I ja sam imao slučajeve gdje sam nasljedio kod od prijašnjih programera koji su napravili kupus od programa, a potom dali otkaz. Vidio sam da je krajnje besmisleno to održavati jer se na održavanje gubi jako puno vremena. Zato sam napisao sve iznova. Bio sam sretan i ja i poslovodstvo.

    Štoviše, svaki program, odnosno svaki IS ima svoj životni ciklus. Kada vrijeme (i troškovi) održavanja počinju biti veliki i besmisleni, onda ide “Jovo nanovo”.

Odgovori

Tvoja e-mail adresa neće biti objavljena.

Popularno

eUsluge

Grad Zagreb omogućio potpun uvid u proračun kroz aplikaciju iTransparentnost

Nova aplikacija omogućuje svakom građaninu da detaljno prouči gradski porarčun po različitim parametrima.

Startupi

Što je to R&D potencijal – i kakve veze ima s razvojem startupa?

Je li startup nacija u kojoj su nastali tech giganti kao Skype, Wise, Bolt i Pipedrive to postala slučajno, otkrijte sa mnom na putu u Estoniju.

Nesortirano

Što je Akt o čipovima – i kako će doprinjeti tehnološkom razvitku Hrvatske

Jačanje konkurentnosti Europske unije u industriji poluvodiča prilika je i za Hrvatsku koja u sklopu 43 milijarde eura vrijedne incijative priprema otvaranje edukacijskih centara.

Što ste propustili

Panel

Hrvatski game developeri o stvaranju “ozbiljnih” videoigara

S predstavnicima game dev studija, ali i drugih privatnih tvrtki i dobrotvornih organizacija, raspravljamo o razvoju videoigara kojima svrha nije samo zabava, već i edukacija.

Intervju

Ivan Mrvoš: “Include više nije samo ‘onaj mali s pametnim klupama'”

Include, solinski startup poznat po pametnim klupama Steora, okrenuo se razvoju i proizvodnji novih proizvoda. Mrvoš, koji još nema ni 30 godina, a već je iskusni poduzetnik s respektabilnom karijerom, za Netokraciju je ispričao kako se i koliko ta tvrtka promijenila. Nedavno smo mogli pročitati da bi mogli promijeniti i vlasnika...

Esport

Peta sezona SET-a zaključena u Infobipu: Od 22 fakulteta pobjednički je varaždinski FOI

Student Esports Tournament, jedan od najpoznatijih studentskih esport događaja u Hrvatskoj, petu sezonu završio je u spektakularnoj LAN završnici koja se održala u prostorima Infobipa u Zagrebu.

Novost

Goran Bosankić u Field39 stiže na poziciju Chief Revenue Officera

Nakon više od 6 godina u Assecu SEE, a potom isto toliko u ABC Tech grupi, Goran Bosankić dolazi u Field39 kao Chief Revenue Officer i član Upravnog odbora.

Digitalni marketing

Super Bowl fenomen iliti “Vrijeme je da se vratite pred TV. Počinju reklame.”

Dok sam bio u Americi netom prije Super Bowla jedno mi je postalo jasno. Američki nogomet tamo je religija, a SuperBowl kao Božić. Samo što se za ovaj Božić svi okupe oko TV-a gledati reklame!

Novost

Teo Širola iz Muzeja iluzija proglašen najboljim mladim menadžerom 2023. godine

Hrvatsko udruženje menadžera i poduzetnika (HUM) CROMA dodijelilo je predsjedniku tvrtke Metamorfoza, koja upravlja globalnom mrežom Muzeja iluzija, nagradu za mladog menadžera 2023. godine.