duca's profileduca's spaceBlogLists Tools Help

Blog


    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.