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 ...

Spletni marketing

Kaj mora znati dober urednik družbenih omrežij leta 2019?

Urednik družbenih omrežij se dnevno sooča s kupom opravil, delo pa zahteva obvladovanje številnih veščin. Katere so in na kaj je treba paziti, ko iščete urednika za svoje kanale na družbenih omrežjih?

Tehnologija

Kako se razlikujeta Kanban in Scrum in katero metodo izbrati?

Kako izbrati pravo agilno metodo oz. dovoliti, da metoda izbere vas?

Družbena omrežja

Kako starejša generacija uporablja družbena omrežja?

Demografska struktura na družbenih omrežjih se spreminja. Čeprav je bil Facebook sprva omrežje za študente in mlade, ima danes pomembno vlogo tudi za naše starše in stare starše.

Svet startupov

7 podjetniških lekcij, ki sem se jih naučil iz preteklih (ne)uspehov

Marin Medak je soustanovitelj podjetja Della Spina, ki prodaja dipotrijska očala prek spleta. V današnji kolumni razkriva nekaj zanimivih in poučnih lekcij, ki vam zagotovo pridejo prav na podjetniški poti.

Spletni marketing

Otroci in prikrito oglaševanje s spletnimi vplivneži

Morda se vem zdi, da vsi trije pojmi iz naslova niso povezani med seboj, a pokazala vam bom, da so močno prepleteni.

Družbena omrežja

Manca Korelc: Kako uspešno uporabljati LinkedIn?

S strokovnjakinjo za LinkedIn Manco Korelc smo poklepetali o tem, kako kar najbolje izkoristiti potencial, ki vam ga ponuja največje spletno poslovno omrežje.