duca's profileduca's spaceBlogLists Tools Help

Blog


    Eric Sink on Requirements

    Eric je u svom poslednjem članku Requirements pokušao, da na veoma iscrpan način objasni šta su to zahtevi. Međutim, ovakav pristup boluje od "dečije bolesti". Onima koji ne znaju šta su to zahtevi, neće biti ništa jasnije kada pročitaju tekst. Jednostavno nema rešenja. Moraćete sami da naučite i to na teži način.

    Ni sam Erick ne krije da dugo nije znao šta su to zahtevi. Ali to ni po čemu nije čudno. Pretpostavljam da danas 90% programera ne zna to isto. Ono što se provlačo kroz tekst je utisak nekoga ko je saznao "veliku tajnu".  Ne mogu da Vam otkrijem jednačinu svemira, ali  mogu da Vam kažem da se razvoj ne svodi na IDE i besomučno kodiranje.

    Najzanimljiviji deo teksta je onaj u kome Eric opisuje nezgodnu situaciju sa jednim od svojih prethodnih šefova. Ako Vam situacija izgleda krajnje glupo, zapitajte se, sigurno ste se i Vi našli u sličnoj situaciji. Međutim, u svetu u kome vladaju arogancija i sujeta (mislim na programerski svet), ovo nije retka pojava. I sam sam bio akter bar dve slične situacije. Zato, kada sledeći put poželite da nekome razbijete glavau, prvim tuipim predmetom koji Vam padne pod ruku, zastanite. Možda ipak niste u prau.

    Technorati tags:

    FogBugz on Demand - Drugi deo

    Posle neuspleog pokušaja da otvorim besplatan nalog na FogBugz on Demand, mail-a korisničkoj podršci i odgovora da je problem rešen, postao sam zadovoljni korisnik ovog servisa.

    Što se tiče problema sa registracijom, odgovor korisničke podrške je bio da je problem u Hotmail nalozima. Da li je to istina? Ne znam. Mogu samo da pretpostavim da je to bio način da se smanji navala. Dodatni mail je u tom smislu trebalo da napravi selekciju. Između onih zaista zainteresovanih i onih koji bi samo da probaju nešto za "dž".

    Odličan bug tracking sistem

    Ako zanemarim problem sa registracijom i period u kome je sistem bio nedostupan, nekih, 30 min. zbog održavanja, ostaje utisak da je FogBugz izuzetan alat. Ono što dobijete vredi svaku paru koju ste dali i mnogo više od togasmile_wink. Šalu na stranu, FogBugz je jedan odličan proizvod.

    Osim što služi kao tipičan bug/issue tracking sistem, FogBugz ima i druge primene. U prvom redu, ovo je odličan helpdesk sistem.

    Najkorisniju opciju predstavlja mogućnost da se novi slučaj otvori slanjem mail-a. Tako, FogBugz prikuplja sve mail-ove sa unapred određene adrese. To, između ostalog, može da bude adresa korisničke podrške, npr support@mojafirma.com. Tako FogBugz postaje dobar helpdesk sistem.

    Tu je i anti-spam sistem koji štiti od neželjenih poruka. Koristeći isti Bayesian algoritam, koji filtrira spam, poruke mogu da se sortiraju i po drugim kategorijama.

    Kako to izgleda u stvarnosti

    Kako bih što bolje predstavio mogućnosti FogBugz-a, poslužiću se jednim tipičnim scenarijem: Osoba A, inače u ovoj maloj priči, krajnji korisnik aplikacije, ima problem u radu sa programom. Osoba A, šalje mail korisničkoj podršci, u kome opisuje svoje nevolje. Na drugoj strani, FogBugz automatski prikuplja sve poruke sa adrese support@mojafirma.com. Tako, i tek poslata, poruka osobe A biva pokupljena. Poruka postaje novi slučaj (case), tj. incident u okviru sistema. FogBugz obaveštava osobu A, da je poruka primljena, te da će odgovor dobiti u najkraćem roku. O novonastalom slučaju FogBugz obaveštava i osobu B, inače člana tima zaduženog za podršku. Od sada, osoba B je odgovorna za razrešenje slučaja. Kako osoba B nije u mogućnosti da reši problem, dodeljuje ga osobi C. Tako incident eskalira kroz lanac podrške na sledeći nivo. Osoba C, inače programer, ovoga puta rešava problem. O tome obaveštava osobu A. Pošto problem biva uspešno rešen, incident se zatvara.

    Snimite Vaše greške

    Rad sa bug-ovima je u osnovi sličan. Samo što sada inicijator ne mora da bude samo krajnji korisnik, već to može da bude i bilo koji član tima. Korisnik FogBugz-a može da otvori novi slučaj (case), i detaljno opiše otkriveni bug. Na raspolaganju su sve mogućnosti koje se očekuju od jednog bug-tracking software-a.

    Novost je screencapture plug-in. Korisnik može da "uhvati" snimak ekrana u trenutku nastanka greške. ...slika govori bolje nego hiljadu reči. Takav snimak ekrana može da se postane potpuno novi slučaj ili da se pridruži nekom već otvorenom.

    Prevarite spamere

    Sledeća, zlata vredna, opcija je integrisani forum software. Kako izgleda jedan forum implementiran u FogBugz-u pogledajte ovde.

    Iako su postovi anonimni, forum poseduje jednu izuzetnu mogućnost. Svaka poruka može da bude odobrena ili obrisana od strane administratora. Pitate se sigurno šta je tu revolucionarno. Obrisana poruka ostaje vidljiva za autora poruke. Svi ostali učesnici ne vide poruku. Zaista inteligentno rešenje.

    Zaključak

    Jedina zamerka je pomalo konfuzan interfejs i navigacija. Ovo čudi, obzirom na iskustvo koje autor ima u oblasti interfejs dizajna.

    Zaključak je da je ovo rešenje koje definitivno mora da upotpuni svaki "developer stack". Posebno ukoliko ste micro ISV. Kvalitet podrške koju pružate može da napravi razliku između Vas i konkurencije. Jer posao se ne završava onda kada kupac izvadi kreditnu karticu iz džepa. Tada tek počinje.

    Za/protiv

    prednosti:

    • otvaranje novog slučaja slanjem e-mail-a
    • spam filter
    • screen capture plug-in
    • integrisan forum software

    mane:

    • nedostatak home stranice
    • pomalo konfuzna navigacija
    Technorati tags:

    Zakon o blogu

    Prerano ste se ponadali. Nema izgleda da bi ikada mogli da dobijemo zakon o blogusmile_teeth.  U situaciji u kojoj mnogo ozbiljnije oblasti nisu regulisane zakonom, teško bi bilo očekivati drugačije.

    Međutim, ako Vas zanima kako zakoni regulišu i utiču na blogosferu na "divljem" zapadu, sledeći tekst može da bude interesantan Blog Law » 12 Important U.S. Laws Every Blogger Needs to Know

    Technorati tags: ,

    1. Maj, e-mail i još po nešto

    1. Maj

    Čitam The New York Times, dodatak u Politici, i nikako da nađem da se negde pominje 1. Maj. Možda, zato što se u najrazvijenijem delu sveta i ne gleda blagonaklono na jedan "crveni" praznik. Na drugoj strani zemljine kugle, ovde u ovoj balkanskoj vu......ni, nije tako. I sedam godina kako smo zagazili u demokratske promene, nema ni pomena da se suspenduje ovakav jedan skaradni, nazovi praznik. 

    Zaboravili smo kakvu simboliku ima taj dan. Sa kavim značajem i značenjem se slavi u komunističkoj Rusiji i Kini. Sa kavom idejom se slavio u komunističkoj Jugoslaviji. Sa kakvom simbolikom se slavio u nacističkoj Nemačkoj. Sve smo to zaboravili. Prihvatili smo duh anarhizma i komunizma. Svega krajnje ekstremnog i po društvo destruktivnog. No o tome kako naše društvo voli da koketira sa ekstremizmom ne treba da govorim. Dovoljno je jasno iz toga, što trećina birača glasa za fašiste.

    Bitno je da slavimo 1. Maj, ali zato o Danu planete Zemlje nema ni reči.

    Znam sada sigurno u sebi mislite: "Šta, bre ovaj lupeta gluposti. Pa praznik se slavi svuda u svetu. Ma, bre Amerikanci su ga i izmislili." Ako tako mislite, onda dobro. Poštujem. Neću više da govorim o 1. Maju.

    E-mail

    U New York Times-u se ne pominje prvi maj, ali zato se pominje e-mail. Robert Wright u svom članku "E-mail, mi i prozak", postavlja pitanje da li e-mail, zapravo, unazađuje komunikaciju. Njegovo mišljenje je da je tako. U tome samo mogu da se složim sa njim.

    Pre nekih 15-20 godina sve je bilo drugačije. Komunikacija se obavljala isključivo telefonom. Mogli ste odmah da znate, da li možete da dobijete informaciju ili ne. Odgovor je bio momentalan. Mogli ste i da čujete sagovornika. Da osetite boju glasa i intonaciju. Jednom rečju, nije bilo nesporazuma. Danas, to više nije tako. Čekanje na ogovor može da se pretvori u beskonačnost. "Da li me druga strana ignoriše". "Da li je mail stigao, možda sam pogrešio adresu". "Da li može da mi odgovori". "Ili samo ne želi". "Možda je problem u njenom spam filteru". "Da li da pokušam još jednom, mogla bi da pomisli da sam dosadan". I na kraju kada primite, tako isčekivani, mail: "Šta je htela da kaže, ništa ne razumem".

    Situacija

    Ovih dana, dok čekam jednu važnu poruku, sam sebi postavljam ova pitanja. Situacija je sledeća:

    Pre nekog vremena obavio sam razgovor sa osobom A. Osoba A radi za instituciju B. Razgovor je dobro protekao. Zadovoljstvo je bilo na obe strane (njihovoj i mojoj). Na kraju razgovora, osoba A je rekla: "Zakazuću Vam sastanak sa osobom C i javiću Vam kada da dođete. Ostavite mi Vaš mail, te ću potanko da Vas obavestim o svim detaljima." I tu nastaje prvi problem. Počinjem da sričem slovo po slovo: "d", "p", "a", ..., "Ne sve su mala slova", "Nije ć, nego je c", "Ne, nema tačke između", "Kako mislite šta je to AT", "Da hteo sam da kažem majmunsko a". Da li je dobro zapisala? Ne znam. Niti ću ikada saznati. Prošlo je nedelju dana, nikakav odgovor nisam primio.

    Apsurd čitave situacije je da institucija B, i osobe A i C koje rade u njoj, imaju i te kakav interes da se "transakcija" dovrši. Interes je toliki, da ne bi bilo neprimereno da pošalju limuzinu po mene, sa sve plavušom pride. Bez obzira, odgovora još uvek nema.

    Šta je po sredi, ne znam. Da li je u pitanju tradicionalna neposlovnost, koja vlada ovim prostorima. Ili su možda u prazničnoj euforiji, pa ne stižu da mi odgovoresmile_teeth. Sačekaću da prođu i ti praznici pa onda telefon u ruke. I možda da primenim strai recept, "sve po spisku"smile_regular. Ovde, izgleda ne može drugačije.

    Technorati tags: ,

    Programerska kultura

    Razmišljao sam da tekst nazovem "programerska nekultura". No, da se neko ne bi našao uvređen, ostaje ovakosmile_regular.

    O čemu se radi? Pričao sam kako se čitav proces obično svodi na fazu implementacije. Međutim, još tragičnije je da u okruženju "programerske nekulture" i ova faza biva kontaminirana. Tako od procesa, na kraju, ostaje samo ruina.

    Tri alata za kvalitetno programiranje

    Prvi korak ka uspostavljanju kvalitetnog procesa, čine sledeće tri stavke:

    1. Testing framework: NUnit.
    2. Version and Source Control: SVN, TortoiseSVN.
    3. Issue and Bug tracking: FogBugz.

    Bez obzira da li Vaš tim ima jednog ili hiljadu članova, ne postoji izgvor koji bi mogao da opravda izostanak prethodnih alatki. Posebno, što su sva tri alata potpuno besplatna ( FogBugz je besplatan za do dva korisnika).

    Posetite gore navedene stranice. Saznajte nešto o ovim alatima. I počnite aktivno da ih primenjujete. Nije teško biti finsmile_regular.

    PS: Redovan backup podataka neću ni da pominjem. To bi bila stavka pod brojem 0 (hint: ovde i ovde).

    Technorati tags:

    Joel Spolsky u komšiluku

    Čuveni Joel Spolsky govoriće 17 maja u Zagrebu, na Web Start konferenciji posvećenoj isključivo web razvoju. Više na Zagreb / Edinburgh - Joel on Software...

    Preporučujem svima koji su u mogućnosti da poslušaju šta Joel ima da kaže.

    Technorati tags:

    Još jedan vredan micro ISV blog

    Čovek koji se već 30 godina bavi micro ISV business-om (samo se tada to zvalo drugačije), Michael Lehman, počeo je da piše blog. Blog nosi naziv Independent Innovation, a prvi post Michael Lehman's Independent Innovation : What color are your bits?, donosi novu dozu ohrabrenja za sve one neodlučne.

    U nekoliko reči, zašto je danas lako početi svoj micro ISV biz:

    • dostupno Internet tržište čini milion potencijalnih kupaca,
    • niska cena web hosting-a i protoka, snižava troškove proizvodnje skoro na nulu,
    • kupci su se već navikli na elktronske servise plaćanja i pribavljanja proizvoda kao što su PayPal i iTunes...

    Technorati tags: ,

    Serbia po prvi put na Slashdot-u

    Prvi put da je "Serbia" u bilo kom kontekstu pomenuta na Slashdot. Kada sam danas otvorio inbox i pročitao Slashdot newsletter... hm bilo je to jedno veliko LOLsmile_teeth.

    Da naravno radi se o famoznom "KRIPTONITU", čitajte na Slashdot | 'Kryptonite' Discovered in Serbian Mine. Ostavite i neki komentar... Nemože da škodi našem kaurinskom imidžusmile_teeth.

    Ovakva reklama ne može da se kupi parama....

    PS: Već vidim ideju za svoj micro biz... AdWords sa koga se smeši "Buy geniune Kryptonite today. Just $199.95 per gram."

    Technorati tags: ,

    Treba znati kada i kako odustati

    Od skoro pratim blog Guy Kawasaki-a i odmah jedan odličan tekst. Kawasaki je intervijuisao Seth Godin-a, i evo njegovih odgovora na 10 postavljenih pitanja: Ten Questions with Seth Godin. Povod je bila Seth-ova knjiga "Koja Vas uči kada da odustanete (i kada da ne popuštate)".

    Stvarno, odustajanje je prva umetnost. Posebno u našim društvenim uslovima (čitaj nekulturi), gde se institucija odustajanja smatra za nešto loše. Nešto što treba kriti. Kada ste čuli da su za nekoga rekli "Ona je odustala....", a da to nije bilo pogrdno. Shavatanje našeg prosečnog čoveka je, da je bolje agoniju produžit u nedogled, nego priznati neuspeh i odustati. E pa nećete moći ovako. Bar ne ako mislite da napravite svoj micro ISV. Ako niste spremni da priznate neuspeh, da odustanete i počnete ispočetka, onda ovo nije posao za Vas. 

    ...i kada odustati

    1. Nikako u trenutku kada Vam je najteže. Tada ne mislite svojom glavom.
    2. Nikako u sred nevolje. Mislite o tome pre nego što zaglavite do "guše". Pametni ljudi (ne ja), znaju da predvide nevolju i planiraju u skladu sa tim. Na primer, želite da postanete dobar programer. Ovu odluku treba da donesete pre nego li upišete PMF. Nikako ne na trećoj godini. Treba da procenite da li raspolažete dovoljnim resursima za poduhvat. Da li Vam infinitezimalni račun 14 reda, geometrija lobačevskog i ostali šitovi pomažui da stignete do cilja. I da li Vam uopšte ostane vremena za neko ozbiljno programiranje...

    Ostalo pročitajte sami. I preklinjem Vas ne upisujte prokleti PMF. Verujte mi na rečsmile_wink.

    PS: I da, ko još veruje da Zune može da bude uspeh. Kako reče pomenuti gospodin, "to je krupan zalogaj čak i za Microsoft". Ne grizite previše. Mislite o tome.

    Technorati tags:

    Power Saving Mode - S3

    Ako, kao i ja, koristite dva ili više račnara, od kojih jedan ima funkciju servera, sledeći tekst može da bude interesantan Going Green: Utilizing S3 Standby Mode Without Losing Functionality. Ideja je da se S3 stand-by mode iskoristi i na računaru koji treba da bude stalno uključen. Činjenica je da ovakav računar neće biti pod punim opterećenjem sve vreme. U takvim trenutcima praznog hoda, poželjno je da računar radi sa manjim utroškom energija (čitaj struje). Ako računar koristite u neku od sledećih namena:

    • Connection Sharing server
    • File server
    • Print server
    • SVN server
    • VNC server....

    podesite pravilno power saving mode i možada uštedite koju prausmile_regular.

    Technorati tags: , ,

    FogBugz od sada besplatan

    Odlična vest za sve one koji imaju micro ISV ili nameravaju da započnu jedan. Najpoznatiji bugtracking software je postao besplatan. Šta više FogCreek besplatno hostuje aplikacuju na svojim serverima, tako da ste oslobođeni svih problema. Jedino ograničenje je da možete da imate najviše dva korisnika. Sasvim dovoljno za jedan micro ISV. Ukoliko Vam treba više korisničkih naloga, moraćete da platite.

    Projekat je trenutno u beta fazi (sama aplikacija je stabilna, koristi se FogBugz 5.0) i jedini način da se registrujete je kroz diskusiju na forumu The Business of Software - FogBugz On Demand - Free for MicroISVs (beta!). Požurite, ja sam se upravo registrovao i čekam potvrdu o svom nalogu. Nadam se da ću uskoro moći da napišem i prva iskustva.

    Technorati tags: , ,

    Conversation Marketing

    Da li prodajete nešto na Internetu, ili samo želite da Vas čuju? U svakom slučaju treba da poznajete osnove marketinga na Internetu. Ako bilo šta drugo i može da se nazove marketingom, sem onog na Internetusmile_regular.

    Preporučujem odličnu knjigu Internet Marketing Book, Online: Conversation Marketing. Ono najbolje je da knjigu možete besplatno da čitate online.

    Knjiga govori o marketingu na način stara škola/nova škola. Osnovna ideja je da se proces modernog Internet marketinga sastoji iz nekoliko koraka:

    • Upoznajte svoju publiku. Ovde ne treba puno objašnjenja.
    • Predstavite se na adekvatan način. Web site i njegov izgled su ključan faktor za dobar marketing. Bitno je da ostavite dobar prvi utisak. U suprotnom, nema ništa od mušterija
    • Izgledajte ozbiljno. Osim toga kako site izgleda, bitno je i ono što na njemu piše.
    • Uspostavite vezu. Kada potencijalni kupac ode sa Vašeg sajta, potrebno je da ostanete u kontaktu. Rešenje mogu da budu RSS ili Newsletter.
    • Neka drugi govore o vama. Ovo je dovoljno jasno. Potrebni su Vam linkovi ka Vašem site-u.
    • Posmatrajte i prilagodite. Nije dovoljno da samo započnete AdWords kampanju. Ili da samo postavite baner. Ovo je neprekidan proces analize i poboljšanja. Jednom rečju Google Analytics može da bude vaš prijatelj.

    Obavezno pročitajte knjigu. Ja sam je pročitao u jednom dahu.

    Technorati tags:

    Kako napravti blog - 4 jednostavna koraka u slici i reči

    Konačno ste rešili da i Vi kažete nešto Svetu. Ostalo je samo još pitanje: "kako da napravim blog ?"

    Kao i obično, postoje bar četri dobra načina da ovo uraditesmile_regular. Evo jednog. Onako kako sam ja to uradio.

    1. Posetite spaces.live.com

    Kliknite na "Create your space". Iskoristite Vaš Windows Live ID kako bi se prijavili. Ako nemate Live ID, odaberite opciju Sign Up, da napravite novi nalog.

    Kada se prijavite, na stranici koja se pojavi unesite podatke o Vašem Live Space-u. Izaberite naziv Vašeg Space-a (Title), i web adresu (Address). Adresa će biti oblika vasaadresa.spaces.live.com. Kliknite na "Create your space".

    Čestitamsmile_regular. Upravo ste napravili Vaš Lives Space. Sada možete da pišete blog, postavljate svoje slike i uradite još po neku korisnu stvar sa Vašim Space-om. Ali pre nego što nastavite...

    2. Posetite windowslivewriter.spaces.com

    Kliknite na dugme "Download" kako bi preuzeli najnoviji Windows Live Writer. Ovo je desktop aplikacija uz pomoć koje možete da pišete tekstove iz foteljesmile_regular. Drugim rečima, ne morate da posećujete Vaš Live Space.

    Pokrenite instalaciju i instalirajte Windows Live Writer.

    3. Podesite Windows Live Writer

    Kada se instalacija završi potrebno je da podesite Windows Live Writer, kako bi mogli da pišete na Vašem Space-u. Ukoliko to već niste uradili, iz glavnog menija odaberite opciju Weblog > Add Weblog Account.

    U prozoru "Add New Weblog", izaberite opciju "Windows Live Spcae". Kliknite na "Next".

    U sledećem prozoru, u polje "Spaces Homepage URL" upišite web adresu Vašeg Live Space-a, koji ste prethodno kreirali. Na primer, adresa mog Space-a je microisv.spaces.live.com. U polja "Windows Live ID" i "Password", upišite e-mail adresu i šifru koju koristite priliko prijavljivanja na Windos Live ID nalog. Kliknite na "Next".

    4. Napišite svoj prvi blog post

    Sada možete da počnete sa pisanjem.

    Srećno.

    PS: Ne zaboravite da kliknete na "Publish"smile_regular.

    Technorati tags: , ,

    The Paradox of Choice - Why more is less

    Koliko puta ste poželeli mobilni telefon koji ima samo crvenu i zelenu slušalicusmile_regular.

    Sledeći Google TechTalk trebalo bi da pogleda svako ko se bavi razvojem softwarea. Ako se pitate kako to više opcija, funkcija, dugmadi, komandi,.... može da bude manje za korisnike Vaše aplikacije, pogledajte šta o tome kaže ovaj zanimljivi gospodin.

     

    My Code of Conduct

    Nabasah danas na Blogger's Code of Conduct - Blogging Wikia. Ne znam u kojoj meri je naša blogosfera doživljavala sukobe i polarizacije. I da li je bilo pretnji ubistvomsmile_teeth. Ali u potpunosti podržavam norme kulturnog i civilizovanog ponašanja. Zato, evo i mog "pravilnika o ponašanju".

    1. Preuzimam potpunu odgovornost za sve ono što napišem

    Obavezujem se da će svi tekstovi sadržati društveno prihvatljiv materijal. Obavezujem se na pisanje kvalitetnih i korisnih tekstova.

    2. Neću da sakrijem ni jednu informaciju koja drugome može da bude od koristi

    Učiniću dostupnim sve informacije, sem onih čijim bi objavljivanjem povredio nečiju privatnost, ugrozio bezbednost ili otkrio poslovnu tajnu. Zadržavam pravo da određene lične podatke, ostavim tajnim. Zadržavam pravo da ne objavim podatke čijim bi objavljivanjem naneo finansijsku štetu drugima ili sebi.

    3. Zadržavam pravo da uklonim svaki komentar koji nije u skaldu sa osnovnim normama civilizovanog ponašanja

    Obavezujem se na poštovanje principa slobode govora. Svako ima pravo da komentariše i napiše ono što želi, sve dok je sadržaj komentara prihvatljiv. Svi neprihvatljivi komentari biće obrisani, bez dodatnog objašnjenja. Kao neprihvatljiv, shvatiće se svaki komentar:

    • koji služi u svrhe diskriminacije i političke propagande,
    • koji služi u svrhe zloupotrebe, uznemiravanja ili pretnje,
    • koji je očigledno falsifikovan,
    • koji služi u svrhe klevetanja,
    • koji očigledno krši autorska prava, prava vezana za robne marke, prava intelektualne svojine ili prava na patente,
    • koji narušava privatnost.

    Ova lista nije konačna. Zadržavam pravo da u svakom pojedinačnom slučaju, bez dodatnog objašnjenja, komentar odredim kao neprihvatljiv. Takođe, zadržavam pravo da u bilo kom trenutku promenim bilo koje od pravila.

    4. U slučaju sukoba nastojaću da problem rešim privatno

    U slučaju sukoba ili nesporazuma, nastojaću da problem rešim u direktnoj komunikaciji sa učesnicima u sporu. Ni jedan spor neću da komentarišem javno. Ukoliko problem ne može da bude rešen na ovaj način, pomoć ću da potražim od drugih, nezavisnih, članova blogosfere. U tom slučaju, zadržavam pravo da o sporu javno obavestim druge.

    5. U slučaju komentara koji napaduju druge bez ikakvog osnova ili povoda, obavezujem se da preuzmem odgovarujeće akcije

    Svako ko o drugome napiše komentar uvredljive sadržine, biće (privatno) zamoljen da se izvini, izuzev kada bi takav postupak izazvao dalje sukobe ili dodatno pogoršao situaciju. Zadržavam pravo da sve uvredljive i zlonamerne komentare uklonim bez dodatnog objašnjenja, ukoliko procenim da je takvo rešenje najbolje.

    Svaki komentar koji sadrži elemente nezakonitog ponašanja ili na bilo koji način opisuje izvršenje krivičnog ili drugog nezakonitog dela, biće prijavljen nadležnim institucijama.

    6. Ignorisaću svaku provokaciju

    Neću davati odgovore ni na jedan zlonameran komentar o meni ili o mom tekstu. Neću odgovarati na provokacije, niti ću na bilo koji način podstrekivati raspravu.

    7. Pisaću na jeziku po svom izboru

    Zadržavam pravo da pišem na jeziku po svom izboru. Koristiću pismo koje smatram najpogodnijim. Zadržavam pravo da jezik na kome pišem nazovem po svojoj odluci. Neprihvatljiv su bilo kakvi komentari o jeziku ili pismu koje koristim. Koristiću termine i izraze iz različitih jezika. Zadržavam pravo da strane termine pišem u originalnom ili prevedenom obliku.

    8. Dobrodošli su svi dobronamerni komentari

    Svi pošteni i dobronamerni komentari su dobrodošli. Ohrabrujem svaki komentar koji za cilj ima da me upozori na eventualni propust ili grešku. Zadržavam pravo da dodatno proverim ispravnost svih iznetih informacija, kao i odluku da li će određene ispravke biti unete.

    Technorati tags:

    Micro ISV revisited

    Iako sam, ne tako davno, govorio o tome šta je to micro ISV, podstaknut diskusijom na The Business of Software - What does mISV mean? sklon sam da promenim mišljenje. Tada sam, između ostalog, rekao da micro ISV znači "micro Independent Software Vendor", što nije bilo netačno. Sada, mislim da "micro Internet Software Vendor" mnogo bolje odslikava suštinu micro ISV-a. Uz činjenicu da je Internet srž micro ISV biznisa, ide i moj glas da se "I" u "micro ISV" preimenuje u Internet.

    U ostalom, pročitajte gore pomenutu diskusiju na The Business of Software.

    Technorati tags:
    del.icio.us tags:

    Software Requirements

    Kao što sam već govorio, većina softverskih projekata osuđena je na neuspeh. Najčešći razlog je loš postupak upravljanja zahtevima. Neretko se dešava da su zahtevi potpuno zanemareni. O tome kakve posledice to ima, bilo je reči. Stoga, danas, nešto više reči o zahtevima.

    Software Requirements Specification

    Bez obzira da li pravite operatini sistem, CAD aplikaciju, tekst procesor ili neki drugi software, nameću se iste potrebe. Prvo, treba precizno utvrditi zahteve, a onda i obezbediti proces upravljanja zahtevima. Kao krajnji rezultat ovih aktivnosti treba da se dobije specifikacija zahteva, tj. Software Requirements Specification. Pored same aplikacije koja se razvija, ovo je najvažnija komponenta čitavog projekta.Dokument specifikacije zahteva može da se čuva u bilo kojoj formi. Na papiru, kao tekstualni dokument, u obliku tabele ili u relacionoj bazi. Ipak, najbolje je da se za te potrebe koristi neki specijalizovani alat.

    Kakvi sve zahtevi postoje

    Postoji više tipova zahteva. Generalno, svaki zahtev može da se svrsta u jednu od dve kategorije: funkcionalni i nefunkcoinalni. Funkcionalni zahtevi, predstavljaju svaku funkciju sistema. Ove funkcije mogu da koriste kajnji korsnici ili pak drugi sistemi i podsistemi. Neki od primera su: proveri stanje na računu, podigni novac, pijavi ispit, štampaj račun, prosledi fakturu itd... Ono što ih karakteriše je specifičan oblik "glagol-imenica". Na taj način uvek ih je lako prepoznati.

    Nefunkcionalni zahtevi opisuju karakteristike koje sistem treba da ima. Karakteristike mogu da se svrstaju u neku od sledećih kategorija: prenosivost, skalabilnost, bezbednost, privatnost, autentikacija, enkripcija, opterećenje... Neki od primera su sledeći: "Sistem mora da podrži minimum 100 istovremenih korisnika"; "Sistem treba da opsluži najamnje 1000 konkurentnih zahteva u sekundi"; "Svi lični podatci korsnika treba da se čuvaju u kriptovanoj formi" itd.

    Zahtevi/Dizajn/Implementacija

    Sistem može da se posmatra na više načina. Sa aspekta korisnika, projektanta, programera... Zahtevi predstavljaju sistema na konceptualnom nivou, odnosno onako kako ga korisnik vidi. Kao skup funkcija koje mu stoje na raspolaganjju. Dizajn je pogled na sistem iz ugla projektanta, tj. sistem na logičkom nivou. Skup objekata i akcija koje ti objekti obavljaju. Implementacija prikazuje sistem onako kako ga vidi programer. Skup klasa, funkcija, paketa, komponenata...

    Svaki nivo može da se posmatra kao zaseban sloj sistema. Sloj zahteva je iznad sloja dizajna, koji je opet iznad sloja implementacije. Sloj na višem nivou potpuno određuje sloj na nižem. Sa druge strane sloj na nižem nivou ni na koji način ne sme da određuje sloj na višem nivou. To za posledicu ima da dizajn i implementacija ni na koji način ne smeju da utiču na zahteve. Rešenje je da se zahtevi predstave jezikom korsinika, te da se izostave bilo kakvi tehnički termini. Slede dva primera:

    • Primer 1: Korsnik od sistema zahteva rasploživi iznos za trošenje. Sistem prikazuje stanje kojim korisnik raspolaže na računu.
    • Primer 2: Korisnik bira odgovarajuću opciju padajućeg menija, desnim klikom miša. Zahtev se prosleđuje do SQL servera koji čuva informacije o računima korisnika. Poziva se uskladištena procedura....

    Prethodna dva primera predstavljaju dve očigledne suprotnosti. Prvi primer je odličan primer jednog funkcionalnog zahteva. Korišćen je samo rečnik korisnika. Ne pretpostavlja se ništa o načinu na koji korisnik stupa u interakciju sa sitemom. Pritiskom na neki od tastera ATM-a, ili izborom opcije na touch-screenu. O tome da li se stanje prikazuje na ekranu ili se štampa račun. Ne govori se ništa ni o tome kako su realizovane ove funkcije. Korisnika ne interesuje način na koji sistem funkcioniše Interesuje ga samo krajnji benefit, informacija o raspoloživom stanju.

    Drugi primer je potpuna suprotnost. Ovde su napravljene sve greške, koje je bilo moguće napraviti. Pretpostavlja se da sistem koristi grafički interfejs i padajuće menije. Da se u interakciji sa sistemom korsnik služi mišem. Nameđe se ograničenje da se podatci o korisniku čuvaju u bazi podataka, te da postoji poseban server za tu namenu. Pominju se i uskladištene procedure... Na ovaj način zahtevi su "zaprljani" pretpostavkama o dizajnu i implementaciji. To dovodi do toga da korisnik ne razume opisane funkcija sistema, pa ni ne učustvuju u procesu. Sistem, sa druge strane, postaje potpuno nefleksibilan i ograničen nametnutim rešenjima.

    Wearing multiple hatssmile_angel

    Za "zamenu šešira" ne postoji neki adekvatan prevod na naš jezik. Bilo kako bilo, sposobnost da menjate šešir na svojoj glavi može da bude presudna u procesu razvoja. O čemu se zapravo radi. U kontekstu ove priče, to znači da prilikom pisanja zahteva treba da nosite šešir krajnjeg korsnika aplikacije. Pitanje je ŠTA, a ne KAKO. Tajna je u veštini da mentalni kontekst prilagodite trenutnoj fazi razvoja. Kao što zante, context switch je jako skupa operacija. Posebno kada je procesor sačinjen od ćelija sive mase.

    Dobra vest je da sa stavljanjem programerskog šešira retko ko ima problemasmile_regular.

    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