Ako ste tek skočili na ovu stranicu, možda prije svega da pročitate prethodne dijelove i to:
Dio I. Ideologija i stav
Softverski obrt
Moglo bi se reći: Napokon! Nakon što nas je Sandro proveo kroz par poglavlja i objasnio nam, odnosno podsjetio šta jeste i šta nije agilnost, zašto ova knjiga i ova tema i tako dalje, došli smo do poglavlja u kom će nam napokon reći šta je to i šta nije Softverski obrt/zanatstvo (Software Craftsmanship).
Pa prije nego je bilo šta kazao, veli on, bolje je da odmah na početku kažemo, šta to Softverski obrt nije, a nije:
- Lijep kôd
- Razvoj vođen testovima (TDD – Test-Driven Development)
- Specifična tehnologija ili metodologija – posebno ne certificiranje (?!!)
- Religija
Moglo bi se reći da je ova zadnja stavka možda i najvažnija. Živimo u svijetu ubrzanog svega i nemamo vremena za osnovne životne potrebe, a imamo stare navike iz života koji je tekao sporije, posebno mi u zemljama koje prolaze tranzicije. Nekada je bilo dovoljno da čovjek uči dok ide u školu odnosno fakultet i do kraja života više ne mora knjige prihvatiti. To se promijenilo odavno, ali mnogima nije. Nije podsvjesno. Pa tako, ljudi vide neku novi ideju, tehnologiju, metodologiju, process, standardizaciju, toliko se slijepo uhvate toga, da postanu opsjednuti time, baš poput religioznih fanatika drže se toga i okolo sve ubjeđuju u to čega su se prihvatili. Možda zbog toga što žele da izvuku maksimalan profit iz uloženog (par mjeseci neke akšam-škole) ili nešto drugo, nije bitno danas.
Opis kroz metafore
Softverski obrt je skoro isto što i softverski inžinjering, ali je namjerno uzet drugi naziv da bi se kroz sam naziv dala jedna nova slika, jedan novi pogled na razvoj softvera. Baš poput starih zanatlija, kao što su kovači npr. Pripravnici će raditi uz starije, iskusne majstore, korak po korak. Savladavaće alate, tehnike, učinje o metalima, temperaturi, vatri, … Da bi postali (samostalni, vrhunski) majstori moraju proći kroz nekakav tretman prakse i mentorstva.
Sandro nam također govori, da se ne obaziremo previše na definiciju koja se nalazi na Wikipedia jer on ne vidi softverski obrt kao takav i definicija koja se nalazi tamo, po njemu je potpuno pogrešna.
Za Sandra, najkraća, najsažetija definicija i ono što on želi da čitaoci zapamte iz ove knjige jeste to da:
Softverski obrt govori o profesionalizmu u razvoju softvera.
Mnogi iskusni programeri reći će kako je razvoj softvera, odnosno kodiranje i programiranje poput umjetnosti. Neophodno je izraziti vlastitu kreaciju kroz pisanje kôda ili kao što pisac, pjesnik ima 30 slovnih oznaka i s njima napravi odlično djelo ili nikakvo, slično je i s programerima. Svi imaju tačno određen broj oznaka (slova i druge oznake), ali samo rijetki, umjetnici, uspiju u svojim nakanama ostvariti vrhunske rezultate – dobiti Nobela.
I sam Sandro veli da je i on tako godinama posmatrao razvoj softvera, ali onda je kroz godine iskustva i usavršavanja promijenio mišljenje i radije sada razvoj softvera gleda kroz zanat, za koji još uvijek treba talenat naravno, kroz koji će se izraziti kreativnost, ali praksa, rad, mentorstvo, usavršavanje, učenje, znatiželja, sve je to satkano u nečemu što on želi da predstavi kao Softverski obrt.
Naravno, postoje i ljudi koji će reći kako je razvoj softvera trgovina kao i svaka druga, ima svoje neke specifičnosti i to je to. Neki neće promijeniti svoje mišljenje i stavove da je razvoj softvera samo i jedino inžinjerstvo i tačka. A veoma rijetki – vjerovatno akademski radnici – reći će kako je razvoj softvera nauka. Svi oni imaju argumente da održe svoje stavove – i to ne bi trebao biti nikakav problem. Sandro veli da nije tu da nekoga ubjeđuje šta razvoj softvera jeste ili nije, no samo da ponudi svoje viđenje, pojasni to i pomognemo svi jedni drugima da budemo bolji, a prije svega da kranji proizvod bude bolji.
Svi mi treba da pomažemo jedni drugima da budemo profesionalci u razvoju softvera, a ne neki nekvalifikovani ili nižekvalifikovani radnici koji rade samo ono što im se kaže. To je poenta svega, a ne kako će se sam razvoj softvera nazivati, veli Sandro.
Samit softverskog obrta
Sedam godina od samita Agilnog pristupa razvoju softvera, odnosno Proglasa agilnosti (Agile Manifesto), postalo je veoma očigledno da Agilni pristup nije baš sve ono što se od njega očekivalo, a o tome da je sam agilni pristup pogrešno shvaćen od mnogih kompanija suvišno je i govoriti.
Zbog svega toga, ali i još mnogo čega drugoga određeni broj ljudi, a prije svega Majkh Martin (Micah Martin) i Poul Pejgel (Paul Pagel) organizovali su konferenciju softverskog obrta 13. decembra 2008. godine u Libertvilu (Libertyville), savezna država Ilinos, svega nekoliko kilometara od Čikaga.
Nakon ove prve konferencije na kojoj je bilo svega tridesetak ljudi, godinu dana kasnije organizovana je međunarodna konferencija, jer je proglas koji je donesen u međuvremenu, a vezano za softverski obrt bio dobro primljen od vodećih i ključnih ljudi u razvoju softvera širom svijeta.
Proglas softverskog obrta (The Software Craftsmanship Manifesto)
Nakon što je cijeli svijet upoznat s proglasom agilnog razvoja softvera (Agile Manifesto) s pravom su se neki ljudi upitali ili pobunili, zašto da kopiramo ili zašto da stvaramo novi proglas. Šta će od njega biti koristi i da li će nas to odvesti u pogrešnom smijeru ili pogrešnim pravcem kao što je mnoge one koji su se (slijepo) prihvatili agilnog proglasa. Međutim, Kori Hejns (Corey Haines) na konferenciji 2009. godine rekao je slijedeće:
„Postajući vokalna (samostalna) zajednica, objavljujući proglas, započinjući rad na uspostavljanju principa i konkretnih škola mišljenja, mi stvaramo svjetlo koje novi programeri mogu ugledati. Oni koji su stvarno zainteresovani mogu nas lakše pronaći, razgovarati s nama o naukovanju, upoznati kompanije koje se aktivno bave zanatskim aktivnostima-naukovanja itd. U nekim slučajevima to će ih prije uvesti u ove ideje, nadamo se da će ih neke spasiti frustracije s kojima se mogu suočiti u drugačijoj situaciji.”
Proglas
Kao ambiciozni softverski majstori podižemo nivo profesionalnog razvoja softvera tako što ga praktikujemo i pomažemo drugima da nauče zanat. Kroz ovaj rad shvatili smo slijedeće:
Ne samo softver koji radi,
nego također i dobro iskovan softer.
Ne samo da reaguje na promjene,
nego i neprestano da se dodaju nove vrijednosti.
Ne samo pojedinci i interakcije,
nego i cjelokupna zajednica profesionalaca.
Ne samo saradnja s kupcima,
nego također i produktivno partnerstvo.
Težeći stvarima s lijeve strane (prvi dio rečenice), ustanovljeno je da su stvari s desne strane (drugi dio rečenice) itekako važne.
Cilj proglasa, ali i cjelokupnog softverskog obrta jeste to da programeri pokažu krajnjim korisncima, odnosno kupcima softvera da im je itekako stalo do onoga što rade, a ne da im samo ispadne iz šaka ili da je važan kvanitet kako bi se zaradilo što brže i što jednostavnije. Programeri pokazuju svojim kupcima da žele raditi skupa, zajednički kako bi se proizveo sjajan, dugovječan softver pomažući klijentima da ostvare svoje ciljeve (pa čak i ako klijenti u početku nemaju pojma kakav softver žele).

Dobro iskovan softver
Dodavanje ili promjena ponašanja softvera ne bi trebala da traje duže nego što je to bio na početku projekta, kada je kôd bio veoma mali.
Korištenje testovima upravljanog razvoja (TDD – Test-Driven Development), jednostavnog dizajna i izražavanja poslovne logike u kôdu su najbolji način za očuvanje zdravog i dobro izrađenog kôda.
Neprestano dodavanje novih vrijednosti
Jedini razlog zašto kompanije ulažu u razvoj softvera jeste zarada, ušteda novca ili zaštita već ostvarenih prihoda kroz druge aktivnosti. Razvoj softvera je preskupa aktivnost, ne samo zbog plata samih programera, nego i svih ostalih uključenih koji su podrška programerima, ali i odsjek za marketing, razne službe upravljanja, servisiranja, … Sve se to zbraja.
Stoga, veoma je važno imati softver u koji se može na veoma bezbijedan način i uz minimalne troškove dodati nova vrijednost. Vrijednost koja će opravdati ono zbog čega se kompanije odlučuju na razvoj softvera.
Ovo je veoma važna stvar, jer ako bi se moralo pristupiti izradi softvera iznova ili njegovim dubljim prepravkama svaki put kada se želi dodati nova vrijednost, to nikako, ni u kojom obliku ne bi bilo pozitivno za firmu. Firmu, koja se odlučila na razvoj softvera kako smo rekli iznad, zbog ostvarivanja profita, prije svega.
„Ludost: raditi iste stvari iznova i iznova i očekivati da se dobije drugačiji rezultat.”
Ablbert Ajnštajn (Albert Einstein)
Zajednica profesionalaca
Nesebično dijeljenje i mentorstvo su u samom srcu Softverskog obrta. Obrtnici, majstori, vrhunski kovači softvera su ne samo strastveni kada je u pitanju vlastito usavršavanje nego i za pripremu novih generacija koje dolaze.
„Niko od vas neće vjerovati (postići vlastiti, konačni uspjeh) sve dok ne bude želio svome bratu ono što želi i sebi.”
Posljednji Božiji poslanik, Muhammed sin Abdullahov, neka su na njega Božija milost i blagoslovi
Znanje, ideje, uspjesi, ali i neuspjesi moraju se dijeliti i o svemu tome razgovarati u zajednici kako bi naša industrija napredovala.
Zajednica softverskih obrtnika nije bila, nije sada, niti ikada smije biti u budućnosti zajednica nekakve elite. Zajednica nekakvih elitističkih članova, nadmenih, oholih, sveznalica u svijetu razvoja softvera. Ona je bila i jeste zajednica veoma prijateljski raspoloženih članova za lično usavršavanje ali i nesebično dijeljenje svog prikupljenog znanja i iskustva s drugima. Ne želimo samo biti kolege, želimo da pomažemo jedni drugima da budemo bolji kako bi naša industrija bila bolja zaključuje Sandro na kraju ovog podpoglavlja.
Produktivno partnerstvo
Softverski obrtnici nisu klimoglavci. Oni ne dolaze na posao da slijepo slušaju šta im se naređuje kao što je to nerijedak slučaj s tvorničkim radnicima. Iako u ugovorima stoji da je programer zaposlen (na stalno radno vrijeme) kao izvođač, konsultant, ovo ili ono. Plata ovakva i onakva, ovolika i onolika, to su manje više (pravne) formalnosti. I jedna i druga strana, i poslodavac i softverski obrtnik treba da se ponašaju tako da imaju parnetski, zajednički cilj bez nadmetanja.
Softverski obrtnici su profesionalci koji žele da svoj posao urade na najbolji mogući način čuvajući, ali i nadograđujući svoju reputaciju sa svakim završenim projektom. Softverski obrtnici žele da budu ponosni na ono što rade, ali isto tako i firme koje ih zapošljavanju trebaju da imaju takav odnos spram njih. Firme trebaju biti ponosne što su uspjele “uhvatiti” takve obrtnike na tržištu rada.
Programeri koji kažu da je sve što izlazi izvan okvira kodiranja nije njihov posao nisu pravi softerski obrtnici, a posebno ne softverski (vele)majstori.
Naravno i nažalost, ogroman broj kompanija širom svijeta ne želi ovakav odnos. Oni žele da programera plate što je moguće manje i da nemaju neke posebne odnose s njim. Završi softver i razguli. Tako da, Softverski obrt nije samo pomoći programerima da budu bolji, nego pomoći također i firmama da budu bolje i promijenu svoj pogled na razvoj softvera.
Neke firme smatraju da ako uposle nekog tehničkog vođu – technical lead, da će to nadomjestiti sve što je potrebno nadomjestiti za cjelokupan tim osrednjih programera ili čak početnika, a ustvari upošljavaju klasičnog diktatora koji gotovo u pravilu je neka osoba s dugogodišnjim iskustvom u zastarjelim tehnologijama.
Stoga, kompromis je nekada veoma teško naći. Nema smisla pomagati firmama koje ne žele da se promijene, niti pojedincima koji ne žele da se promijene. Promijene na bolje, naravno.
Softverski (vele)majstori će htjeti da rade samo s firmama koje cijene njihov rad, ali i firme će htjeli da zapošljavaju samo vrhunske stručnjake. Oni koji ne žele to, oni su izvan djelovanja softverskog obrta.
Zaključak
Softverski obrt govori o profesionalizmu u razvoju softvera. Riječ je o programerima koji se trude da daju sve od sebe i pruže dobru uslugu svojim kllijentima. Oni traže produktivno partnerstvo sa svojim klijentima i poslodavcima, a ne formalni, suhoparni odnos poslodavac-zaposlenik. Softverski velemajstori shvataju da biti profesionalac znači imati dobru reputaciju i zbog toga stalno se moraju truditi da oduševe sve, kako klijente, tako i poslodavce i radne kolege, a posebno (ili jedini valjan način da se to uošte uradi) će to učiniti na način da isporuče uspješan projekat.
Softverski obrt je način razmišljanja – stil života koji prihvataju mnogi profesionalni programeri. Softver majstori žive i dišu softver.
0Hits: 81