Isti se softver ne piše dvaput

Infobip ❤️ Netokracijašto akvizicija znači za vas - i nas?

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

Novost

Što se događa u tech industriji? Masovna otpuštanja, kripto-burza propala preko noći, a tek Twitter…

Malo je reći kako ovaj tjedan nije bio dobar za IT industriju. Zapravo, poprilično je kaotičan i čini se kako stabilnost neće doći uskoro...

Zabava i zanimljivosti

Marin u San Franciscu: TechCrunch Disruptom kruže roboti, na Golden Gateu nema signala

"I Left My Heart In San Francisco" pjevao je kultni američki pjevač Tony Bennett. Mogu li ja uskliknuti isto? Ne baš, ali San Francisco je grad koji će mi definitivno ostati u sjećanju do kraja života...

Vodič

Gdje ćemo se družiti i raspravljati ako propadne Twitter?

Bilo da vas brine koliko dugo će još Twitter funkcionirati (što nije čudo s obzirom na svakodnevne vijesti o zbunjujućim poslovnim potezima) ili da ne želite biti dio Muskovog Twittera, evo što se nudi od alternativa.

Što ste propustili

Tvrtke i poslovanje

Marko Rakar: Cyber kriminalci često su u sustavu tjednima prije nego “zaključaju” sve što imate

Koje su ono stereotipne tvrdnje za Hrvatsku? Obožavamo nogomet i kavu, imamo predivnu obalu... što je još ostalo? Tako je! Zaboravili smo našu sklonost korupciji, a koliko je ta skonost jaka pokazalo je opširno istraživanje. Na Dan cybersigurnosti komentiramo podatke s glavnim čovjekom iza istraživanja - Markom Rakarom.

Intervju

Hrvatski Meddox digitaliziranjem zdravstvenih nalaza privukao 10 tisuća aktivnih korisnika

Novi hrvatski healthtech projekt grabi naprijed. U prvoj godini, nakon investicije od 1,5 milijun kuna, došli su do 10 tisuća aktivnih korisnika, a za iduću godinu im je plan doći do 50 tisuća. Što ih čeka prije toga i kako su došli do trenutnih rezultata, otkrivaju nam suosnivačice.

Intervju

Engineering Management lekcije o Performance Managementu: kako izvući maksimum iz svog tima?

Ako ste vodili ljude, na pamet vam sigurno često padne ona poznata: sto ljudi - sto ćudi. A vi ste jedan menadžer! Kako izbalansirati različit učinak, očekivanja i mogućnosti kolega u timu otkrivamo ususret posljednjeg Photomathovog Engineering Management meetupa ove godine.

Tvrtke i poslovanje

Može li softver doista pomoći zviždačima koji upozoravaju na nepravilnosti u tvrtkama? Da, ali…

Iako može igrati važnu ulogu u poticanju prijava nepravilnosti i zaštiti identiteta, softver ne može riješiti ključne probleme s kojima se zviždači susreću.

Intervju

Zašto svaki NBA klub zapošljava podatkovne znanstvenike? Ispričat će Iztok Franko na Advanced Technlogy Days

Što stručnjak za digitalni marketing radi kao predavač na konferenciji koja se zove Advanced Technology Days? I kakve veze s tim ima košarka?

Netokracija Podcast

Maja Bilić iz Googlea savjetuje kako se pripremiti za ukidanje kolačića treće strane

U novoj epizodi Netokracijinog podcasta ugostila sam - svoju sestru! Ne samo jer mi je sestra :D, nego jer je Maja odlična sugovornica na temu o kojoj intenzivno razmišljaju svi koji se bave digitalnim marketingom, e-commerceom ili rade u digitalnim medijima.