Istega 'softverja' se ne piše dvakrat - Netokracija.si

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

Digitalni mediji

[DIGGIT] Podarimo brezplačno vstopnico!

Junijska konferenca o digitalnih komunikacijah se bliža! Sodelujte v nagradni igri, pravilno odgovorite na vprašanje in si zagotovite svoj sedež - brezplačno!

Svet startupov

Sklad Silicon Gardens investiral v 5 slovenskih startupov: Sqwiz, Povio, Flaviar, Getta.pro in Sphericam

Sklad Silicon Gardens je objavil seznam prvih petih investicij, ki so jih opravili od maja letos. Kot pravijo predstavniki sklada, je v Sloveniji in regiji dovolj talenta in inovacij.

Družbena omrežja

Instagram razkril demografske podatke uporabnikov v Sloveniji

Kolikokrat ste že iz radovednosti ali zaradi poslovnih razlogov zaman iskali podatek o številu uporabnikov Instagrama v Sloveniji? Sedaj so dolgo iskani podatki končno na voljo. Instagram je pred kratkim omogočil oglaševanje v regiji, s tem pa je tudi razkril nekaj demografskih podatkov slovenskih uporabnikov.

Zamudili ste ...

Vodnik

Vse, kar morate vedeti o organizaciji nagradnih iger na Facebooku in Instagramu

Katere so najbolj pogoste napake podjetij pri organizaciji nagradnih iger na Facebooku in Instagramu?

Družbena omrežja

Kaj se lahko na primeru malega Krisa naučimo o dobrodelnosti in preračunljivosti podjetij?

Se kdaj vprašate, kako smo posamezniki in podjetja dobrodelni? Je pogojevanje dobrodelnosti z nakupom sodelovanje s kupci ali preračunljivost, ki je namenjena pospeševanju prodaje? Smo do tovrstnih dobrodelnosti podjetij lahko kritični ali se to ne spodobi, saj vendar delajo dobro? Nabirka za malega Krisa je spodbudila ta razmislek o dobrodelnosti.

Vodnik

Veliki seznam coworking prostorov v Sloveniji

Kje v Sloveniji lahko najamem pisarno, sejno sobo, prostor za sestanek, si delim delovno mizo in ob tem izmenjujem izkušnje, ideje in informacije s somišljeniki?

Kultura 2.0

Vse, kar morate vedeti o platformi YouTube Music (ki je že na voljo v Sloveniji!)

Ni neznanka, da se YouTube v naši regiji še vedno pretežno uporablja kot platforma za poslušanje glasbe. Zdaj je tudi v Sloveniji na voljo storitev YouTube Music, posvečena prav glasbi, in preverili smo, kaj početi z njo in ali jo je sploh vredno preizkusiti.

Kultura 2.0

Zaplujte v poletje z novo različico World of Warships – battle royale

Nikoli nisem bil človek, ki sanjari o dolgih plovbah, a vedno sem užival v igrah, v katerih je treba upravljati s kakšno vrsto velike mehanizacije. To je preraslo v veliko ljubezen do simulatorjev pa tudi drugih iger, ki na primer vključujejo ladje ali tanke.

Spletni marketing

Kaj se lahko o vsebinskem marketingu naučimo od digitalnih agencij POINT OUT, Madwise in Optiweb?

POINT OUT, Madwise in Optiweb so tri slovenske digitalnomarketinške agencije, ki potencial svojih kanalov izkoriščajo za deljenje znanja, spodbujanje odprte razprave o različnih temah in posledično pritegovanje novih naročnikov.