Naš proces: Distribucioni kanali

Beleška: Ovaj članak je spremljen za naš kompanijski wiki i tu je prvi put objavljen. U pitanju je deo živog procesa koji koristimo pri Active Collab razvoju. Proces stalno usavršavamo u skladu sa novim saznanjima, što praktičnim, što teorijskim. Ukoliko vam se ovaj tip tekstova sviđa, ostavite u komentaru dole sva pitanja ili teme o kojima biste želeli da pišem u budućnosti.

Distributivni kanali su način da razgraničimo više grupa korisnika, u skladu sa komforom koji imaju prema nestabilnom softveru i eksperimentalnim mogućnostima, i da im isporučujemo softver u skladu sa time.

Naš proces i sistem za isporuku softvera nam omogućava da “gađamo” jedan ili više kanala sa novim verzijama, kao i da neke mogućnosti uključimo ili isključimo u skladu sa kanalom na koji je softver isporučen.

U Active Collab projektu imamo četiri distributivna kanala, tri specifična za Cloud naloge i jedan za korisnike koji sami hostuju Active Collab:

Edge je kanal koji se koristi za testiranje u produktivnom okruženju, ali bez mušterija. Njega koristimo za potrebe finalnog testiranja i kako bi dokumentacioni i business development team imao pristup mogućnosti dovoljno pre nešto se isti nađe pred mušterijama.

Naš produkcioni Active Collab je uvek na ovom kanalu, a master grana treba da bude dovoljno stabilna da ne slomi našu produkciju. Čak i da se desi da “slomimo Edge”, taj momenat nas dovoljno “zaboli” pošto nam je potreban za rad, tako da je tim motivisan da problem što pre reši.

Beta je kanal na koji puštamo mogućnosti za koje želimo malo više testiranja sa samim korisnicima, pre nego što ih pustimo svima. Ovaj kanal koristimo za usability i beta testiranje kako bi finalna verzija mogućnosti bila unapređena u skladu sa rezultatima tih testiranja.

Ukoliko se mogućnost ne ispostavi kao pun pogodak, možemo da razmislimo o daljim unapređenjima, a možda čak i o izbacivanju mogućnosti iz softvera, bez prevelikih komplikacija i posledica po korisnike.

Mušterije same mogu da se jave da budu ubačene na ovaj kanal, a broj je kontrolisan. Idealno je da broj korisnika na beta kanalu bude maksimalno 10% ukupnog broja aktivnih korisnika, kako ne bi previše ljudi bilo izloženo testiranju i nestabilnosti. Takođe, ova grupa bi trebalo da je relativno mala kako ne bi vršila veliki pritisak na razvojni tim i podršku.

Stable je kanal čije mogućnosti dobijaju svi Cloud korisnici. U pitanju je kanal na koji puštamo samo verzije za koje smatramo da su pogodne za opštu upotrebu.

Self-hosted je poseban distributivni kanal koji koristimo za distribuciju verzije softvera koju mušterije sa licencama hostuju kod sebe na serverima. Obično prati Stable kanal ili kasni par manjih inkremenata iza tog kanala, pošto je u pitanju verzija koja se distribuira korisnicima kod kojih nemam platformu pod kontrolom, pa samim tim želimo da naš softver bude što stabilniji.

Definicije ovih kanala i njihova svrha je strogo definisana, a proces isporuke softvera na njih u potpunosti automatizovan.

Nisi završio…

… dok to neko normalan ne proveri:

Ne mogu da verujem

Rezultat cele ove igranke je stvarno upeglan sistem za filtriranje zadataka i izveštavanje koji ostatak softvera koristi na niz drugih mesta. Vredelo je :)

Korisnici i zahtevi za novim mogućnostima

Kada traže novu funkcionalnost, tipično za korisnike je da predlažu rešenje, bez da detaljno iznesu sam problem. Na primer, korisnik će pre tražiti:

Mi bismo želeli da activeCollab podržava Markdown

umesto:

Sistem za unos teksta je dosta kabast u trenutnoj verziji vašeg softvera. Mi bismo želeli da možemo brzo i jednostavno da pišemo, bez da klikćemo na opcije u toolbaru. Takođe, jako su nam bitne liste, tabele i brzo ubacivanje linkova i slika

Možda malo čudan primer, ali je prilično dobar kao prikaz jedne stvari: rešenje koje korisnici traže nije nužno ono što stvarno i žele. U ovom konkretnom slučaju, rešenje možda nije sam Markdown (iako tako verovatno deluje nekom ko ima dosta iskustva sa istim), već pomeriti granice koliko dobro može vizuelni editor da se upegla i integriše.

U suštini, ovo stvarno nije problem ukoliko ne slušate slepo korisnike. Zahteve i predloge ne treba uzimati zdravo za gotovo, već treba naći problem koji bi taj zahtev rešio. U velikom broju slučajeva, sam problem može biti rešen na mnogo elegantniji i jednostavniji način od zatraženog rešenja i stvarno bi bilo šteta to propustiti samo zato što od drveća nismo uspeli da vidimo šumu.

Navučen na activeCollab 3

Predugo radimo na verziji 3 (više od dve godine). U svom tom razvoju, jedan od ključnih majlstona je bio momenat kada ćemo mi početi da koristimo verziju 3 za naše interne potrebe. To se desilo jesenas, kada se dosta kockica složilo, a mi napisali upotrebljivu upgrade skriptu da postojeće podatke i projekte prebaci sa starog na novi sistem.

Od tada nam activeCollab 3 polako, ali sigurno pomaže da transformišemo način na koji radimo. Da ne dođe do zabune, ovim ne želim reći da je activeCollab 3 instant project menadžement alat, gde samo kupite licencu, dadate toplu vodu i svi vaši problemi su rešeni. Naprotiv, promene ne dolaze od alata, već od ljudi, a alati tu samo pomažu (softverski alati, metodologije, treninzi itd).

Primer jednog od takvih alata: podesiv home screen.

Sprint

Home screen sa informacijama o tome šta se trenutno dešava imamo u sistemu od samog početka, ali smo mogućnost podešavanja šta prikazuje dodali tek sad, u verziji 3. Za razliku od većine podesivih naslovnih strana (česta imena: home screen, home page, dashboard), gde imate jednu stranicu na koju možete staviti widgete, activeCollab 3 ih može imati više, u vidu tabova.

Moj screen trenutno ima dva taba:

  1. Sprint tab mi pokazuje moje zadatke u trenutnom sprintu (grupisane po tipu), sve zadatke u trenutnom sprintu grupisane po tome ko ih radi, kao i zaostale zadatke iz prethodnog sprinta. Iza ovih listinga stoji redizajnirani i značno moćniji filter zaduženja, a labele omogućavaju da vidim tip i status zadatka (ovi zamrčeni su BLOCKER i REOPENED zadaci, plavi su FIXED, a narandžasti CONFIRMED).
  2. Happening tab mi prikazuje "aktuelnosti" - listu aktivnost na projektima na kojima učestvujem, ko je online, diskusije koje sam pokrenuo ili na koje sam komentarisao itd.

Kako vreme bude prolazilo i meni budu trebali novi "pogledi" na zadatke, kao i na opšte stanje stvari, neću biti ograničen jednim ekranom i jednim setom widgeta. Umesto toga, uvek ću moći da ih dodam kao nove tabove, ili kao elemente postojećih, a ako nešto ne postoji u sistemu, pisanje novih widgeta se svodi na pisanje i smeštanje odgovarajuće PHP klase u odgovarajući folder.

Jedna mala stvar, iza koje stoji nedelju dana posla, koja će hiljadama ljudi omogućiti da lakše dođu do informacija koje im trebaju, znaju šta je sledeći korak i brže ga završe.

Novi prostor #6

Evo je jedna od dražih fotografija:

Zgrada

Napravio sam je 2008. godine, jednog vedrog januarskog dana. Tada smo tek uselili u staru kancelariju (u kojoj smo ostali dve i po godine), a koja je imala predobru terasu sa pogledom na park. Pošto je bio vedar dan, ne baš tipično zimski, uslikao sam par fotki sa terase, uključujući i ovo gradilište. Ono što nisam znao u tom momentu je da ću se kroz godinu i po dana ja useliti u tu istu zgradu, a kroz dve i po godine i firma...

Prethodni put sam o novom prostoru pričao početkom februara. Od našeg plana da se uselimo najkasnije krajem marta nije bilo ništa, tako da smo prvi radni dan u novom prostoru proveli tek krajem maja (prethodnog ponedeljka).

Cela stvar još uvek nije u potpunosti gotova i ima niz sitnih poslova da se završe, ali osnovne stvari su na mestu i sve fino funkcioniše: čist i uredan prostor, komplet opremljena kuhinja, WC, bežična mreža, radni stolovi, klimatizacija itd. Stvari kao što su video nadzor, sala za sastanke, full opremljena trpezacija i slično polako dolaze na svoje mesto, ali one su uvek bile bonus, nikako show stopper.

Meni lično nov prostor znači samostalnost i fleksibilnost (prostor je naš, pa imamo potpunu slobodu), kao i finu osnovu za dalje napredovanje, u kom god smeru da se krenemo. Predviđena za 20 sedećih radnih mesta, bez da se ljudi guraju, na dobroj lokaciji i sa sitnicama koje smo birali kako bi odgovorila našim sadašnjim i budućim potrebama, ova kancelarija je prostor u kome možemo da se opustimo, radimo i nastavimo da rastemo svojim tempom.

Uz trud da se nova kanclearija u potpunosti završi i opremi, naredni korak je activeCollab 3. Prvi preview za developere je izbačen 31. maja. Sad to sve treba upeglati u jednu finu, zaokreženu i pouzdanu celinu. Zvuči jednostavno, a u stvari je par meseci posla... Slatke muke, a o njima detaljnije u narednim nedeljama.

Building Stuff for Fun & Profit

Kako stvari stoje, u junu ću biti na dva skupa (iFront i How to Web) i pričati o nekim "sitnicama" vezanim za razvoj proizvoda i poslovanje na Internetu. Pošto se skupovi i publike razlikuju, biće razlika u samoj prezentaciji, ali u osnovi je priča o počinjanju web posla (tražiti investitore ili ne, šta praviti, kako doći do prve verzije itd) i kako na celu tu stvar utiče činjenica da smo tu gde smo, a ne u Paul Grahamovom komšiluku.

Building stuff

Vidimo se.

PS: Ukoliko nekog zanima budućnost activeCollaba i šta smo zakuvali za verziju 3, poneću laptop sa verzijom koju smo spremili kao prvi preview za ekipu koja razvija i prodaje activeCollab module.

Dilema

Jedna od stvari koja s vremena na vreme naleti je pitanje da li postoji ili zahtev da se napravi nešto što će uvoziti zadatke iz activeCollaba u Eclipse, kao Mylyn konektor ili kao potpuno nezavistan paket. Zahtev kao i svi drugi, manje popularan od nekih, ali opet dosta popularniji od nekih drugih, za neke timove nebitan, a za neke deal breaker. Definitivno tema za razmišljanje, ali tu ima jedan problem:

Lično mislim da je Eclipse kompletan promašaj, Frankenštajn napravljen od gomile otpada nabacanog na jedno mesto, tako napravljen da ne naljuti nikoga po pitanju mogućnosti, ali da te vremenom dovede do ludila i definitivno da nikada nikoga ne učini srećnim. Pogledajte samo ovaj Preferences dijalog:

Eclipse preferences

Da te vidim da podesiš soft tabs iz prve, o ostatku da i ne govorim... Ne poželeti nikome!

I tu dolazimo do dileme iz naslova posta: da li svojim radom podržavati platformu na čiju pomisao vas obuzme neki čudan bes, kao da biste je obrisali iz postojanja da ikako to možete? Da li ličnim stavom i ličnim protivljenjem pucate sebi i svom proizvodu u nogu? Da li zbog ličnog stava uskratiti nešto korisno svojim korisnicima?

Po meni, projekti na kojima radimo neizbežno nose naš lični pečat, sa svim dobrim i lošim stvarima koje to nosi. To ne treba izbegavati, već prigrliti. Neka ono na čemu radimo bude oličenje našeg najboljeg Mi, pa makar to značilo izbacivanje stvari koje Mi smatramo lošim, bez obzira što ih neki ljudi traže. Naknadno izbacivanje mogućnosti je teško, tako da sve što dodamo treba da se računa i da dodaje vrednost proizvodu, jer smo Mi ti koji ćemo tu istu mogućnost morati godinama da podržavamo. Ako je Mi ne volimo i zakolutamo očima svaki put kada je neko spomene, onda je greška što smo je uopšte i dodali...

I tako A51 neće u skorijoj budućnosti raditi na Mylyn konektoru...

Eclipse

activeCollab Timer

activeCollab je još od verzije 1.0 (oktobar 2007.) imao mogućnost unošenja utrošenog vremena na pojedinačne projekte i zadatke. Ta mogućnost je tada dodata samo kako bi activeCollab bio konkurentan drugim alatima, ne i zato što smo mi imali realnu potrebu za njom. To se vremenom promenilo...

Problem kod prvih verzija je što nije postojala laka mogućnost automatskog praćenja vremena, gde ćete vi jednostavno pritisnuti dugme i onda će neka aplikacija u pozaditi pratiti koliko ste vremena potrošili radeći. Kada završite, još jedan pritisak na dugme i to vreme biva logovano u activeCollab.

Postojale su neke aplikacije koje su to omogućavale i lepo se integrisale sa activeCollabom, ali recimo samo da nisam bio zadovoljan njihovom izvedbom. Često su to bila kabasta cross platform rešenja koja su izgledala kao da su pala sa Marsa (Adobe AIR), ponekad bugovita i napuštena od strane njihovih autora, komercijalne aplikacije su često bile prilično skupe... Ne baš sjajna situacija.

Zato smo prošle godine odlučili da napravimo zvaničnu aplikaciju koja olakšava praćenje vremena. Cilj je bio da se korisnicima omogući jednostavno praćenje vremena gde je izvedba same aplikacije na nivou koji mi od jednog takvog alata očekujemo. I tako je nastao activeCollab Timer:

Timers

Ljudima koji naplaćuju svoje usluge po satnici ne moram objašnjavati koliko je bitno pratiti vreme koje trošite radeći, ali postoji i niz prednosti koje pruža i ljudima koji rade na projektima i ne napalaćuju po satu.

Na primer, meni je praćenje vremena promenilo način na koji radim. Kada počnete da pratite koliko vremena stvarno trošite, jasno se povuče granica između vremena provedenog za računarom i vremena provedenog u efektivnom radu. U mom slučaju, prva brojka je uvek dosta veći nego druga (npr, imam osećaj da provedem 10 sati za računarom, a opet logujem samo 3h efektivnog rada). Doduše, ja pored programiranje (za koje jedino pratim vreme) radim i niz drugih stvari, ali opet - ponekad je zastrašujuće koliko malo efektivnog rada dodam u poređenju sa količinom vremena koje je otišlo na te "sporedne" aktivnosti.

Kako vreme prolazi, tako se zajedno i activeCollab i activeCollab Timer, a i načini na koji ih koristimo, razvijaju. Trenutno testiramo verziju 1.3 Timer aplikacije koja dodaje par "sitnih" unapređenja koja značajno unapređuju način na koji se aplikacija koristi. Tako, npr, zahvaljujući tim unapređenjima ja sada Timer koristim kao svoju to do listu (vidi screenshot gore, to treba danas da odradim), nešto za šta sam do sada uvek koristio papir i olovku.

PS: activeCollab Timer je besplatna aplikacija dostupna za Windows i Mac OS X.

Nemojte mi traćiti vreme...

... dobronamernim, ali lošim savetima. Ljudi koji tvrde da je biznis plan potreban da bi se krenulio u neki posao greše:

One survey of Inc. 500 CEOs found that 60 percent had not written business plans before launching their companies. Just 12 percent had done market research.

Leigh Buchanan, How Great Entrepreneurs Think.

Kada se spremao activeCollab 1.0, imali smo samo jedan plan: završimo v1.0 do kraja leta i počnimo da prodajemo, jer sumanjam da će ćemo imati novca za bilo kakvo dalje razvlačenje. Upalilo je samo zato što smo imali realan pritisak da do određenog datuma izbacimo nešto, bilo šta, ne zato što smo imali savršen biznis plan.

A kad si jednom na tržištu, onda više nema izgovora i pretpostavki - bugovi treba da budu ispravljeni, mailovi odgovoreni, dokumentacija napisana... Tek tad kreće zabavni deo.

Oglasi za posao i Twitter pretraga

Svaki put kada neko objavi activeCollab related posao na nekom od freelance portala meni u isto vreme bude i drago i popizdim:

  • Drago jer se tako nešto uopšte dešava. Ljude koriste sistem, igraju se sa njim, tumbaju ga i prekrajaju... Kada se uzme u obzir količina napisanog koda koja nikada nikada nije poterana od strane korisnika, propali projekti, sajtovi i aplikacije koji nikada nisu zaživeli itd, stvarno je lepo videti da nešto na čemu si ti radio koriste ljudi (sigurno desetine, a možda čak i stotine hiljada ljudi u slučaju activeCollaba).
  • Popizdim zato što mi kojekakvi retweet botovi i gluposti na dva, tri dana kompletno zagade Twitter pretragu. Sve što vidim su retweeti sa likovima ka kojekakvim agregatorima freelance tezgi i gluposti.

No dobro, u ovom slučaju #1 > #2 pa je to samo sitnica koja malo bode oči.

Twitter Search

Osveženje

Da se kratko javim. Prošlo je već dva meseca od prethodnog posta, pa da se ne brinete da mi se nešto opasno loše nije desilo na putovanju koje sam nedavno spominjao ;) Od tad se zbilo par stvari koje su mi okupirale manje više svu pažnju tokom tog vremenskog perioda. Ovo je tek pre neki dan finalizovano, ali se kotrljalo već par meseci - novi prostor za firmu. Postojeći prostor nam je već polako postao tesan, bar za način na koji ga mi koristimo (imamo veliku dnevnu sobu sa kuhinjom i trpezarijom koja otkida pola dostupnog prostora, a u njoj niko ne radi), pa smo gledali da se prebacimo u nešto komfornije.

Za razliku od dve kancelarije kroz koje je A51 rastao do sad, u ovom novom prostoru napokon imamo odrešene ruke da ga uređujemo kako hoćemo. Sreća, radost! Na slici dole je jedan od prvih nacrta, koji u suštini pokriva najgori slučaj i daje odgovor na "Koliko maksimalno ljudi može da radi u tom prostoru?" Finalni plan do koga smo došli je osetno drugačiji (definitivno nećemo trpati 9 ljudi u jednu prostoriju), ali o tome ću detaljnije pisati kasnije, kako radovi budu napredovali.

Kancelarija
Jedna od prvih, radnih verzija

Jedna od stvari koja je takođe zaživela posle dosta krčkanja je i activeCollab Timer, naša prva desktop aplikacija. U pitanju je program koji smo ponudili besplatno, kako bismo olakšali korisnicima praćenje vremena. Čak ga i sami koristimo već par nedelja i na osnovu dosadašnjeg iskustva topolo preporučujem: pratite kako trošite vreme, otvara oči.

activeCollab Timer
Windows + Mac

activeCollab 3 polako dobija svoju finalnu formu. Nova tema (i interfejs) se simbolično zove Evolution i stvarno je cela priča evolucija na osnovu svega onoga što smo u prethodne tri godine naučili, kako sa interfejs strane, tako i što se mogućnosti tiče. Sada već nismo u prilici da sebi dozvolimo loš i nestabilan release, tako da ova "evolucija" baš traje. No dobro, sve što valja zahteva vreme, a brzanjem bismo samo izbacili nešto osrednje.

activeCollab 3
Biće uskoro i screenshoti, bez brige

Dalje, putovanje koje sam pominjao, a o kome nisam hteo da detaljišem, da ga ne ureknem, je bila moja tronedeljna poseta Nepalu i Himalajima. Put je počeo kratkom posetom Istanbulu odakle sam dalje leteo za Kathmandu. Tri nedelje provedene u Nepalu su se sastojale od dvonedeljnog treka Sagarmatha nacionalnim parkom, sa jednim usponom na 6000+ metara vrh (Island Peak, 6189m), a ostatak vremena smo proveli u glavnom gradu, u obilascima, nabavci opreme, kupovini suvenira i svim ostalim sporednim aktivnostima.

Stvarno bi mi trebalo mnogo i vremena i prostora da opišem detalje celog put, za šta sada nemam vremena. Do tad, dve teaser fotografije:


Naš kamp, 5200m, pred uspon


Izlazak sunca na dan uspona, 6000m

Bile je tu još svašta nečeg drugog, ali ovo su neke od najznačnijih stvari koje su se desile u prethodna dva meseca. Detaljnije o svemu u budućim postovima.

Oglas za posao

Kako vreme odmiče, activeCollab raste i postaje sve popularniji. Koriste ga neke od najpoznatijih firmi i univerziteta na svetu, kao i čitav niz malih, kreativnih firmi i organizacija. Imamo niz ideja kako da se sam proizvod unapredi i razviju razni dodaci, tako da nam trebaju ljudi koji bi voleli da rade na ovom projektu. Ako ste dobar PHP programer ili na putu da postanete jedan, javite pa da sednem i popijemo kafu.

Tekst samog oglasa sa svim detaljima:

A51 is a small software development company from Novi Sad. Our focus is development of web based tools that help organizations get projects done by employing more communication and less management.

Our flagship product, activeCollab, is used across the globe by thousands of organizations, including some of the largest technology and media companies and well known universities.

PHP Programmer

Job Description:

  1. Work on integration of activeCollab with other applications and services on the market (popular CMS platforms, invoicing and accounting services etc).
  2. Develop and share resources that help developers integrate and extend activeCollab.
  3. Other projects may include development of widgets, mobile applications and more, based on your interests and skillset.
  4. Anything else that you feel that would make activeCollab a better product and an integral part of the online productivity ecosystem.

What we offer:

  1. Clean, quite, cozy environment where you can concentrate and get stuff done. We even offer home cooked lunch served in the office every day, so you don't nede to worry about that and waste time and money.
  2. Opportunity to learn new and develop existing skills.
  3. Best equipment money can buy. Tools should never limit your creativity.
  4. Type of energy only small companies can offer.
  5. Make the difference! activeCollab is one of the best known software products coming from Serbia.

Requirements:

  1. Simply put, you need to be a good programmer and natural problem solver.
  2. Must know technologies are PHP, MySQL, HTML, CSS and JavaScript. Experience with other platforms is a plus, but not required.
  3. Good written and spoken English. We offer tools and resources to improve your English, but good foundation is required.
  4. Candidates who are not able to work in office in Novi Sad Monday to Friday should not apply.
  5. Faculty degree is a plus, but not a requirement.

If you are interested and see a fit here, please fill out the form that is available on this page:

Thank you for your time!

activeCollab video ture

Pre desetak dana su postavljene video ture koje na jednostavan način objašnjavaju najznačajnije activeCollab mogućnosti. U pitanju je devet video klipova, gde svaki bliže objašnjava po jednu sekciju već postojeće tekstualne ture:

ac-tour.jpg

Ture su trebale da budu spremljene mnogo mnogo ranije, ali nekako su se uvek neke druge stvari činile prečim tako da nam je trebalo više od dve godine dok se napokon nisu pojavile na sajtu. Prvo je bio problem to što se activeCollab 1.0 jako mnogo menjao, pa onda problem sa scenarijima i realizacijom, pa razna odlaganja jer su bitnije stvari trebale da budu rešavane i tako do u nedogled.

No, pre koji mesec smo se napokon dogovorili da ovaj projekat ima visok prioritet i da ga treba rešavati što pre. Celu priču su izgurali Goran, Ivana, Waldo i Waldov prijatelj koji je radio voiceover, a kome ni ime ne znam. Evo ih neke beleške, ideje i zapažanja sada kada je cela stvar ugledala svetlost dana:

  1. U osnovi, kod ovakvih tura postoje dve krajnosti: čista marketinška priča i čista demonstracija proizvoda. Naše ture više vuku na merktinšku priču, ali nju prate i kratki prikazi proizvoda i nekih operacija. Bolje je objasniti kako će to proizvod potencijalnom kupcu olakšati život (benefits), umesto prostog nabrajanja mogućnosti, a u isto vreme nam olakšava održavanje pošto ne zahteva toliko česte izmene kao što bi čista demonstracija zahtevala.
  2. Jedna od stvari na kojoj sam lično insistirao od samog početka i što je dugo kočilo projekat je glas i priča koja prati video. Na netu postoji dosta tura koje prati samo tekst, bez priče, i ne sumnjam da su bolje nego da uopšte nema tura, ali... Moj stav od samog početka je bio da priča koja prati video, a koju čita osoba kojoj je engleski prvi jezik definitivno celu stvar diže na nivo ispod koga se ne bih spuštao. I dalje stojim iza toga...
  3. Zbog voiceovera, a i zbog toga što se sami nismo mogli posvetiti dizajniranju i montaži tura, odlučili smo se da unajmimo nekog da nam odradi posao. Od par ponuda koje smo dobili na Elance, odabrali smo Walda jer je imao par projekata koji su bili dosta slični stilu koji smo želeli da postignemo, kao i višegodišnje iskustvo u TV industriji.
  4. Waldo nam je u potpunosti rešio prvi, Intro video. Taj prvi, najduži i najkompleksniji deo je odredio stil ostalih tura, dizajn, piktograme... Sa ovim materijom, i uz Waldovu pomoć, Ivana i Goran su završili ostalih 8 videa. Ovde je Goranovo iskustvo sa montažom (neko vreme je pro-bono radio kao montažer na jednoj studentskoj TV emisiji za vreme faksa) jako dobro došlo i uštedelo jedan dobar polovan auto koliko bi inače bio honorar da smo morali opet da unajmljujemo animatora i montažera.
  5. Većina sajtova nema velikih problema sa protokom. Ovo se može bitno promeniti kada se na sajt doda dosta video materijala koji ljudi često gledaju, kao u našem slučaju. Za desetak dana, same ture su naprevile oko 100GB protoka, a nismo imali nikakve skokove u saobraćaju. Iz tog razloga, odluka je pala da se video materijal drži na Amazon S3 servisu, umesto da ga sami hostamo.
  6. Ne raspolažemo sa podacima da bismo mogli da donosimo bilo kakve zaključke o tome koliko ovakve ture utiču na prodaju, ali zdrav razum i stomak kažu da bi ovo trebalo da pomogne. Korisnici bolje razumeju o čemu se radi, a vi u isto vreme imate bolji medijum da prenesete poruku (audio + video šiju statičan tekst i slike). Nadam se da ćemo kroz pola godine, godinu raspolagati nekim konkretnijim podacima.

Ovi komentari su čisto posmatrački pošto sam imao minimum učešća u projektu - dok su rukavi bili zasukani i dok se radilo punom parom, ja sam putovao Azijom. Za neke konkretnije komentare, možete pogledati članak koji je Ivana pripremila i objavila na blogu firme. Same klipove možete pogledati u Tour sekciji activeCollab sajta.

PS: Svaka čast ekipa. Odoh ja sad opet negde preko sveta (Mongolija, Tibet i Nepal se čine kao dobra ideja). Možda se završi drugi proizvod do momenta kada se vratim :)

Povrat novca, iz iskustva

Kada je objavljena prva komercijalna verzija activeCollaba u oktobru 2007. godine, nismo imali jasan stav prema vraćanju novca. Do tada nam to nije bila bitna stavka pa nismo previše ni razmišljali o tome. Međutim, čim počnete da prodajete, vraćanje novca usled nezadovoljstva proizvodom (ili iz drugih razloga) postaje realnost sa kojom treba da živite. I izgradite neki stav o njoj...

  1. Lepo prihvatite da će biti ljudi kojima vaš proizvod neće odgovarati i da će oni želeti svoj novac nazad. Nekada se proizvod ne pokaže dobro u praksi, nekada u refund periodu nađu bolje rešenje za svoje potrebe, nekada ne uspeju da nađu IT-jevca da podesi sistem itd. Razloga stvarno može biti dosta.
  2. Refund treba gledati kao trošak poslovanja pošto je u pitanju "safety net" koji kupci mogu iskoristiti ukoliko im se proizvod ne svidi. Najgore što možete imati je da kupac "tresne o beton" i završi sa nečim što mu ne treba ili ne odgovara, a dao je dosta novca. U tom slučaju budite sigurni da vas neće mnogo hvaliti svojim prijateljima.
  3. Kada je refund politika u pitanju, tu nema mesta egu. Niko ne traži novac nazad zato što mu se VI ne sviđate ili zato što hoće VAS LIČNO da povredi, već zato što mu proizvod i usluge koje ga platio ne odgovaraju.
  4. Najčešći periodi povrata novca koji se nude kod softvera su 30, 45 i 90 dana. Mi nudimo garanciju od 30 dana, ali vratimo novac i do 90 dana nakon kupovine ako ljudi traže.
  5. Ignorišite moguće zloupotrebe vaše refund politike. Jedna od bitnijih stvari koju sam naučio u zadnje vreme je da poštene ljude treba pustiti da budu pošteni, a ne tretirati ih kao kriminalce. 20 ljudi koji su imali dobro iskustvo sa povratom novca su mnogo vredniji asset od sprečavanja dvojice likova da zloupotrebe refund sistem.
  6. Procenat slučajeva kada vraćate novac je osetno veći za mlad proizvod, nego za zreo. Ovo treba znati kako vas ne bi uhvatila panika u startu. Najbitnije je unapređivati proizvod. Kasnije ćete imati bolji, konkuretniji i stabilniji proizvod, imati manje refunda i zarađivati više. Da ponovim - samo unapređujte proizvod!
  7. Kada smo već kod brojeva, procenat slučajeva kada se vaća novac je mali - do 5% za mlade proizvode (activeCollab 1.0.x je imao osetno manji refund ratio, ali do 5% mi zvuči OK za neke agresivnije varijante) i do 1% za zrele i stabilne proizvode (odavno smo ispod, ali radimo na tome da i to smanjimo). % raste kako počnete da koristite agresivan marketing, posebno ako pustite agresivnu affiliate ekipu u igru.
  8. No Questions Asked refund politika podrazumeva da prvo procesirate refund, pa onda postavljate pitanja. Ovakvo ponašanje pokazuje da vaša kompanija zauzima "Mi smo srećni samo kada je kupac srećan" stav (user centric umesto company centric), ali može biti problem zato što uskraćujete ljudima šansu da se predomisle (dešava se). Mi imamo tu politiku - prvo procesiramo refund, pa onda postavljamo pitanja.
  9. Refund je prilika da saznate šta ne valja u vašem proizvodu. Prosto pitanje: "Nudimo 'No Questions Asked' refund, ali stvarno bi nam značilo ako biste odvojili minut ili dva da nam kažete šta nije bilo u redu sa proizvodom." Dobićete odgovor u 3/4 slučajeva, a taj feedback stvarno znači mnogo na duge staze. Saslušaj i popravi!
  10. Ako ne prodajete fizičku robu, već "nule i jedinice", skoro da ne postoji razlog da ne nudite povrat novca ukoliko korisniku proizvod ne radi posao. Na novac treba gledati kao na formu vrednosti, i ako kupac nije dobio vrednost, ne treba da mu uzete novac. Simple as that.

Na osnovu ove liste stavki ste verovatno zaključili da sam veliki pobornik otvorene, iskrene i jednostavne refund politike i da smatram da je dobra za poslovanje. Uvek je dobro ukloniti prepreke, kako mentalne tako i fizičke, između kupca i proizvoda. Jedna od tih prepreka je rizik da čovek da novac za nešto što mu ne treba, a refund je jednostavan način da se ta prepreka ukloni.

Podrška novih verzija - Slatke muke

Software as a Service (SaaS) proizvodi uglavnom nemaju problem sa skokovima u broju zahteva za podrškom kada izađe nova velika verzija, ali to je klasika za proizvode koje korisnici instaliraju kod sebe (na desktop ili server). U tom momentu svi skidaju i instaliraju novu verziju, upgraduju svoje baze i šta sve ne tako da je sasvim normalno da pritisak na podršku osetno poraste.

To samo po sebi i nije naka tajna, ali je lepo potvrditi celu priču podacima:

requests-over-time.jpg

Ovo je broj zahteva na activeCollab help desk (ne i na forum) u periodu od Nove Godine do 31. maja. Na grafu se tačno vide vikendi, radni dani, ali i momenti kada su lansirane značajnije verzije - pre svega prva activeCollab 2 beta, a onda i stabilna "dvojka" (activeCollab 2.1).

Užurban help desk i forum su slatke muke. Iako zna biti stvarno iscrpljujuće, uvek sam pre za to i lansiranje novih verzija, nego za stvari do kojih nikome nije stalo i/ili koje stagniraju u svojoj "stabilnosti".

Šta smo naučili iz bete

Pre nešto manje od dve nedelje objavili smo activeCollab 2. U pitanju je verzija na kojoj se dosta drugo radilo, sa nizom značajnih unapređenja.

Pored niza sitnih i krupnih unapređenja, ima i stvari (mogućnost sistema da prima emailove npr) koje iz korena menjaju kako ljudi koriste sistem. Takva verzija ne može da prođe bez bete. Manje, bug fix verzije sa sitnijim unapređenjima mogu da idu (samo paziš šta radiš i kontrolišeš se da se ne zaneseš previše sa dodavanjem novih stvari), ali nešto sa dosta izmena ne ide.

Prošle godine, u slično vreme je išla activeCollab 1.1 beta i to je bio prvi put da smo imali testiranje tog tipa i te veličine. Beta je bila javna tako da su svi koji su imali licence mogli da skinu novu verziju i testiraju je. To se pokazalo kao dobar pristup tako da smo na isti način išli i sa betom za verziju 2. Ono što je bila greška je to što smo za 1.1 bete dodavali nove mogućnosti.

Kada se tokom bete dodaju nove mogućnosti, svi testovi padaju u vodu - na ovaj način u sistemu se uvek nalaze stvari koje su nove i nestabilne. Naučeni greškom, activeCollab 2 beta je lansirana tek kada smo imali sve mogućnosti koje smo želeli da predstavimo. Svrha bete nije da timu da još vremena da nabaca još koju novu mogućnost, već da mu omogući da ispegla ono što ima i postara se da je sistem stabilan.

Pristup da se mogućnosti kompletiraju pre bete, pa zatim peglaju bez dodavanja novih, ima još jednu dobru stranu: tačno se zna kada je verzija gotova - kada se stabilizuje. Ukoliko se nove mogućnosti dodaju tokom bete, konačni set mogućnosti je uvek otvoren pa se jako lako zaneti, dodati previše novih stvari i celo "testiranje" produžiti za još koji mesec. Na kraju stvarno završite sa više mogućnosti, ali su one nestabilne i prava su noćna mora za podržavanje.

Zato sa betama treba pažljivo:

  1. Napravite sve mogućnosti koje želite da finalna verzija ima i onda ih peglajte, bez dodavanja novih mogućnosti.
  2. Pažljivo odabrate datum kada želite da vidite finalnu verziju, ali ga nipošto nemojte objaviti. Ako to uradite, velika je verovatnoća da ćete požuriti sa betom usled pritiska od strane korisnika, a samim tim i izbaciti manje stabilan proizvod. Ovo se uvek vrati kao bumerang u vidu značajno više posla oko podrške.
  3. Što se podrške tiče, tretirajte betu kao i bilo koju drugu stabilnu verziju. Izvlačenje na fazon: "Beta je, i treba da ima greške. Strpi se do sledeće verzije" će za rezultat imati da će se ljudi opeći i neće želeti sledeći put da pomognu.
  4. Opustite se i uživajte u procesu. Pritisak uvek za rezultat ima greške i uglavnom je kontra-produktivan. Umesto da šizite i gurate oštre rokove, opustite se i polako sa korisnicima privedite betu kraju. Na kraju ćete izbaciti stabilan proizvod bez da osedite u procesu.

U poređenju sa prethodnom beta koja je bila dosta napeta, verzija 2 se desila polako i na kraju smo stvarno zavriši sa znatno boljim proizvodom za koji nije trebalo toliko podrške kada je početna navala prošla. Sada se već radi na narednoj verziji pa se opet nadamo skoroj beti.

PS: Tekst sa istom temom i savetima, ali malo drugačijim sadržajem je prekjuče objavljen na A51 blogu.

Svašta nešto novo

U zadnje vreme sam se ulenjio sa pisanjem ponajviše zbog priličnog haosa koji je nova verzija activeCollaba unela u moj raspored (tačnije, odsustvo rasporeda). Nakon dva i po meseca bete, 29. aprila je izbačena stabilna "dvojka":

activecollab-2-pages.jpg

Fino je objaviti nešto na čemu je dugo rađeno i videti ljude kako to polako počinju da koriste, preporučuju prijateljima, šalju kritike i pohvale i sve što ide uz to. Još je lepše kada se izbace 3 takva projekta:

  1. Nova verzija proizvoda koja donosi niz unapređenja poput proširene email podrške (primanje i slanje), globalnih dokumenata, popeglanijeg interfejsa i mnogo čega drugog;
  2. Osvežen sajt koji je tako pravljen da omogući ljudima da brže dođu do informacija koje im trebaju;
  3. Nova demo platforma čiji je zadatak da omogući lako kreiranje i administraciju mase demoa, izvoz podataka i slične operacije koje smo donedavno uglavnom ručno radili.

Što se samog procesa predstavljanja novih verzija tiče, čini mi se da postajemo sve bolji kako vreme odmiče. Novi activeCollab je značajno upeglaniji i stabilniji, upgrade skripta je dobro testirana, a već imamo i neku rutinu kod podrške lansiranja nove verzije. Daleko smo od besprekornog lansiranja, ali kada se setim problema koje smo ranije imali, sve što nam se sada dešava je "šetnja parkom".

Novo u celoj priči je Twitter. Prijatno sam iznenađen koliko je pozitivan uticaj imao na celo objavljivanje. U prvih par sati, zahvaljujući re-tweetima prijatelja, vest o lansiranju je došla do hiljada ljudi. Tu su bili i prvi komentari, pohvale i prijave grešaka.

Hvala Nebojši što nas je pre par meseci ubedio da reaktiviramo @activecollab nalog. Nalog sam otvorio davno kako bih osigurao da nam neko ne uzme ime, ali ga nismo koristili do pre koju nedelju.

PS: Nemojte puštati newsletter pred praznike - zatrpaće vas automatske "Out of the Office" poruke :)

Da li su sva "pravila" bitna?

I juče i danas se na pomalo čudan način povukle pitanje pravila koja aplikacija nameće korisniku.

developers-guide.jpg

Konkretno, juče sam veći deo dana proveo radeći na dokumentaciji. Svaki članak se sastoji od naslova i sadržaja. U takvim situacijama aplikacije uglavnom zahtevaju od korisnika da unesu obe vrednosti pre nego što prihvate izmene. To je nametnuto pravilo koje korisnik mora da poštuje kako bi mogao da koristi sistem.

Naša aplikacija nije toliko stroga pa zahteva samo naslov što mi se, kao korisniku, pokazalo jako zgodnim. Umesto da završavam stranicu po stranicu, prvo sam kreirao niz stranica na kojima treba da radim prostim unošenjem naslova pa tek onda počeo da unosim sadržaj. Na taj način sam imao celu strukturu pred sobom i tačno znao šta treba da radim i kako napredujem. Da je aplikacija od mene zahtevala i unos sadržaja, pitanje je da li bih tako radio.

Jutros je osvanuo komentar na jednu temu gde se korisnici pitaju zašto jedan element u activeCollabu zahteva minimalno 3 slova dugačak naslov. Razmišljajući o tome šta i kako da odgovorim čoveku, zapitao sam se li su uošte ta pravila i bitna? Zašto sistem jednostavno ne bi puštao korisnika da ne unese vrednost?

Na primer, ako korisnik ubaci zadatak bez opisa, sistem može da stavi opis na neku podrazumevanu vrednost. Kada korisnik naknadno vidi unos, može da upotpuni podatke ako želi ili ostavi tako kako je ako mu to nije bitno...

Prijavi problema kao na slici ništa ne nedostaje, iako je kratak opis izostavljen. Sve što treba je tu:

no-summary.jpg

Kasnije, kada se detaljno pozabavi problemom, Goran može uzeti i izmeniti "[NO SUMMARY]" u "Nakon instalacije modula, keš se ne osveži što može praviti probleme pri učitavanju stilova" ili šta god da nađe kao stvaran uzrok problema.

Da sumiram, pitanje je da li su sva pravila koja ubacujemo u svoje aplikacije dobra? Da li bismo olakšali ili otežali korisniku time što bismo umesto forsiranog unosa omogućili da ostavi polje praznim? Koja su mesta u aplikaciji gde po inerciji dodajemo pravila koja nužno i ne pomažu i bez kojih se može?

Diskusije o budućnim mogućnostima

Jedno od pravila kojim se vodimo kada komuniciramo sa kupcima, kako potencijalnim, tako i onim koji su već kupili licencu, je da ne pričamo o mogućnostima koje spremamo za buduće verzije activeCollaba. Ovo pravilo može ponekad biti nezgodno i dovesti do nategnutih razgovora:

  1. Ponekad kupac zahteva informacije o tome da li će određena stvar biti dodata kako bi znao da li da sam razvija ili da se strpi do verzije kada će ta mogućnost biti dodata.
  2. Desi se da kupac zauzme malo agresivniji stav pozivajući se na to da ima pravo da zna kuda će se kretati alat koji je platio i da bez tih informacija ne može ništa da planira.
  3. Ljudi generalno vole da znaju šta će se desiti u budućnosti i kuda ceo projekat ide. Mislim da su za ovo pomalo uvrnuto osećanje pre svega zaslužna radoznalost, želja da alat koji koriste bude bolji i želja da se pomogne.

Bez obzira koliko ovakvih situacija i diskusija rešili, svaki sličan konflikt je težak na svoj način. Za razliku od situacije kada je kupac frustriran zato što nešto ne radi gde vi možete da rešite problem i time pokrijete slučaj, ovde vi ne možete da ponudite rešenje ako želite da ostanete dosledni pravilu. Sve što možete je da na ovaj ili onaj način gurate svoje (diplomatski, naravno - drčnim stavom ćete samo napraviti još veću gužvu).

silence.jpg

Problemi koje prate to pravilo su jedno, ali ono što je znatno bitnije su razlozi za njegovo uvođenje:

  1. Ljudi vole da pričaju. Ima nešto primamljivo u apstraktnim diskusijama pa su ljudi u stanju da sanjaju i muljaju priču do besvesti umesto da sednu i rade.
  2. Nije isto pričati i cveće brati. Bez obzira koliko vremena proveli diskutujući o nečemu, tek kada se latite editora i krenete to da pravite videćete koji su stvarno izazovi pred vama.
  3. Neki od tih izazova mogu kompletno da vam promeni pogled na problem, čak toliko da odlučite da isti nije vredan vaše pažnje i da ceo poduhvat dropujete. Ajd onda izađi kupcima pred oči...
  4. Ljudi će uglavnom diskusiju shvatiti kao obećanje i očekivati da isporučite rešenje o kome se pričalo. Poseban belaj je da neko kupi vaš proizvod na osnovu takve diskusije, a vi odlučite da ne želite da dodate mogućnost ili se vaša implementacija razlikuje od onoga što je kupac imao u glavi čitajući diskusiju.
  5. Treba uvek da imate otvorene opcije. Nema ništa gore od pritiska ili obaveze da dodate nešto što ne smatrate dobrim samo zbog olako datog obećanja. Plus time štetite i svom proizvodu jer dodajete nešto što ne smatrate da bi trebao da bude deo istog.
  6. "Underpromise, overdeliver" mantra je jedna od najboljih koju možete da usvojite u bilo kom poslu. Preteranom diskusijom i sanjanjem o budućim mogućnostima zajedno sa svojim mušterijama nikada nećete moći da se ponašate u skladu sa njom.
  7. Detaljna diskusija o određenoj mogućnosti može da vam poremeti fokus. U vašoj glavi su najznačajniji oni problemima kojima se mozak u tom trenutku bavi iako pored njih možda postoji niz drugih dosta značajnijih problema čijim rešavanjem ćete postići znatno bolje rezultate na duže staze.

Slične diskusije imaju i svoje prednosti, pre svega to da se istim može doći do nekih zanimljivih ideja. Problem je što te ideje same po sebi nisu dovoljan razlog da biste trošili vreme i kupili negativne poene kod kupaca ukoliko se predomislite.

Ovaj tekst se već odužio tako da ću da prekinem ovde. Ovih dana ide i dodatak gde ću opisati jednostavan pristupu koji koristimo i koji se u našem konkretnom slučaju pokazao kao dobar.