Svi postovi sa bloga: Area51. Web dizajn, web razvoj, programiranje

Pre neko veče smo bili do Beograda da se vidimo sa drugarima i pogledamo The Dark Knight. Utisak koji sam imao kada smo izašli iz sale je da je film dobar, ali to je bilo to - bez superlativa. Međutim, kako vreme prolazi i kako razmišljam o detaljima iz filma sve više i više mi se sviđa; toliko da ću ići još jednom da ga pogledam.

Džoker je uznemiravajuće lud. Ne lud kao bolestan, već lud u načinima na koje govori ono što želi da kaže. U ponekim momentima su njegovi postupci toliko smešni da se ceo bioskop valjao, ali u pozadini je uvek bilo destruktivno ludilo. Uz scene “Here’s my card” i “Give me a minute” idu i scene gde objašnjava kako je dobio glazgovski osmeh, njegovi “socijalni” eksperimenti, priča o ljudima i njihovoj sebičnosti, o tome kako i zašto je tu gde je i radi to što radi itd. Totalni freak.

Neću više da kvarim, pogledajte film. Tona akcije, komičnih scena i jedan jako, jako sjeban lik.

why-so-serious.jpg

Jedna je posebna:

wonka.jpg

Primetio sam da u razvoju prve verzije aplikacije imaju tri osnovne faze u pogledu toga kako cela stvar izgleda:

  • Postavljanje skela - ovo je početna faza kada se spremi framework, rasporede osnovni moduli, podesi autentifikacija, upload i slične ostale stvari koje će aplikacija koristi. Ukoliko ste uhodani sa platformom na kojoj radite ovo ide jako brzo - maksimalno par dana.
  • Ružno pače - u ovoj fazi polako gradite funkcionalnost aplikacije, ali stvari ne izgledaju i ne rade baš najbolje. Rupe u funkcionalnosti su na sve, ono što radi obično zahteva još dosta vremena da dođe na očekivani nivo, interfejs nije još uvek lepo “seo” itd.
  • Peglanje - početak ove faze se preklapa sa krajem prethodne, a zvanično počinje onog trenutka kada kažete da je dosta dodavanja novih stvari i da treba da se fokusirate na pegalanje onog što je tu. Ovo ne bi bio loš trenutak da uvučete neke beta testere u priču. Ljudi koji su sveži sa aplikacijom će sigurno primetiti gomilu stvari koje su vama, kao nekom ko ne skida pogled sa nje već dosta vremena, promakle.
  • Na kraju ovog puta je jedna sporija faza, gde može malo da se odahne i napune baterije. Već sam je pominjao u ovom tekstu. Posle ide gomila bugova koje će ljudi pronaći kada počnu da koriste softver. Pa nove verzije koje krpe te bugove, dodaju nove funkcije (i nove bugove) i tako u krugu…

    Pored finansijske dobiti (ili neke druge ako ne ciljate na zaradu), nagrada je i to da ste stvorili nešto novo iz ničega. Neki uživaju u tome, neki ne, ali tu je u svakom slučaju.

    ugly-duckling.jpg

    Nešto o čemu razmišljam u skorije vreme je kako povući alate u pozadinu i omogućiti ljudima da ih koriste, a da ne moraju da imaju stalan kontakt sa njima i kada taj pristup ima smisla.

    time-machine-logo.gifPrimer jedne tehnologije koja se vodi tom logikom je Time Machine - backup softver koji dolazi uz novi Mac OS. Ne zahteva puno od vas - ako primeti slobodan hard disk ili particiju pitaće da li može da ga koristi. Recite Yes i to je to - od tog trenutka nadalje Time Machine će početi da pravi backupe i prestati da vas smara sa pitanjima.

    “Nevidiljivost” ovog alata se ogleda u tome što se od vas ne očekuje ništa da bi on radio. Nastavljate da koristite računar kao i ranije, a Time Machine stoji u pozadini i radi svoje bez da vas cima ili da vi morate nešto da mu kažete. Kada vam zatreba fajl iz backupa on je na par klikova, ali do tad alat kao da ne postoji.

    Ovakav pristup ima jako mnogo smisla kada je potrebno korisnicima pružiti nešto što nije direktno vezano za alate koje koriste u radu, ali je tu da taj rad podrže. Ako se tako gleda softver za kolaboraciju i upravljanje projektima je dosta blizak Time Machineu. Sam sebi nije svrha, ali vam omogućava da posao uradite brži i uz manje zabune.

    javascript.jpg Najveći problem koji imam pri JavaScript razvoju je konstantno mešanje konstrukcije, stilova i ponašanja u istom kodu.

    Što se stilova tiče njih je relativno lako držati odvojene u zasebnom fajlu, ali opet se često dešava da se svojstva moraju menjati direktno iz JavaScripta… Ne mogu se imati klase baš za svaku moguću situaciju koja nam treba.

    Kao što rekoh, stilovi nisu problem - problem je konstrukcija i ponašanje koje se kači na nju. Do sada nisam našao dovoljno fleksibilan metod koji omogućava kasnu separaciju između te dve stvari.

    Kod PHP-a je lako jer on ne uključuje ponašanje već radi po run through principu (protrčiš i zaboraviš). Na primer, kada u activeCollabu korisnik zatraži projekat posetivši URL tipa:

    http://projects.mycompany.com/projects/12

    kontroler će od modela tražiti da učita projekat #12 i proslediti ga viewu da ga isti ispiše u pogodnom obliku. Run through - učita, ispiše, zaboravi da se ikad išta desilo.

    Kod JavaScripta stvari ne idu baš tako lako jer HTML nije samo view već i konstrukcija. Evo ga primer:

    var add_option_button = $('<button type="button">Add option</button>').appendTo('body');
    

    To bi u PHP-u bilo dosta - samo ispiši HTML i prosledi ga browseru. Ali, ovo dugme bez ikakvog ponašanja prikačenog na njega ne radi ništa. Zato moramo da dodamo ponašanje NAKON što je konstrukcija složena.

    $('<button type="button">Add option</button>').click(function() {
    alert('clicked!');
    }).appendTo('body');
    

    Ovo je samo jednostavan primer. Složeniji problemi mogu bili jako komplikovani sa jako mnogo nivoa konstruisanja elemenata i kačenja ponašanja na njih, intervalima i timerima, događajima… U celoj toj gužvi jako je teško jasno odvojiti slojeve što dovodi do koda od koga se ljudima često prevrne stomak kada ga prvi put vide.

    PS: Primeri se oslanjaju na jQuery JavaScript biblioteku.

    Sad baš videh na Web.Start sajtu da su snimci ovogodišnjih predavanja postavljeni ovde. Eto prilike da oni koji nisu bili vide o čemu se pričalo, a mi, kojima je kafana bila izuzetno draga, vidimo neka zanimljiva predavanja koja smo propustili.

    web.start.gif

    word-count.jpgDok sam bio klinac i tokom srednje mogao sam da sedim po ceo dan i čitam. Sećam se da sam jedno leto stukao “Rat i mir” za manje od tri nedelje. Sada su stvari skroz drugačije - ne mogu da se zadržim na nekom tekstu duže od 3 pasusa, posebno na internetu. Uvek mi nešto drugo odvuče pažnju pa mi duži tekstovi stoje otvoreni u tabovima danima dok ih čituckam malo po malo.

    Verujem da nisam jedini. Takođe verujem da nije potrebno mnogo reči da bi se prenela poruka ili obradila neka tema. Čini mi se kao da ljudi pokušavaju da natrpaju previše stvari u svoje postove kako bi obradili sve potrebne detalje. :

  • Prvo mindset - otarasite se osećaja da nešto mora biti dugačko i opširno da bi bilo vredno nečije pažnje. Čak je čest slučaj da ljudi upravo opširnošću pokušavaju da sakriju svoju neposobnost da kažu nešto konkretno. Setite se samo “sranja” na ispitima…
  • Kraći tekstovi, 250 do 500 reči, izlomljeni u par kraćih celina. Ta dužina se meni pokazala kao dovoljna da se nešto kaže, a da ne davi i ne zahteva dubok udah pre čitanja. Sve preko 1000, 1500 reči je previše ako mene pitate.
  • Ne mora sve da bude pokriveno jednim postom. Umesto jednog masivnog posta napravite seriju postova i tako u detalje obradite temu.
  • Koristeći liste možete osetno da skratite tekstove jer omogućavaju da se nešto opiše korak po korak uz zadržavanje konteksta. Ukoliko su elementi liste duži od par reči naznačite najbitnije stvari kako bi se lista mogla brzo preletati. Ako nekog baš zanimaju detalji pročitaće sve.
  • Pročitajte svoj tekst par puta pre nego što kliknete Publish dugme. Na taj način možete da izbacite gomilu viška i osetno podignete kvalitet teksta.
  • Kao i uvek, ne može se generalizovati. Nekada nešto mora da bude opisano nadugačko i naširoko. Ti slučajevi su ipak pre izuzetak, nego pravilo. Ovaj tekst ima nešto manje od 350 reči. Da li je preneta dovoljna količina informacija? Da li je rečeno nešto konkretno? Ja se iskreno nadam… )

    Ukoliko imate proizvod koji (pro)dajete u bilo kom obliku (setup.exe, skript, servis itd) pre ili kasnije će se pojaviti neko ko će želeti da se vaše rešenje prekroji kako bi odgovaralo njegovim potrebama. Naravno, vi ćete biti prvi kojima će taj projekat biti ponuđen kao neko ko najbolje poznaje samu aplikaciju i kod. U slučajevima kada ne nudite izvorni kod to je i jedino rešenje.

    Nema ništa loše ni u prihvatanju ni u odbijanju takvog posla ako vidite zaradu u tome, ali postoji par stvari kojih treba biti svestan:

  • Da li taj projekat podrazumeva i usklađivanje prekrojenog rešenja sa novim verzijama koje izdate? Meni lično, a verujem da nisam sam, nema ništa gore nego terati dve ili više različitih grana u isto vreme. Vremenom će vam dosaditi i možda se budeti lupali u glavu zašto ste dozvolili da se za “sitnu lovu” tako obavežete.
  • Ovakvi projekti su uglavnom samo kratkoročna rešenja za dolazak do novca. Na duže staze se više isplati da ulažete u razvoj proizvoda i marketing.
  • Ne bi smeli da dođete u situaciju da trošite previše vremena na customization projekte i ugrozite svoj posao jer ne radite na samom proizvodu.
  • po-meri.jpg

    Ne može se generalizovati (softverska rešenja pokrivaju raspon od besplatnih do rešenja koja koštaju milione), ali moje je mišljenje da u prvih godinu dana nipošto ne prihvatate ovakve projekte. Umesto toga slušajte šta vaši korisnici traže i fokusirajte se na razvoj samog proizvoda. Teško da postoji išta što će se bolje isplatiti na duže staze od toga.

    Što se našeg proizvoda tiče, mi smo se opredelili za kompletno otvorenu platformu sa dva osnovan metoda proširivanja - API i moduli. Ako to nije dosta, tu je sav izvorni kod. Na ovaj način naši klijenti imaju mogućnost da sami prilagode aplikaciju svojim potrebama ili da unajme nekog da to uradi za njih, a da mi nismo jedina opcija. Win-Win-Win ako mene pitanje - dobro i mušterijama i nama, a i drugim programerskim firmama koje mogu da zarade prilagođavajući naše rešenje specifičnim potrebama klijenata.

    utakmica.jpg
    Izvor: fivb.org

    Sinoć se u Novom Sadu igrala utakmica svetske like između Srbije i Brazila. Brazil je fino počeo i dobio prva dva seta bez većih problema, da bi se se posle toga naši povratili i dobili meč sa 3:2 u setovima. Atmosfera se baš opasno zakuvala pred kraj četvrtog seta, dok je zadnji set publika pratila na nogama.

    Ne pratim sport, a na utakmicu sam otišao čisto da vidim kako je i iskusim nešto novo. Na kraju sam ostao prijatno iznenađen atmosferom i jako lepom utakmicom, ali nisam mogao da se suzdržim a da ne povlačim paralele između stvari koje me interesuju (poslovanje, psihologija, motivacija itd) i onoga što se dešavalo na terenu.

    Jedna od tih stvari je koliko je bitno pokrenuti se sa mesta i zadržati to stanje kretanja napred, bez zaustavljanja. Ima brzih i sporih delova, uspona i padova, ali je bitno da si u jednom trenutku napredovao u odnosu na prethodi, a ne stajao u mestu. To stalno stanje kretanja napred imao masivan pozitivan psihološki uticaj na ljude sa kojima radiš, dok protivnike stavlja pod veliki pritisak. Zahvaljujući tome ovo kretanje hrani samo sebe, ali ga treba održavati i usmeravati da ne bi posustalo. U pitanju je moment

    Kada je Srbija dobila treći set pribojavao sam se da neće uspeti da izguraju do kraja, ali je sve bilo jasno kada su dobili četvrti. Nije uopšte bilo sporno da li će na kraju razvlaiti ili ne - jednostavno su se zaleteli i tu više nije bilo stajanja.

    Kada sve saberem ova utakmica je jedno jako lepo iskustvo (na TV-u se ne može osetiti buka i atmosfera koju pravi 11 hiljada navijača) koje me ujedno tera da se zapitam šta sam danas uradio da je moja priča korak napred u odnosu na juče.

    utakmica.jpg
    Izvor: fivb.org

    Sinoć se u Novom Sadu igrala utakmica svetske like između Srbije i Brazila. Brazil je fino počeo i dobio prva dva seta bez većih problema, da bi se se posle toga naši povratili i dobili meč sa 3:2 u setovima. Atmosfera se baš opasno zakuvala pred kraj četvrtog seta, dok je zadnji set publika pratila na nogama.

    Ne pratim sport, a na utakmicu sam otišao čisto da vidim kako je i iskusim nešto novo. Na kraju sam ostao prijatno iznenađen atmosferom i jako lepom utakmicom, ali nisam mogao da se suzdržim a da ne povlačim paralele između stvari koje me interesuju (poslovanje, psihologija, motivacija itd) i onoga što se dešavalo na terenu.

    Jedna od tih stvari je koliko je bitno pokrenuti se sa mesta i zadržati to stanje kretanja napred, bez zaustavljanja. Ima brzih i sporih delova, uspona i padova, ali je bitno da si u jednom trenutku napredovao u odnosu na prethodi, a ne stajao u mestu. To stalno stanje kretanja napred imao masivan pozitivan psihološki uticaj na ljude sa kojima radiš, dok protivnike stavlja pod veliki pritisak. Zahvaljujući tome ovo kretanje hrani samo sebe, ali ga treba održavati i usmeravati da ne bi posustalo.

    Kada je Srbija dobila treći set pribojavao sam se da neće uspeti da izguraju do kraja, ali je sve bilo jasno kada su dobili četvrti. Nije uopšte bilo sporno da li će na kraju razvlaiti ili ne - jednostavno su se zaleteli i tu više nije bilo stajanja.

    Kada sve saberem ova utakmica je jedno jako lepo iskustvo (na TV-u se ne može osetiti buka i atmosfera koju pravi 11 hiljada navijača) koje me ujedno tera da se zapitam šta sam danas uradio da je moja priča korak napred u odnosu na juče.

    blogodak blog

    Blogodak?

    Blogodak je vaš pogled na domaću blogosferu. Prijavite se i napravite sopstvenu listu blogova koje pratite.

    O projektu

    Podrška

    MyCity.co.yu

    DevProTalk