Kao
Razvoj softvera je poput plovidbe morem. Kormiralimo snagom znanja i iskustva, krotimo ćudi talasa koji nas prate; katkad nas lagano ljuljajući, a nekad divlje terajući ka obzorju. Stojimo na pramcu, mi pomorci softverskog razvoja, zagledani u plavetnilo koje se prostire do kraja vidika. U večito neizvesnom prostranstvu, pitamo se - šta donosi sledeći talas, kakvi novi zahtevi nas čekaju, gde će zapeti greška, hoće li klijent biti zadovoljan, kakav će bag isplivati? Svaki dan na moru nosi novu lekciju, svaki izazov donosi vrednost koja se preslikava na naš rad. Kada je posada našeg softverskog tima uigrana, jedrimo najbrže; svaki vetar nas gura u leđa, svaki talas nas baca ka napred. Na moru se sve, svakog časa, neprestano menja; mi, pomorci softverskog razvoja plešemo večitu igru s vetrom, vodom, suncem i mesecom; jedrimo izazovima projekta stalno dalje, ka cilju. …
Al’ sam vas preveslao.
Arhitektura
Predavanje na arhitektonskom fakultetu:
Dragi studenti, osmotrite ovaj građevinski objekat; uočite stamenu osnovu i ispratite modularnost prostorija, nasleđivanje spratova… sve je poput razvoja kakvog softverskog projekta.
(nijedan profesor arhitekture ikada.)
Da li su poređenja simetrična? Ako je razvoj softvera sličan arhitekturi, da li je arhitektura nalik razvoju softvera?
Metafora
Analogije i metafore su neizbežne u naučnoj naraciji. Naučnici redovno posežu za poređenjima da bi formulisali hipoteze i interpretirali rezultate, kao i da komuniciraju nalaze, zapažanja, rezultate. Ovakav način izražavanja odgovara nestručnima: dobijaju smisao i kontekstualizuju apstraktne ideje, stiču nova znanja. Dakle, poređenja su neophodna - neki tvrde da su nisu u pitanju samo lingvističke figure, već osnova za misaone procese i konceptualna razumevanja, jer mapiraju značenja i znanja iz jednog domena u drugi.
S druge strane, metafore mogu da ometaju razumevanje; čak i pojačavaju nedoumice i nesporazume. Zanimljiva je kritika metafore za gen (jedinica nasleđivanja): od “nacrt”, koja se učestalo koristi, bolje je poređenje “recept”, jer je preciznija analogija. Nisam slučajno izabrao ovaj primer: gde su geni u programiranju? U klasama?
Kakve veze ovo ima sa softverskim inženjerstvom? Velike. To što lingvistike nigde nema u korpusu inženjera koji se - ironije li - bave programskim jezicima ne predstavlja izgovor. Programiranje je komunikcija sa drugim inženjerima kroz kod; u svetu koji je sačinjen od apstrakcija pravilna upotreba poređenja je važna.
Etika poređenja
Pristižem do teme. Uočavam učestalu potrebu za nečim što nazivam “generalizacija poređenjem.” To su poređenja koja generalizuju celu struku, poredeći je sa drugim aktivnostima:
- Softverska arhitektura je kao arhitektura građevina,
- Vođenje tima je kao obrada polja,
- Razvoj softvera je kao upravljanje čamcem,
- Upravljanje timom je poput upravljanja školom,
- Razvoj je poput hirurgije,
- Razvoj je poput snimanja filma,
- …
…i tako se ovaj niz svakodnevno nastavlja dalje, za inspiraciju je dovoljno uključiti se na LI.
Besmislice.
Problem sa ovakvim poređenjima je stručnost. Poređenje dve prakse može da pruži samo onaj ko je profesionalno radio u obe struke. Mnogi od autora gornjih izjava nude privid razumevanja pružajući nam poređenje koje nam na prvi pogled izgleda smisleno, jer, zapravo, pojma nemamo kako ta druga aktivnost (obrada polja, snimanje filma…) zaista izgleda. Kako ispada, isti slučaj je i sa autorima “pametnih” misli: ni oni sami nemaju profesionalna iskustva iz bilo koje navedene oblasti sa kojom porede razvoj softvera.
Autori, dakle, porede razvoj softvera sa praksamo o kojima sami nemaju pojma. To dovodi u pitanju njihovu etiku: pričaju o nečemu o čemu ne znaju.
Samo-šamar
Oblače, šta je ovo? Šta pa ti, Oblače, znaš o baštovanstvu!?
Sad bi bio štos da izvučem diplomu hortikulture sa poljoprivrednog fakulteta - ali, jbg, nemam. Greši čovek.
Inače, “snimanje filma” je moja ideja o tome na šta bi razvoj softvera mogao da liči - uz sva upozorenja da o snimanju filmova znam tek ono šta sam pročitao iz popularističkih knjiga. Čini mi se da je taj proces u isto vreme i besramno egoističan i podvrgnut pravilima kompozicije kadrova u službi pričanja priče; slično razvoju softvera?
Umetnost
Granica koju ne prelazim je poređenje razvoja sa umetnošću. To mi govori da 1) ništa ne znate o umetnosti i 2) ništa ne znate o razvoju.