Istega ‘softverja’ se ne piše dvakrat

"Življenje programerja je težko", je rekel moj prijatelj v šali. Vendar je resnično težko. Naša panoga napreduje zelo hitro. Tehnologija in praksa, ki jo za razvoj programske opreme uporabljamo danes, je lahko že jutri preteklost, "tehnični dolg". Pogosto imamo ambivalenten odnos do našega dela – nenehno se navdušujemo nad novim, obenem pa smo ogorčeni nad starim. Velikokrat se zgodi, da bi najraje odprli prazno datoteko in začeli znova.

programiranje

“Življenje programerja je težko”, je rekel moj prijatelj v šali. Vendar je resnično težko. Naša panoga napreduje zelo hitro. Tehnologija in praksa, ki jo za razvoj programske opreme uporabljamo danes, je lahko že jutri preteklost, “tehnični dolg”. Pogosto imamo ambivalenten odnos do našega dela – nenehno se navdušujemo nad novim, obenem pa smo ogorčeni nad starim. Velikokrat se zgodi, da bi najraje odprli prazno datoteko in začeli znova.

Sprememba je edina konstanta

Zagotovo ste že slišali za rek, da “dobra programska oprema ni nikoli dokončana”.  Vsak, ki je kdaj na trg poslal vsaj eno komercialno aplikacijo, ve, da razvoj programske opreme nikoli ni natančno načrtovan, niti nima nekega časovnega roka. Mene najbolj spominja na otroško igro z Lego kockami, kjer se nam na začetku zdi, da imamo natančno določen cilj, kasneje pa se končni cilj večkrat spremeni. Kar naenkrat se kockam pridružijo še avtomobilčki in kartonska škatla, velikokrat pa ugotovimo, da potrebujemo še več kock. Ta igra dejansko nima logičnega konca. Po navadi se konča takrat, ko nas prekine mama. Ali žena.

Spremembe so v naravi razvoja programske opreme. Na razvoj vpliva toliko neznank, da je neko dolgoročno načrtovanje popolnoma brezsmiselno. Pod našo kontrolo sta zgolj vizija in proces. Vse ostalo je prilagajanje tržišču in uporabnikom. Programer, ki si po mnogih letih razvoja neke programske opreme želi, da bi vse skupaj napisal na novo, pozablja na spremenljivo naravo svojega dela. Ko pogleda nazaj, vidi vse napake, zaradi katerih je programska oprema zastarela. Obenem pa ne razume, v kakšnih razmerah so bile te rešitve sprejete, in zato zmotno misli, da je sedaj še boljši, in se bo napakam zagotovo izognil. Izkušnje so pomembne, vendar pa prihodnost prinaša vedno nove neznanke, ki imajo nepredvidljiv vpliv na razvoj. Najboljše kar lahko storimo ni to, da vse zbrišemo in začnemo znova, ampak prilagodimo naš proces v upanju, da bo čez nekaj let nekega novega programerja glava bolela manj, kot nas pred leti.

Slaba ideja

Zdi se mi, da v praksi, ali:

  1. preoblikujemo, popravljamo, oziroma nadgrajujemo obstoječo programsko opremo ali
  2. pišemo novo, ki išče neko novo vizijo in odgovarja na vprašanja nekega novega trga.

Tretje možnosti ni. Napisati obstoječo programsko opremo od začetka je smiselna toliko, kot je smiselno dvakrat sestaviti enako letalo iz Lego kock. Tisti, ki ima otroke, bo razumel. Da je ponovno pisanje že obstoječe programske opreme slaba ideja, je najbolje opisal Joel Spolsky v svojem članku “Stvari ki jih nikoli ne smete storiti, prvi del”.  V njem opiše primer podjetja Netscape, ki je s svojo odločitvijo o izdelavi spletnega brskalnika popolnoma iz ničle, pripeljalo do katastrofalnih poslovnih posledic. Mladi bralci morda še niste slišali za Netscape. Morda je to ena od posledic te odločitve. Če si vseeno želite napisati neko programsko opremo popolnoma od začetka, predlagam, da si najprej preberete Joelov članek.

Nevarna terminologija

Kljub vsemu, programerji danes pogosto uporabljajo termin “napisati od začetka”.  Tudi če sva vas jaz in Joel do sedaj že nekoliko prepričala v nesmiselnost tega početja, je včasih tudi sama terminologija lahko nevarna. Naj vam to pojasnim na primeru mojih lastnih izkušenj.

Stranka, za katero trenutno delam je veselo, nemško programersko podjetje. Že več kot 8 let razvijajo programsko opremo, katere uporabniki so večinoma pravniki, ki cenijo varnost. Prodaja je uspešna, tako da je tudi direktor pretežno zadovoljen. Zadovoljni so tudi operativci. Zadovoljna je celo recepcija. Edini, ki niso ravno zadovoljni, so programerji. Preko vseh teh let, se je v njihovi programski opremi nabralo precej zastarelih rešitev. Te zastarele rešitve so začele motiti vodjo razvoja  do te mere, da je začel preklinjati svojega šefa, da naj mu dovoli, da naj programsko opremo “popravi z buldožerjem”. Izkušeni direktor pa se ni pustil zapeljati, in še naprej ni dovolil, da se programska oprema začne pisati znova. Vse do prejšnjega leta. Takrat je, na veliko veselje programerjev, dal zeleno luč za razvoj nove različice – iz ničle. Le kaj se je spremenilo?

Ko sem poslušal programerje, kaj si želijo v novi različici, so odzvanjale predvsem napredne tehnične rešitve: Angular, Node, Redis, Bootstrap itd. Nato pa sem spoznal direktorja. Njegova pričakovanja niso bila toliko tehnična. Navdušeno mi je pripovedoval, kako si odvetniki želijo, da bi v prihodnosti delali na mobilnih telefonih in tablicah. Pojasnjeval mi je, kako se je spremenil poslovni model, saj so se tudi konzervativni klienti navadili na SaaS, o tem, da obstajajo priložnosti tudi na drugih tržiščih, kjer ima varnost, še posebej po zadnjih škandalih NSA, vse večjo ceno. Dobil sem vtis, da govorim z vizionarjem, ki si dejansko ne želi toliko nove različice obstoječe programske opreme, bolj kot nekega novega produkta, ki bo kos novim izzivom. Motiv je poslovni, in ne tehnični. Odšel sem nadušen. Zavihali smo rokave in začeli z razvojem.

Nekaj, kar sem na začetku ignoriral, je nenadoma postalo jasno. Celotna ekipa je razvoj nove različice poimenovala “pišemo od začetka”. Tudi sodelavcem so govorili: “Pišemo od začetka”. “Delamo iz ničle”, sem slišal nekoga, ki je po telefonu pojasnjeval njegovo trenutno delo. Nekako sem se tudi sam neopazno privadil na to terminologijo, vendar pa sem se kmalu zavedel njenega negativnega vpliva. Predvsem imam v mislih to, da “pišemo od začetka” obstoječo programsko opremo, ki jo nato uporabimo kot specifikacijo za novo. Razvojna ekipa se je ves čas trudila izdelati uporabniški vmesnik, ki bi bil karseda podoben staremu, saj naj bi bili uporabniki nove različice identični uporabnikom stare. Programerji so se trudili rešiti enake tehnične probleme na nov način, brez da bi se vprašali, ali bo tudi te probleme treba v prihodnosti reševati ponovno. Kmalu mi je postalo jasno, da “pisanje od začetka” ni zgolj napačna terminologija, ampak tudi pristop, ki ima negativne posledice na naš razvojni proces.

Uporabnik pred tehnologijo

Ko se razvoj programske opreme začne od začetka, moramo imeti v glavi vizijo, ne pa tehnologijo. Motiv mora biti poslovni in ne tehnološki. Če nam je glavni cilj odprava tehnične zastarelosti, namesto napada na nov trg ali rešitve problema, bomo potem vložili dovolj časa v razvoj? Bojim se, da ne.

“Življenje programerja je težko”, je rekel moj prijatelj v šali. Imel je prav. Vendar pa moramo življenje najprej olajšati uporabniku, nato sebi.

Prevedel Janez Klemenčič

Priljubljeno

Spletni marketing

Brez video marketinga boste kmalu neopazni

Video vsebine vse bolj prevzemajo splet. Če še nimate video marketing strategije, je letos skrajen čas, da jo pripravite.

Spletni marketing

Od videa do mikro vplivnežev: kateri marketinški trendi bodo zaznamovali leto 2019?

Zakorakali smo v marketinško leto 2019. Poudarjamo 6 ključnih marketinških trendov, ki bodo letos zaznamovali slovenski digitalni prostor. Pripnite pas, saj nas čaka zanimiva pot!

Družbena omrežja

Že poznate TikTok, aplikacijo, ki je obnorela generacijo Z?

TikTok je aplikacija, ki je v zadnjem letu obnorela otroke in najstnike po vsem svetu. Tudi v Sloveniji. Šteje več mesečnih uporabnikov kot Twitter, Snapchat, LinkedIn in številne druge platforme. V prvem četrtletju 2018 pa je bila iOS aplikacija z največ prenosi v ZDA. Mladina, predvsem osnovnošolci in srednješolci, jo obožujejo, starši pa po večini niti ne vedo zanjo.

Zamudili ste ...

Družbena omrežja

Že poznate TikTok, aplikacijo, ki je obnorela generacijo Z?

TikTok je aplikacija, ki je v zadnjem letu obnorela otroke in najstnike po vsem svetu. Tudi v Sloveniji. Šteje več mesečnih uporabnikov kot Twitter, Snapchat, LinkedIn in številne druge platforme. V prvem četrtletju 2018 pa je bila iOS aplikacija z največ prenosi v ZDA. Mladina, predvsem osnovnošolci in srednješolci, jo obožujejo, starši pa po večini niti ne vedo zanjo.

Spletni marketing

Od videa do mikro vplivnežev: kateri marketinški trendi bodo zaznamovali leto 2019?

Zakorakali smo v marketinško leto 2019. Poudarjamo 6 ključnih marketinških trendov, ki bodo letos zaznamovali slovenski digitalni prostor. Pripnite pas, saj nas čaka zanimiva pot!

Spletni marketing

Brez video marketinga boste kmalu neopazni

Video vsebine vse bolj prevzemajo splet. Če še nimate video marketing strategije, je letos skrajen čas, da jo pripravite.

Mobilno

Se lahko Honor 9 kosa z najboljšimi?

Honor 9 se zdi logična izbira za vse tiste, ki potrebujejo lepo oblikovan mobilni telefon z odličnimi specifikacijami.

Novica

Na spletu se najbolje nakupuje na gizzmo.si in mrpet.si!

Konferenca Ecommerce Day 2017 v Ljubljani je danes postregla z zmagovalci letošnjega izbora najboljših spletnih trgovcev. Glavna nagrada za večje spletne trgovce je pripadla trgovini gizzmo.si, glavna nagrada za manjše spletne trgovce pa mrpet.si.

Intervju

Strateg rasti: kdo je, kaj počne in kdo ga potrebuje?

Z razvojem tehnologije so se razvili tudi novi, digitalni poklici – delovna mesta z “nenavadnimi” nazivi in zadolžitvami. Kdo je growth strategist ali po slovensko strateg rasti? Kaj počne in kdo ga potrebuje? Podrobnosti poklica nam razkriva Maja Voje, strateginja rasti pri MAD Kings Growth Agency v Bruslju, ki jo lahko ta petek, 10. 11., srečate na dogodku Growth Marketing Conference Meetup v Ljubljani.