Archive for June, 2006

U potrazi za idejama

Tijekom više godina prisustva na Internetu u raznim oblicima — od moje prve stranice Rare GURPS Items preko Abstract Factoryja do ovog bloga — u raznim sam trenucima posjedovao razne domene. Neke sam u međuvremenu pustio da isteknu, nekih se držim kao pijan plota (lopsica.com), a neke su mi odlične ali ne znam što s njima.

U ove posljednje spada i domena blogos.org, koju sam uzeo jednostavno zato jer mi se učinila kao odlična riječ, a bila je slobodna. Kako nemam nikakve planove s njom, ovim putem tražim ideje za što bi se ta domena mogla iskoristiti: neki servis, proizvod, Web site ili bilo što. Ako imate neku prikladnu ideju, ma koliko možda djelovala šašavo, pošaljite ju u komentaru na ovaj post; ili, ako ne želite javno obznaniti ideju ili svoje planove, pošaljite mi ju direktno. Jasno, otvoren sam i za ponude za otkup, koje molim isto na kontakt.

A ako mislite da domena ima potencijala, samo se ne možete ničemu domisliti, pripremio sam malo inspiracije.

Još malo o startupanju

Tomislav je objavio vrlo edukativan post, čiji srednji dio ima veze s mojim prethodnim postom u ovoj kategoriji, pa da se osvrnem.

Odgovori osnivača danas popularnih servisa mogu se svesti na tri jednostavna općenita pravila:

1. Uspješni servisi rješavaju konkretne probleme, najčešće one koje s kojima su se njegovi pokretači osobno susreli. Manje šanse za uspjeh imaju projekti koji su isključivo bazirani na nekoj cool tehnologiji, ili koji su smišljeni kako bi se iskoristio neki postojeći trend.

2. Počinje se s vlastitim investicijama, ili uz pomoć od roditelja ili prijatelja. Angeli, venture capital i drugi “veliki dečki” su korisna stvar, ali nema uspjeha bez polijevanja vlastite krvi, znoja i suza.

3. Ustvari, nema treće. Ona bitna stvar nije vidljiva iz njihovih odgovora, a to je da je potrebno imati poslovni model. Većina intervjuiranih pokriva se od oglašavanja, osim Writelyja koji u suštini i nema poslovni model, ali iza njega stoji svemoćni Google.

Zašto programeri vole raditi u gaćama

Za početak, moram priznati da me interes kojeg je potakao moj prethodni post potpuno iznenadio, i premda imam desetak tema koje želim pretvoriti u postove na ovom blogu, nikako uloviti vremena i koncentracije…

U zadnje vrijeme sam svjedokom jednog neobičnog trenda. Naime, kao što neki od vas već znaju, trenutačno se bavim organiziranjem developerskog tima u tvrtki za koju radim. Moj plan je malo-pomalo skupiti nekoliko kvalitetnih developera raznih profila i specijalizacija — za početak jednog (uz mene), a onda postupno dodati i ostale kako će se projekti razvijati.

Znao sam da će ljude biti malo teže naći jer dolazi ljeto, oni koji su već zaposleni žele iskoristiti godišnji, pa mjesec dana otkaznog itd, ali naletio sam na jedan problem koji nisam očekivao.

Postupak je bio klasičan: od pristiglih životopisa probrali smo one zanimljivije, te tim ljudima poslali testni zadatak. Odgovori su, naravno, varirali u kvaliteti, no nakon kratkog dopisivanja s kandidatima ispostavilo se da svi do jednog žele raditi honorarno, od kuće, radije nego dolaziti u ured i raditi u timu.

S jedne strane, razumijem način razmišljanja koji stoji iza takvih preferenci — i sam sam dosta vremena proveo razvijajući razne sajtove u fušu od doma, a jedno vrijeme mi je to bio i temeljni izvor prihoda. I baš zato dobro znam sve prednosti i mane takvog načina rada, i znam zašto telecommuting može samo iznimno biti koristan u ozbiljnom softverskom developmentu.

Koje su prednosti telecommutinga? Prije svega, prednosti su na strani developera — može si organizirati radni dan prema volji, raditi usred noći ili rano ujutro, na balkonu ili u gaćama, može sjesti za računalo kad ga ulovi inspiracija ili se izvaliti pred televizor ako mu se ne radi. Također se štedi vrijeme putovanja na posao i s njega, za ručak je dovoljno otići do kuhinje i tako dalje. Između ostalog, vješt developer može na ovaj način raditi paralelno za nekoliko poslodavaca, čime uz malo više truda može ostvariti veći prihod.

Postoje prednosti i za poslodavca, i to prije svega u smanjenim troškovima, jer telecommuter ne treba radni stol u uredu, a u domaćim uvjetima često niti računalo, jer mnogi developeri koje znam kod kuće imaju jači stroj nego im tvrtka daje na korištenje.

No, postoje i nedostaci, i to također na obje strane. Gore opisani način developmenta može se primijeniti isključivo na mlade programere, koji ili žive sami ili s uviđavnim roditeljima koji ga puštaju na miru, te koji imaju dovoljno energije da mogu kodirati petnaestak sati na dan i tako “opsluživati” dva-tri poslodavca. Developeri koji imaju vlastitu obitelj, a posebno ako ta obitelj uključuje malu djecu, suočavaju se s konstantnim prekidima koncentracije, a dokazano je da svaki prekid zahtjeva 15-30 minuta za povratak na istu razinu koncentracije kao prije njega; dakle, ako vam klinac pet puta upadne u sobu s pitanjem “Tata, a cto jadis?”, to predstavlja gubitak produktivnosti od dobrih dva sata.

Na strani poslodavca nalaze se veći problemi, iako često poslodavci njih nisu svjesni. Naime, kod razvoja kompleksnih aplikacija — uključujući i Web aplikacije — vrlo je rijetko slučaj da jedan developer samostalno razvija cijelu aplikaciju, pa čak i jedan njezin segment. U pravilu to rade timovi, koji stalno trebaju međusobnu koordinaciju i komunikaciju, a da ne govorim o tome da je poanta tima u bliskosti i međusobnom poznavanju developera. Svakome zainteresiranom za tu temu svakako preporučujem knjigu Peopleware, koja kondenzira brojne rezultate istraživanja i pojedinačna iskustva.

Timovi osiguravaju još jednu važnu stvar, a to je konzistentnost arhitekture i koda. Svi članovi tima trebaju se pridržavati zajedničkih standarda, tako da svaki od njih može uskočiti na mjesto nekog drugoga u slučaju potrebe, kao i da se olakša kasnije održavanje aplikacije. To posebno vrijedi za velike kompleksne aplikacije, gdje nije praktično iznova napisati dio koda ako se pokaže nerazumljivim.

Gdje telecommuting ima smisla? Prije svega kad pojedini developer samostalno radi određenu programsku cjelinu — idealno cijelu aplikaciju — a posebice kad interna arhitektura i kvaliteta koda nisu bitni, te se ne očekuje preveliko održavanje nakon što je posao jednom završen. U domaćim uvjetima to u praksi znači manje ili više jednostavne Web sajtove, obično pogonjene nekim CMS-om kućne izrade ili prilagodbom Joomle, Typa3, ezCMS-a ili nekog sličnog FOSS rješenja.

Kod izrade ozbiljnih, kompleksnih aplikacija, telecommuting nije posebno korisna opcija. No, nije potpuno isključena: moguće je zamisliti situaciju gdje jedan član tima treba raditi na udaljenoj lokaciji: npr. ako iz privatnih razloga mora ostati kod kuće ili se preseli u drugi grad, ili ako se nalazi u dislociranom uredu tvrtke. Ova prva dva slučaja kod nas se obično rješavaju prekidom radnog odnosa, no gubitak vrijednog člana tima zbog takvog razloga nema puno smisla, i onda je telecommuting idealno rješenje da vuk (ne Vuk :) ) bude sit a koza ostane cijela. Rands (kojeg i inače preporučujem) je u siječnju 2006. imao odličan post na tu temu (s gomilom odličnih komentara).

Dakle, da sažmem: kod velikih, složenih aplikacija nužno je imati dobar, cjelovit tim developera koji rade na istoj lokaciji; konzistentnost tima važnija je od tehničkih i prostornih problema i ograničenja, a telecommuting tu može odigrati veliku ulogu u zadržavanju cjelovitosti tima. Zato prvo treba izgraditi dobar tim, a onda se tek može raditi na daljinu.

O startupima

U zadnje vrijeme svi su se nekako raspisali o startupima u Hrvatskoj — Mračni, Siniša, Futuria, Vuk, Borja — pa da malo i ja dam svog obola toj temi, obzirom da je već najmanje godinu dana intenzivno proučavam.

Dakle, prije svega, većina spomenutih blog postova o startupovima polazi od pretpostavke koju je Siniša uobličio ovako: “Jedan zgodan esej bi mogao složiti Mrak o tome zašto kod nas startupi ne uspijevaju ili ne mogu još uspjeti ili na koji način bi mogli (pazi ti rečenice!).” Međutim, ta pretpostavka je kriva: u Hrvatskoj ima startupa, i oni uspijevaju — jedino su mehanizmi tog uspjeha nešto drugačiji nego u bijelom svijetu.

Koji su, dakle, ti domaći startupi? Površnom analizom došao sam do zaključka da ih se može svrstati u tri grupe.

Prije svega, ono što domaće startupe (u onom smislu u kojem mi pričamo, znači na području softvera/Interneta/IT-a općenito) izdvaja od svjetskih jest to da se u većini slučajeva one opredjeljuju za prodaju usluga, umjesto razvoja vlastitog proizvoda što je vani uobičajeno. Tako moju prvu grupu čine takve tvrtke, a prije svega razni studiji za Web design i development, kakvih svake godine nikne sigurno par desetaka. Zanimljiva je činjenica da većina njih i razvije vlastiti softver — uglavnom nekakav CMS, u raznim varijacijama na temu — no klijentima ne nude taj softver kao proizvod, već implementaciju Web sitea kao uslugu.

Nedavno sam razgovarao s dvoje vlasnika jedne takve tvrtke, koji su je pokrenuli frustrirano otišavši iz jedne takve druge tvrtke, i malo pomalo izgradili relativno uspješan biznis koji im prihodi dovoljno da mogu platiti najam nevelikog, ali ugodnog poslovnog prostora u širem centru Zagreba, te plaćati — pored sebe — još troje stalnih ljudi i nekoliko povremenih. Iz tog razgovora iskristaliziralo se nekoliko zanimljivih činjenica i zaključaka:

1. Oni su, kao i 99% sličnih poduzetnika, pokrenuli svoj biznis kao obrt, a ne kao d.o.o. Ta činjenica najviše govori o besmislenim pravilima koja otežavaju osnivanje i vođenje poduzeća, kao i o besmislu kategorije obrta kad se u nju mogu utrpati i djelatnosti koje s “klasičnim” značenjem tog pojma nemaju nikakve veze. (Naravno, dobra stvar je da se ta dva besmisla pobijaju; ukidanje mogućnosti da se ne-obrtnička djelatnost otvori kao obrt mnogima bi zatvorila vrata biznisa.)

2. Kompletan napredak njihovog posla financiran je isključivo iz njihovih vlastitih prihoda. To se standardno naziva “bootstrapping” i često se zanemaruje kao način pokretanja biznisa; o tome više riječi malo niže.

3. I oni su, dakle, svoj startup temeljili na uslugama. Od njih sam čuo zanimljivu činjenicu da jedna druga domaća tvrtka, u potpuno istoj djelatnosti — dakle pružanje usluga izrade Web siteova i aplikacija — svojim djelatnicima uz (lošu) plaću daju i nekakav postotak vlasništva u firmi. Moram priznati da sam ostao totalno šokiran tom činjenicom, odnosno točnije činjenicom da bi itko prihvatio takav dil, ali onda sam se sjetio da je razina educiranosti prosječnog stanovnika Hrvatske o temeljnim pravilima suvremenog tržištaravna nuli. Naime, riječ je o maloj firmi, koja nikad pa ni tad neće izaći na tržište kapitala, a kako nema vlastitog proizvoda vrijednog spomena (podsjećam, žive od pružanja usluga) niti značajno dominira tržištem (čak i da dominira, riječ je o tržištu koje nikom nije zanimljivo) nema šanse da bi je itko želio kupiti. Osnovni interes svakog investitora — a djelatnik koji prima udio u vlasništvu umjesto (dijela) plaće to jest — je da zna koji su realni mehanizmi izlaska i kapitalizacije investicije; a u ovom slučaju tih mehanizama nema ni u tragovima.

Druge dvije grupe domaćih startupa možete naći ako bacite pogled na trenutačno nažalost zanemaren cromotion.net. Jednu od te dvije grupe čine tvrtke koje su s vremenom uspjele razviti određene aplikacije i plasirati ih na svjetska tržišta, uz vrlo malo ili nimalo oslonca na domaćem tržištu. U velikoj mjeri one su pratile put sličan onome kakav je uobičajen na zapadu; no ipak, to su redom uspješni primjeri — pitanje je koliko je takvih neuspjeha, čiji pokretači nisu nikad pokušali ništa slično upravo zbog nedostatka tolerancije na neuspjeh o kojem piše Vuk.

Ako predstavnici ove druge grupe čine nekakav vrhunac startup ljestvice, onda treću grupu čine oni koji se nalaze na njenom suprotnom kraju; to su oni koji i nisu startani u pravom smislu te riječi, već su određeni autori ponudili vlatite programe na svjetskom — odnosno Internetskom — tržištu potpuno samostalno, bez formalne organizacijeu tvrtku, a da o cjelovitom timu i ne govorimo.

Amerikanci su za takve hm, “tvrtke” ili kako da ih nazovem, smislili jedan praktičan naziv: micro ISV, često pisan kao μISV ili uISV. Pojam ISV, odnosno Independent Software Vendor, dolazi iz terminologije velikih korporacija koje proizvode platforme, a označava tvrtke koje razvijaju neki proizvod na njihovim platformama — ali pritom nisu nekim ugovorom ili nečim drugim ograničeni isključivo na tu platformu, već odabir ovisi o poslovnoj politici; otud ovo “independent”. Pojam micro ISV označava takvu tvrtku koja u pravilu nema pravi razvojni tim, već svega jednog ili dva programera, koji u pravilu istovremeno obavljaju i sve ostale poslove u firmi. Pojam je skovao programer/poduzetnik/bloger Eric Sink, a popularizirao ga je Bob Walsh, autor knjige Micro-ISV: From Vision to Reality.

No, ono što je specifično za micro ISV-ove koji se pojavljuju na Cromotionu jest da su oni svojim autorima tek usputni projekti, koje su stvorili iz nekog vlastitog poriva i tek ga usput odlučili komercijalizirati. Svi ti autori zadržali su svoja redovna radna mjesta, a na prihod od vlastitih projekata računaju tek onako, usput, kao dobrodošao džeparac i nadopunu kućnom budžetu.

U bijelom svijetu — čitaj u SAD-u — ovakav oblik poslovanja nije nimalo rijedak; u suštini se svodi na ono što smo nekad voljeli zvati shareware. Autori komercijaliziraju svoj proizvod bez napuštanja redovnog posla, no tu sličnosti prestaju; čim se vlastiti projekt polaže uspješnim, oni ostavljaju posao i maksimalno se posvećuju tom projektu. Bob Walsh je pokrenuo site MyMicroISV posvećen toj tematici, i tamo se mogu pročitati brojna takva iskustva; moj omiljeni primjer je Ian Landsman.

Takav model razvoja tvrtke naziva se bootstrapping, a zahvaljujući sretnom spletu okolnosti možete pročitati kratak tekst Dharmesha Shaha — čiji blog općenito preporučam svakome tko želi pokrenuti softverski biznis — na tu temu.

Međutim, u našim uvjetima ne samo da ne znam za slučaj projekta koji se bootstrapao do uspješne tvrtke, već autori ni ne pokušavaju izaći iz te faze i razviti uspješan biznis. Razloga za to ima više, a to su već spominjani strah od neuspjeha, strah od gubitka sigurnosti (i društvenog prihvaćanja) davanjem otkaza, nepovjerenje u vlastite poslovne sposobnosti, nepovjerenje u pravne i druge državne mehanizme itd.

No, mislim da je osnovni problem, iz kojeg svi ovi strahovi i nepovjerenja proizlaze, nedostatak znanja o tematici startupa. Mi tu pričamo o venture kapitalu, angel investitorima, državnim potporama itd, a zaboravljamo spomenuti brojne druge mogućnosti koje postoje — bootstrapping, FFF, self-financing itd. Što više ulazim u ovu temu sve mi se više kristalizira svijest da postoji potreba za nekim oblikom edukacije koji bi zainteresirane softverske poduzetnike podučio načinima kako pokrenuti i financirati startup, kako napisati poslovni plan, kako pronaći ovaj ili onaj oblik investicije itd. Neka naša učilišta pružaju nekakve poduzetničke startup tečajeve, no sve je to vrlo općenito i ne uzima u obzir specifičnosti softverske branše, a prije svega njeno tržište koje — ovisno o proizvodu — vrlo lako može biti globalno.

Volio bih da se nešto konkretno pokrene po ovom pitanju. Osobno imam niz ideja kako to ostvariti, a pozivam i ostale koji razmišljaju o tome da mi se jave.