Što ćete raditi ovoga ljeta?

Prije par tjedana sam na Web.Start konferenciji Davida Jakelića prozvao “hrvatskim Joelom Spolskym“, i još uvijek stojim iza te tvrdnje — on predstavlja izuzetno rijetku kombinaciju programera, poduzetnika, managera i analitičara/blogera, a u svemu tome je više nego uspješan.
David je danas na svom blogu objavio post pod naslovom Jednostavni zadaci poput pisanja koda, koji me je potakao da mu se po prvi puta moram donekle suprotstaviti, odnosno malo pojasniti kako stoje stvari.
No prije svega, moram se apsolutno složiti s Davidom da (domaći, ali ni drugdje nije puno bolje) mediji i javnost imaju uglavnom vrlo iskrivljenu sliku o programerskom poslu — programere (i ostale “informatičare” kako se to kod nas trpa sve zajedno) se obično gleda kao neke čudake koji se samo igraju za kompjuterom, dok često i IT manageri progamerske zadatke doživljavaju kao jednostavno “pisanje koda”. Ustvari — pisanje koda i jest jednostavno, ali ono predstavlja najmanji i najbeznačajniji dio programerskog posla; svoditi programiranje na pisanje koda jest jednako svođenju slikarstva na povlačenje kistom po platnu. Za svaku liniju koda programer mora prethodno imati jasnu sliku što će se dogoditi u raznim slučajevima i vrijednostima varijabli, kakav efekt će koja petlja imati na druge dijelove programa i cijelog sustava, i tako dalje.
Nažalost, taj stav je here to stay i vrlo ćemo teško naučiti javnost koje su stvarne okolnosti programerskog posla. To nije endemično za našu struku — jednako iskrivljenu sliku većina ima recimo i o poslu npr. pilota ili arheologa, no u tim slučajevima ta iskrivljenost dodaje određenu romantičnost, dok u našem slučaju ide na štetu programerskog ugleda.
No s druge strane, ono što je nužno imati na umu jest da je u programerskom poslu možda od svih struka najmanja korelacija između službenog stupnja obrazovanja i stvarne kvalitete. Reći da je za pisanje koda dovoljna matura jednako je krivo kao i reći da za taj posao treba diploma bilo kojeg fakulteta, tako da je izvorni citat u Davidovom postu tu u krivu na više načina, no rekao bih da je David skočio malo na krivu loptu.
Činjenica je da u većini struka netom diplomirani “stručnjak” ima još puno za učiti prije nego što postane relativno produktivan na novom radnom mjestu; no isto tako u većini struka fakultet ili druga škola daju vrlo jasne temelje na koje je potrebno nadograditi tek specifičnosti određenog radnog mjesta. Kemičar ili fizičar će poznavati većinu dosadašnjih dostignuća, inžinjer strojarstva ili naftaš će poznavati glavne procese i tehnologije, i tek ako je neka škola jako zaostala u praćenju suvremenog razvoja — pod “jako” mislim na desetljeća — novopečeni će stručnjak imati ozbiljnijih problema u prilagodbi.
No kad je riječ o softveru, tehnologije i platforme se mijenjaju tolikom brzinom da pet do sedam godina koliko kod nas studenti u prosjeku pohađaju fakultet(e) može predstavljati totalni preokret u načinu kako se aplikacije razvijaju i koriste. Bacite samo pogled na 2001. godinu i sjetite se svega što danas redovno koristimo a tada ili nije postojalo ili je bilo u ranim začecima. XML? Ajax? .NET? Rich Internet applications? Software as a service? Ruby? Python? Web servisi? Čak se i Java, koja ima reputaciju najuniverzalnije i najpostojanije platforme, posljednjih godina značajno promijenila (postavši open source, između ostalog).
Time ne želim reći — kako spominje članak u Business.hr-u — da je za “pisanje koda dovoljna matura”, jer nije. Ili bolje rečeno, nijedna formalna razina obrazovanja ne osigurava da je netko kvalitetan programer, bio on maturant, diplomant ili doktor znanosti. Neki od najboljih programera koje osobno poznajem nisu nikad stekli diplomu — dok drugi pak jesu — već su ili potpuno zaobišli fakultet, ili su (u najvećem broju slučajeva) došli do neke godine studija i onda uzeli “neodređenu pauzu”. S druge strane, neki programeri koji se ponose diplomom ovog ili onog fakulteta pisali su takve stvari da ih ne bi objavio ni Alex Papadimoulis jer bi mislio da su izmišljene.
Tako da odgovor na pitanje sadržano u prvom retku citata u Davidovom postu — što je uzrok nestašice ljudi, pretpostavljam u softverskoj industriji — leži u činjenici da je nalaženje kvalitetnih programera izuzetno težak posao, kojeg u pravilu svi jako podcjenjuju, uključujući i same iskusne programere. Naime, ne postoji shortcut koji će nam pokazati na temeljnu vještinu i razinu znanja — niti diploma, niti certifikati (što nam vrijedi što netko ima MCSD ako ga je stekao prije nekoliko godina dok .NET praktički nije ni postojao?), niti razni tečajevi koji se upisuju u radnu knjižicu ili tetoviraju na čelu ne mogu pokazati niti stvarnu razinu znanja niti temeljni talent za programiranje koji se onda može nadograditi konkretnim iskustvom.
Zahvaljujući čudesima hajperteksta danas sam naišao na krasan članak Marca Hedlunda objavljen prije više od dvije godine na O’Reilly Radaru. U članku naslovljenom Entrepreneurial Proverbs Marc navodi niz zanimljivih uzrečica i izjava vezanih uz poduzetništvo, odnosno startupe. Nekoliko najzanimljivijih ću ovdje prenijeti, a mislim da ih nema smisla prevoditi:
U drugom postu, ovaj put starom svega godinu dana, Marc navodi zanimljiv poslovni model za startupe:
…find an old UNIX command that hasn’t yet been implemented on the web, and fix that.
talkandfingerbecame ICQ,LISTSERVbecame Yahoo! Groups,lsbecame (the original) Yahoo!,findandgrepbecame Google,rnbecame Bloglines,pinebecame Gmail,mountis becoming S3, andbashis becoming Yahoo! Pipes. I didn’t get until tonight that Twitter iswallfor the web.
Ipak, korisno je pročitati i što o tome misli Jeremy Liew iz Lightspeed Venture Partnersa.
Konferencija Web.Start je u punom pogonu, i brojni posjetitelji izgledaju vrlo zadovoljni rasporedom. No ja jednostavno ne mogu izbjeći razmišljanje o tome kakav bi se fantastičan startup mogao složiti kad bismo uzeli ljude koji drže predavanja tijekom prvog dana (ako se izbaci poneki sponzor). Samo ukratko:
Nadopuna: Uh, ne znam kako zaboravih: