duca's profileduca's spaceBlogLists Tools Help

Blog


    micro ISV homework

    Ako želite da uspete u micro ISV biznisu, potrebno je da čujete šta o tome drugi imaju da kažu, posebno oni koji su već uspeli. To, između ostalog, može da bude i odlična motivacija. Lakše je kada zante da je neko drugi, pre Vas, išao istim putem. Na Internetu postoje mnogi koji su spremni da svoja iskustva, putem bloga, podele sa Vama.

    Blogs, Discussions and Podcasts

    Za početak, preporučujem neizbežni Joel on Software. Blog u poslednje vreme gubi na kvalitetu, ali arhiva tekstova predstavlja pravo blago. Joel je Njujorčanin koji vodi, sada i više nego uspešan, micro ISV, Fog Creek. 1500 novih "mušterija" svakog meseca, popularnog Fog Bugza, dovoljno govori o tome. U ostalom, ako Vas interesuje nešto više, potražite Joel Spolsky na Googleu, i dobićete gomilu rezultata.

    Pored toga, Joel je domaćin foruma Business of Software. Ako ste micro ISV, teme su i više nego zanimljive a učesnici su i više nego iskusni micro ISVovci. Ako vam zatreba pomoć u vezi sa Vašim micro ISV bizom, nema boljeg mesta od ovoga.

    Sledeći u nizu je Eric Sink. Eric vodi jako uspešan micro ISV Source Gear. Obavezno pogledajte Ericov blog.

    Tu je i izvanredan Channel 9, podcast serijal, Micro ISV show. Domaćini emisija su Michael Lehman i Bob Walsh. Bob ima svoj blog MyMicroISV, koji nikako ne treba zaobići.

    Books

    Odličan izvor informacija su i sledeće dve knjige:

    Za sve one koji ne znaju šta je to micro ISV, predlažem moj prethodni post "Kratak kurs iz micro ISVa".

    Ovo je bilo dovoljno materijala za dve nedelje proučavanja. Uskoro sledi još toga... Ko je rekao da će ovo biti lak posaosmile_wink.

    Kratak kurs iz micro ISVa

    Čuli ste za micro ISV? ZanimaVas šta je to o čemu se u poslednje vreme sve više priča. Onda ste verovatno na pravom mestu.

    One-Man Show

    Micro ISV je softwareska kompanija koja ima samo jednog zaposlenog. Vas samu. Neki su skloni da malo olabave ovu definiciju. Tako, u micro ISV kategoriju spada biznis sa ne više od 5 zaposlenih. Teško bi bilo reći da je neko ko ima 10 zaposlenih micro ISV. Suština ovakvog načina poslovanja je u tome da sami vodite i finansirate kompaniju. Da, to znači da će te morati da se bavite analizom tržišta, marketingom, odnosima sa javnošću, analizom zahteva, projektovanjem, dizajnom, programiranjem, testiranjem, održavanjem, podrškom,... i još na kraju i sve to sami da finansirate. Ako nameravate da već sada prekinete sa čitanjme, ne činite to, objašnjenje sledi. Ovo ne mora da bude Mission Impossible.

    Pick me, pick me, pick me...

    Pre svega, odgovorite na sledeća pitanja:

    • Vašeg šefa Vam je preko glave?
    • Muka Vam je od mediokriteta koji na svakom razgovoru za posao, iznova i iznova postavljaju sve gluplja i gluplja pitanja?
    • Želite da već jednom Vi budete ta koja nekome postavlja pitanja?
    • Dosta Vam je bedne plate?
    • Svesni ste koliko radite, a za uzvrat niko vam ne odaje priznanje?

    Ne, sve ovo nisu bila pitanja sa nekog psihološkog testa ličnosti(mada bi mogla da budusmile_nerd). Ako je odgovor na neko od pitanja pozitivan, možda je vreme da donesete najbitniju odluku u svom životu. Da započnete sopstveni posao.

    Čiko, čiko...

    Verovatno se pitate koliko to sve košta. Da bi se započeo jedan micro ISV, u našim uslovima je potrebno od 2000 do 20000 evra. Cifre, između ostalog, zavise od toga da li vam je potreban kancelarijski prostor, da li vam je potrebna dodatna oprema, da li plaćate još nekog zaposlenog, itd... Na pozajmicu od rođaka, prijatelja i komšija ne pomišljajte. U suprotnom, na dobrom ste putu da prestanete da govorite sa svima. Ne treba mnogo računati ni na banke. "Gospodine, živite kao podstanar. Ne bi mogli da dobijete ni potrošački kredit od 1000 evra."... ili tako nekako. U ostalom, znate na šta mislimsmile_regular. Ostaje Vam jedino da potrošite ušteđevinu(ko još danas ima ušteđene pare) ili da sačuvate svoj stalni posao i troškove pokrijete od redovnih primanja. To znači da i malo preostalog slobodnog vremena treba da potrošite na svoj micro ISV.

    Što se tiče drugog dela priče(ako se još sećate šta sam govorio), deo sa programiranjem Vam se verovatno dopada. Mogli bi da proguate i dizajn, projektovanje, testiranje i još po nešto. Ali kako da se bavim marketingom? Ili, ne daj bože odnosima sa javnošću? Ma šta to uopšte i znači? Za početak, moraćete da se oslobodite svih predrasuda o ekonomiji i tržištu. Ako ste u tome već uspeli, i do sada ste naučili kako funkcioniše ekonomija razvijene civilizacije, onda ste na odličnom putu da napravite dobar micro ISV.

    Sigurno se pitate šta znači ISV. ISV je akronim za Independent Software Vendor. Kako mnogi kažu, kompanija koju Microsoft još nije kupio ili uništio. Šalu na stranu, ISV je svaka kompanija koja se samostalno bavi razvojem softwarea, a nezavisna je od proizvođača platforme za koju razvija, bio to Microsoft, IBM ili neko drugi.

    Show Me the Money!

    Šta dobijate za uzvrat. Da li se trud isplati? Dobijate mogućnost da sami odlučujete. Potencijalno tržište od milijardu ljudi(Internet populacija). Mogućnost da ostanete tu gde jeste, i radite posao isto kao i iz New Yorka, Londona ili sa Tibeta. Radno vreme kakvo Vama odgovara. Mogućnost da zaradite više nego što bi ste ikada radeći za drugoga.

    Možda ćete čuti tvrdnje da je micro ISV samo još jedan balon(hint: dot.com bubble). Te da samo što nije pukao. Odgovor je veoma jednostavan. Micro ISV je postojao mnogo pre nego što je bio poznat pod tim imenom i postojaće dugo pošto prestane tako da se zove. Šta više, većina IT kompanija počela je baš na ovaj način. U podrumu ili potkrovlju, sa par stotina dolara. U tom smislu na ovu priču treba gledati kao na niz praktičnih saveta. Saveta kako napraviti dobar proizvod i kako ga dobro prodati. Kako ne bi bilo nedoumica o čemu govorim, u tekstovima ću na dalje koristiti aktuelni termin "micro ISV".

    Oblast je jako široka. Teško da bi sve o micro ISV moglo da se kaže u samo jednom članku. Za uspeh je potreban pre svega kvalitetan proizvod, a onda i potencijalni kupci koji su spremni da odvoje nešto dolara. Ali o tome u nekom od narednih pisanja.

    Jesam li pomenuo da je uslov cele priče da ste odličan programer...

    Kako do kvalitetnog software-a?

    Svako ko se iole ozbiljno bavio razvojem software-a, iskusio je frustraciju koju skoro savaki takav pokušaj nosi sa sobom. Paralisanost, osećaj beskorisnosti, odsustvo motivacije, dezorijentisanost,... jednom reči potpuno ludilo. Onaj ko tvrdi da bar jednom nije doživeo neko od ovih psihička stanja, ili je dobar lažov, ili se nikada nije bavio razvojem software-a(ne računam množenje dve matrice u Pascal-u).

    No Silver Bullet

    Zašto je tako teško napraviti kvalitetan software? Ne samo da je postupak razvoja inherentno složen. On i dodatno može da bude otežan primenom, ili bolje reći neprimenom adekvatnih tehnika i alata. Za prvi problem, za sada, rešenje ne postoji. Šta više, postoji pretpostavka da uopšte i ne može da bude rešen(hint:No Silver Bullet). Dok svaki programer ne dobije spinalni implant i mogućnost da svoje misli materijalizuje kao gotovu aplikaciju, ostaje nam da se pozabavimo drugim problemom.

    Pitanje koje alatke(čitaj programski jezik i IDE), ostaviću za neki drugi put. Da skratim muke. Svako treba da koristi onaj alat koji najbolje poznaje. Tačka. Što se tiče drugog aspekta ove priče, tu postoji prostor za značajna poboljšanja. Međutim, problem je što većina programera nikada nije ni čula za nešto što se zove Application Lifecycle ili Software Development Process. Onima koji su i čuli, ne pada na pamet da promene svoje loše programerske navike. Uobičajeni pristup je da se novi projeka počinje momentalnim pokretanjem editora i prelaskom na kodiranje. Proces razvoja postaje Chaotic Application Development. Rezultat je bugovit i generalno nekvalitetan software. Software koji ne ispunjava zahteve korisnika i u krajnjem slučaju nema nikakvu upotrebnu vrednost.

    Application Lifecycle

    Da bi se u čitavu zbrku uveo kakav takav red potreban je proces. Proces kroz koji prolazi aplikacija u toku razvoja. Drugačije rečeno, dobro utvrđen niz koraka i aktivnosti koje treba primeniti. Rezultat takvog jednog postupka treba da bude kvalitetan i pouzdan proizvod. Ovo ne mora da bude neki formalan proces kao što je Microsoft Solution Framework ili Rational Unified Process. To može da bude i neki uobičajeni postupak, koji se do sada pokazao kao dobra proaksa.

    Faze razvoja

    Koraci i potrebne radnje jednog procesa obično su grupisane u veće celine, faze razvoja. Ovako, faze definišu životni vek, tj. lifecycle aplikacije. Primeri nekih od faza su:

    • predviđanje,
    • analiza,
    • dizajn,
    • implementacija,
    • kodiranje,
    • testiranje,
    • održavanje,
    • podrška...
    Već iz samih naziva može dosta toga da se nasluti(ko je rekao waterfall). Ovde se dolazi i do onog najbitnijeg u celoj priči. Većina softwareskih projekata je neuspešna ili nikada i ne ugleda svetlost dana, upravo šzato to su neke ili skoro sve od ovih faza potpuno zanemarene. Razlog je obično nedovoljno iskustvo, nedostatak vremena ili novca, ili jednostavno nespremnost da se uvedu novine u proces razvoja. Čitav proces, u manjoj ili većoj meri, svodi se na fazu implementacije.

    Requirements Specification

    Bez obzira na konkretan proces koji se primenjuje, najbitnija faza razvoja je faza analize i specifikacije zahteva. Tokom ove faze, na osnovu postojećih poslovnih procesa ili načina rada određuju se zahtevi koje aplikacija treba da ispuni. Kao rezultat postupka nastaje specifikacija zahteva(Software Requirements Specification). Specifikacija zahteva dalje "vozi" čitav proces razvoja. Tako ona određuje dizajn, implementaciju, test primere... Za svaki deo dizajna, koda ili testa može da se utvrdi na koji zahtev se odnosi. Ova karakteristika zove se requirrment traceability.

    Zanemarivanjem ove faze ugrožava se čitav dalji razvoj. Kao posledica javljaju se sledeći "simptomi":

    • Odsustvo komunikacije među članovima razvojnog tima. Svako u glavi ima sopstvenu sliku onoga što se pravi. Članovi tima, računaju na telepatske sposobnosti svojih kolega. Ovakav pristup se u praksi pokazao kao krajnje neefikasan.
    • Odsustvo komunikacije prema kupcima i korisnicima aplikacije. Akcenat se takođe stavlja na telepatske veštine. Ponekad i na intelektualnu inferiornost krajnjih korisnika. Rezultat je da razvojni tim ne rešava problem koji kupci imaju. Obično rešava problem koji uopšte ne postoji.

    Kao rezultat svega dolazi do kašnjenja i produžetka razvoja u beskonačnost. Aplikacija koja se razvija nema trašene funkcije, već ima gomilu nepotrebnih funkcija. Ovaj scenario zvuči jako poznato. Postoji velika šansa da se nekada desio baš Vama. Rešenje problema je precizno definisanje zahteva.

    Postavlja se pitanje kako uspešno definisati i upravljati zahtevima. Kao primedbe obično se čuju sledeći komentari: "Ko još ima vremena da piše 500 stranica zahteva?"; "Ili, još gore, da čita sve te gluposti?"; "U našem timu odavno smo odustali od pisanja zahteva. Korisnici i onako ne znaju šta žele"; "Ono što mi radimo najbolje je za naše kupce."

    Use Case Approach

    Pristup koji u poslednje vreme sve više dobija na popularnosti je pisanje Use Case-ova. Ovo je efikasan alat, koji uspostavlja dobru komunikaciju među svim učesnicima u procesu razvoja. Ali nešto detaljnije o specifikaciji zahteva i Use Case-ima u nekom od narednih tekstova. U međuvremenu, samo ću podstaći na razmišljanje. Za specifikaciju prosečne aplikacije potrebno je ne više od 20-30 Use Case-a. Teško je zamisliti projekat koji ih ima stotinu. O mogućnostima primene Test Driven Development-a da i ne govorim. ...izgleda da sam pronašao svoj srebrni metak