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.

2015. godina kroz praćeno vreme

Sada će biti dve godine da koristim RescueTime da pratim kako trošim vreme. Kada sam počinjao bio sam neprijatno iznenađen koliko puno vremena sam provodio za računarom, a koliko mali peocenat bih mogao okarakterisati kao vreme koje smatram provedenim u efektivnom radu (komunikaciju ne računam, samo produkciju - programiranje, administracija, automatizacija, pisanje tehničke dokumentacije itd).

Svakodnevni cilj

RescueTime omogućava da se podesi cilj - vreme provedeno u određenoj aktivnosti za određeni vremenski period. Ovu mogućnost možete koristiti za praćenje produktivnih stvari (cilj mi je da provedem X sati radeći Y svaki dan) ili da neproduktivne stvari da držite pod kontrolom (ne želim da trošim više od 30 minuta na Twitteru). Verovatno ima i niz drugih načina na koji se ciljevi mogu koristiti, ali ova dva su mi najočiglednija. 

Negde tokom 2013. sam podesio prvi takav cilj: bar 2h efektivno u Software Development > Editing and IDE-s kategoriji, svaki dan, uključujući vikende. Evo ga rezultat:

2.82 sata efektive dnevno. Taj rezultat smatram uspehom i napretkom pošto sam se prošle godine jedva "izvukao" (sa nekih 2.05 sati dnevno ako me sećanje dobro služi).

Vreme po aplikacijama

Kao i što sam i mislio - najviše vremena sam proveo u editorima koda i terminalu. Takođe sam dosta vremena proveo i u komunikaciji, pre svega poslovnoj (privatna uglavnom ostaje vezana za telefon). Primarni alati su Active Collab, Outlook i Slack. 

Vreme po kategorijama

Ovaj graf kačim pre svega zato što pokazuje produktivno vs neproduktivno vreme. Što se produktivnosti tiče, nije cilj provoditi puno vremena za računarom, već da se ono što je provedeno što više "plavi".

I dalje…

Plan za 2016. je jednostavan: podići produktivno vreme provedeno programirajući ili administrirajući Active Collab sisteme na 3 sata efektive dnevno. Ako nastavim da radim kao što sam radio ove godine, uz malo više obraćanje pažnje na vreme potrošeno na društvenim mrežama, mislim da neću imati problema sa ostvarenjem tog cilja.

Active Collab blog se vraća kući

Ovaj post je počeo da nastaje pre par meseci, donošenjem odluke da napustimo Medium kao primarne platforme na kojoj se vrti Active Collab blog. Svoj period zrenja je doživeo tokom jedne "neko kuvaju kafu, a ekipa okolo filozofira" rasprave u kuhinji posle ručka. Potegao sam Medium, pa sam po prvi put probao da u reči pretočim svoju ne-ljubav ka velikom M. Prvi javan bunt je izražen u ovim tvitu:

Danas je post odrastao i spreman je da napusti gnezdo u kome je tako udobno rastao od svog začeća. Bar jedan deo, pošto postoje dve strane priče:

  1. Naš stav, koji imamo kao firma koja je prošle godine počela ozbiljnije da ulaže u sadržaj kao jednu od marketinških strategija,
  2. Moj lični stav, kao nekog ko piskara tu i tamo za web već 12 godina i kome je blog bio osnovni alat za eksperimentisanje i učenje kada sam tek počinjao da se bavim onim čime se danas bavim.

Danas ću pokriti #1, zato što mogu da navedem konkretne i opipljive argumente. Stavku #2 ostavljam za neki drugi put. Em je fiozofiranje, em ima nostalgične momente (prvi blog post na ličnom blogu sam napisao 2004. godine, a blog mašinu u pozadini sam sam napravio), em bi se ovaj članak previše odužio.

Active Collab @ Medium

Active Collab @ Medium

 

Kao što već rekoh, Active Collab blog se vraća na naš sajt i taj projekat je već ihaj u toku. Ima više razloga zašto smo se na to odlučili i svi su čisto poslovni. Ovo su stvari koje Medium ne nudi jednoj firmi:

Praćenje vrha sales funnel-a

Mi naš prodajni ciklus pratimo kao levak, a vrh levka delimo na izvore saobraćaja. Sadržaj objavljujemo kako bismo privukli potencijalne korisnike i kupce i blog tretiramo kao jedan bitan izvor saobraćaja.

Neko bi rekao da je to prilično ograničen pogled na sadržaj, te da sadržaj treba da nastaje organski, iz potrebe da se nešto razmisli i kaže, a ne kao "izvor saobraćaja". Možda je tako, ali pošto nam nije cilj da kroz blog proizvoda dosežemo mislilačke i spisateljske visine, onda je jedini pravi pogled na isti onaj kod koga jasno i nedvosmisleno prihvatamo njegovu svhu i prirodu. Pričamo o proizvodu, o kompaniji, o stvarima koje nas profesionalno zanimaju, sa krajnjim ciljem da nekoga uvučemo u ovo naše malo parče svemira, da proba ono što pravimo, da mu to koristi, te da nam za to na kraju dana i plati.

Ukoliko je blog na Medijumu mi ne možemo da pratimo korisnike koji su se prvi put susreli sa našom pričom kroz taj kanal, a samom tim ne možemo da pratimo ROI blog aktivnosti. Kada ne znamo ROI, možemo samo da pretpostavimo koliko su nam aktivnosti isplative i da li možemo da se upuštamo u nove avanture ili ne.

Gradnja autoriteta

Blog treba da gradi brend i autoritet firme, ne A Medium korporacije. Kao takav treba da bude sastavni deo activecollab.com web sajta. Kada sadržaj nije propratna aktivnost firme, već nešto čime se ista aktivno bavi, onda sadržaj treba da gradi njen, a ne tuđi domain authority. 

Intetaktivan i razvrstan sadržaj

Kada je blog kod nas, sadržaj ne mora biti samo u formi koju Medium podržava. Može biti drugačije presložen, uredno sortiran, interaktivan itd. Kakve je sve ideje ekipa imala, a nije mogla da realizuje stvarno više ne mogu da se setim, ali je činjenica da nisu sprovedene u delo zato što za to nisu postojali tehnički uslovi. Imamo par zanimljivih ideja sa kojima bi se valjalo poigrati čim se prebacimo, pa ću ovu tačku i slikovitije moći potkrepiti u budućnosti.

Call to Action

Medijumov call to action je jednostavan - čitaj još sadržaja na Medijumu. Teško je rečima opisati koliko je meni malo stalo do toga. Call to action koji mi želimo da bude ugrađen u stranice bloga rezultuje nečim dobrim za našu firmu, ne za Medium. Govorim o stvarima tipa: kreiranje probnog Active Collab naloga, pretplata na naš newsletter, download e-booka i tako dalje. Može se ugraditi u Medium članak slika sa linkom ili kroz tekst provući call to action, ali se on takmiči sa njihovim koji je ugrađen u samu platformu i ima male šansa da ga nadjača:

Call to Action je: Čitaj više na Medijumu.

Call to Action je: Čitaj više na Medijumu.

Medium blog nije deo sajta

Uvek dolazi do "promene univerzuma" kada korisnik klikne na Blog link i sa sajta bude prebačen na drugu platformu. Tu "promenu univerzuma" smo primećivali sa Help sekcijom Active Collab sajta, koja je odvojena i ima svoju temu. Ulaskom u tu sekciju dolazi do prekida toka jer je promena prilična, a povratak na sajt ne nužno očiegledan. Nakon što je uočen taj problem tokom testiranja, tim je seo i dotezao i sajta i Help sekcije da ublaži taj efekat.

Blog hostovan ma Medijumu proizvodi isti efekat, s jednom bitno razlikom: ne postoji način da se isti ublaži jer nemate kontrolu na osnovnom temom Medium bloga. Morate da prihvatite činjenicu da je posetilac otišao i da postoji prilična verovatnoća da se neće ni vraćati (jer mu nije ponuđeno da to lako uradi ili zato što ga je Medijum jednostavno progutao drugim člancima, linkovima koji vode dalje itd).

Zaključak

U osnovi, "povratak kući" se svodi na vraćanja kontrole tamo gde joj je mesto - u ruke firme koja je autor sadržaja. Smatram da je to zrela i odmerena poslovna odluka koja nema puno veze sa trendovima i koja nije iskrivljena mojim ličnim stavovima ka platformi koju Medium pruža (a o kojima ću piskarati uskoro). 

Naš je plan da nastavimo da koristimo Medium u poslovne svrhe, ali kao društvenu mrežu, a ne kao primarnu i osnovnu platformu za plasiranje sadržaja. Umesto da tamo objavljujemo sve naše članke, objavljivaćemo samo neke u potpunosti ili kao sažetke, u skladu sa time kakav efekat želimo da dobijemo od mreže, na isti način kao što koristimo Twitter i Facebook.

Notes.app je promenio način na koji radim

Danas je prošlo tačno mesec dana kako koristim (sad već i ne toliko) novi Notes.app kao beležnicu. Ranije sam imao manje ili više uspešne pokušaje da beležim to do liste, draftove blog postova itd: Evernote nekada davno (čak sam imao i pretplatu), Moleskine blokče za ideje i liste, DIY štampane daily tasks liste, posebni tagovi za beleške unutar dnevnika (Day One) itd. Ni jedan od tih pokušaja se nije primio na duže staze. 

Mogu nadugačko da tupim zašto se nisu primile ili da ukratko opišem jednu stvar koja se primila - vođenje dnevnika. Bolje to drugo…

day-one-stats.png

Razlog zašto mislim da se to desilo je zato što je Day One sveprisutan (na telefonu i na računaru), izuzetno jednostavan za korišćenje i omogućava praćenje progresa (na kalendaru se vide dani za koje su izostali unosi). Sam Day One nije dobar za vođenje beleški i listi zato što nije pravljen za to (doh!). Tagovi nisu folderi, nema podršku za to do liste unutar teksta, više slika i kompletno je fokusiran na timeline. 

Kada sam na leto video predstavljanje nove Notes aplikacije, video sam stvari koje volim kod Day One: jednostavnost, sveprisutnost i feature set koji je dovoljan da bude koristan, ali ne i opterećujuć (Evernote npr pati od viška mogućnosti po meni), ali skroz okrenut vođenju beleški. 

Sistem

Nisam počeo da koristim Notes sa određenim sistemom na umu, već su stvari lagano sedale na svoje mesto. Ne sumnjam da će se i dalje menjati, ali evo kako mi sada izgledaju folderi:

Notes - Pošto ovaj folder ne može da se preimenuje ili obriše, u njega trpam stvari kojima ne mogu da nađem mesto u ostalom folderima. Nema toga puno, ali eto - skrasilo se tu.

To do - Većinu beleški u ovom folderu čine stranice sa listama svakodnevnih zadataka. Naslov je datum u GGGG/MM/DD formatu, a sami zadaci su složeni kao najobičnija lista sa štiklicama. Ukoliko neki zadatak nisam stigao da rešim tog dana, već moram da ga odložim za sutra, samo ga prenesem u novi dan. 

Pored dnevnih zadataka, ovde su i stranice sa listama i beleškama za sastanke koje imam sa timovima i kolegama. Ukoliko mi nešto padne na pamet da treba da popričam sa nekim, ja zapišem umesto da se nadam da ću se toga setiti kada se sastanemo.

Blog - Različite ideje i manje ili više razrađeni tekstovi za ovaj i Active Collab blog. Ovaj tekst je danima čamio i sazrevao u ovom folderu (po datumu screenshota dole, bar od 4. januara, možda i duže).

Projekat XYZ - Niz beleški vezanih za stvari koji nisu svakodnevno aktuelne, tipa Vikendica, Zimovanje i slično. Pošto su ove liste retko aktuelne, vrlo brzo bi potonule unutar To Do foldera, pa zato imaju svoje foldere. Bude tu svašta - od listi stvari koje treba poneti na planinu do šema koji pokaziju princip rada toplotnih pumpi tipa vazduh - voda.

Naglašavanje

Retko imam potrebe za time, ali kada treba vizuelno da istaknem belešku ili deo beleške, koristi emoji (⌃+⌘+Space otvara insert emoji popup) ili bojim tekst (⌘+T otvara font dijalog). Lista beleški levo ignoriše boju teksta (tako da crveni naslov u belešci neće biti crven i u listi), ali zato uredno prikazuje emoji karakter. Par eksplozijica 💥 ili crvenih znakova uzvika ❗️ su obično dovoljno da privuku pažnju.

Nedostaci

Stvari koje nedostaju i koje bih želeo da vidim:

  1. Mogućnost podešavanja fonta pošto je font u Mac verziji presitan. Cmd++ odradi posao, ali postaje zamorno da to radim za svaki note,
  2. Mogućnost da se odredi sortiranje po folderu. Default (i jedino) podešavanje je da su beleške koje su najsvežije izmenjene na vrhu. To mi radi posao u nekim slučajevima, ali postoji par foldera gde bih želeo da su beleške sortiranje po imenu ili da mogu da zakačim neke od beleški na vrh liste. 

Obično Apple ostavi ove stvari kao podesive za napredne korisnike kojima nije problem da se igraju sa defaults komandom. DefaultNoteFont stvarno postoji, ali je u formatu koji ja ne umem da izmenim u ovom momentu (nisam Mac OS developer). Opcija za sortiranje ne postoji. Nadam se da će sledeća verzija Notes aplikacije pokriti ove manjkavosti ili ih bar učiniti lako izmenjivim kroz defaults.

Zaključak

Možda na papiru Notes aplikacija deluje "tanko" zato što nema napredne mogućnosti kao neke od drugih aplikacija, ali mi baš dosta pomaže. Napokon imam sistem kako za trajne beleške (dnevnik) tako i za tekuće stvari (Notes).

Godina 2015. kroz knjige

Jedan od tagova u dnevniku koji vodim je books. Lepota imanja dnevnika u digitalnom obliku sa tagovanim unosima je što na jednom mestu mogu da vidim beleške o knjigama koje sam čitao, kao i neki okvirni utisci koje sam beležio dok sam ih čitao.

Evo je kratka šetnja kroz 2015, gledana kroz knjige koje sa čitao:

Godinu sam počeo završetkom Hari Poter serijala. Njega sam lagano krunio tokom druge polovine 2014, a “Hari Poter i relikvije smrti“ sam zaklopio 7. januara. U mislima se često vratim Harijevom svetu, posebno onom delu koji su isprele prve tri knjige. 

harrypotterbookreview_1.jpg

Sledeća na redu je bila “Hooked”. Pomalo razočarano moram da priznam da se nisam “zakačio” - čitao sam svega par dana i ohladio se, pa je na kraju nisam ni završio. Jedna od onih knjiga koje su suštinski mogle da se svedu na lep blog post sa par grafikona, ali su iz komercijalnih razloga pretočene u knjige. Autor se garant razbija od posla prodajući svoje consulting usluge. Blago njemu.

Retko odustajem od knjige. To se desi uglavnom kada skontam da predugo nisam uzeo knjige koje me zanima zato što još uvek nisam završio onu koja me ne zanima. Tako je bilo i sa “Hooked”. Tek mesec, dva kasnije sam uzeo nešto novo da čitam, a za reset sam uzeo pitak klasik: Asimovu “Bogovi lično”. Nju sam vrlo brzo završio. Em je kratka, em volim Asimova.

Negde u to doba mi je stigla nova tura knjiga sa Amazona, a među njima i “Becoming Steve Jobs”.

U dnevnik sam zabeležio da je bolja od Isaksonove biografije, ali da ni ona nije u potpunosti ispunila moja očekivanja. Razlog za to je činjenica da moja očekivanja nisu na mestu. Ja u suštini želim da čujem više anegdota i priča o dinamici timova unutar firme kao što je Apple, ali je to kompletno pogrešno očekivanje od jedne biografije. Info koji me zanima se lagano odmotava kako ljudi koji su radili na različitim proizvodima unutar Apple-a odlaze iz firme i počinju da pričaju. Npr, Debug podcast ima par sjajnih epizoda gde Nitin Ganatra i Don Melton (bivši Apple menadžeri) pričaju o raznim softverskim projektima koje su realizovali (Safari, Mail.app, iOS itd).

Onda je došlo leto. Na odmoru skoro uvek čitam fantastiku, a ove godine sam nastavljao započeto od prošle, kada sam čitao “Hiperion” i “Pad Hiperiona”.

Uz zezalicu “Nosim roze kruciformu, ispunjavam radnu normu” sam se bacio na “Endimion” i “Uspon Endimiona“. Potrajalo je, ali je vredelo. Definitivno vidim sebe da se jednog dana opet vratim serijalu. Uživao sam u svakoj stranici.

Dole Pax! Živela praznina koja spaja i svi prelepi oblici života rasuti po svemiru!

Čekajući da mi cure završe sa kupovinom, jedan dan sam se zavukao u Lagunu i impulsivno pazario “Drugi svetski rat“. No, kad je već bila tu predamnom, a cura još nije bilo iz prodavnice, počeo sam da čitam i nisam je ispuštao u narednih par meseci. O ispravnosti informacija u knjizi i tome da li se autor priključio “ispravnim” strujama razmišljanja o II svetskom ratu ne mogu da sudim jer nisam veliki poznavalac te tematike. Ono što znam je da me je knjiga pomalo zabrinula. Taj sukob se nije desio tako davno, a zverstva koja su se tada desila su neljudska.

Kasnije sam pročitao da rat želi samo lud, onaj ko ga nije doživeo ili onaj koji bi da nešto zaradi iz njega. Baš to.

Za rođendan sam dobio “Marsovca”, da se resetujem. Prijatno osveženje posle knjige o najvećem ljudskom sukobu u istoriji koji je odneo 60 miliona života, a promenio sve ostale, uključujući i naše. Posle "Marsovca" čovek počne malo drugačije da gleda na vodu, krompir, bakterije u zemlji i mnoge druge stvari na koje uopšte ne obraćamo pažnju.

Ne deluje kao mnogo, ali ovo je bila godina ispunjena raznim dešavanjima, što ličnim, što poslovnim. Nemam baš puno vremena za čitanje, ni blizu kao ranije, ali ga se uvek nađe bar malo, da lagano napredujem.

Zanimljiva stvar sada je da imam puno knjiga na policama koje sam poručivao i čitao u period od 2007. do 2010. kojima bih se vrlo rado vratio, tako da je pitanje da li ću u 2016. čitati knjige koje su mi nove, ili se vraćati nekim starim, ili ću da mešam. Ne vidim problem da još jednom prođem kroz “The Toyota Way” ili “The Street-Smart Entrepreneur”. Današnji ja i ja koji ih je gutao 2008. se dovoljno razlikuju tako da će verovatno biti kao da ih prvi put čitam.

Automatizujte sve

Juče i danas sam imao priliku da radim na automatizaciji dva procesa: migriranja izuzetno velikih Active Collab instanci (koji umeju da traju i više od 24h) i integracije sa sistemom koji koristimo za lokalizaciju softvera. U pitanju je par sati efektive provedenim u pripremi i testiranju tih job-ova koji će nam vremenom uštedeti stotine i stotine sati.

Za automatizaciju posla nakon što su serveri podešeni koristimo Jenkins (za podešavanje servera koristimo Ansible, ali je tu moj upliv jako mali za sada). Jenkins nije lepotan, za interfejs se može reći da je sve osim da je user-friendly, a u pozadini je tona XML-a (bljak!). Uprkos tim manjkavostima, naučio sam da ga volim. Ljubav je zaslužio zato što je izuzetno vredan i pouzdan saradnik.

Izrada joba je prosto proceduralno programiranje, sa dosta dužim periodima testiranja. U prvo vreme kada krenem da pravim novi Jenkins job osećaj se svodi na: “Dođavola, ima li ovome kraja? Po koji put moram da pokrenem komandu i sačekam da se uradi X, Y i Z!?”, ali je na kraju mnogo bolje. Tada je: “Drago mi je što će timu i meni ovo što sam napravio štedeti sate i dane ponavljajućeg posla; sate i dane koje možemo potrošiti na neke korisnije stvari".

Promene koje automatizacija pravi u timi

Hajde sada da malo pričamo o tome kako automatizacija utiče na tim koji ju je usvojio. Kada se jednom krene sa automatizacijom i uvide prednosti, nema povratka na staro ad hoc rešavanje problema. Kako vreme prolazi, tako i broj automatizovanih procesa raste, a i njihova pouzdanost. 

Većina naših jobova je izvršena par stotina puta, a neki i po par hiljada puta. Time su zaslužili naše poverenje. Ako i nešto krene na loše, stiže obaveštenje (na email), a u mailu i u Jenkins interfejsu imamo sve potrebne detalje da rešimo problem (loguje se i čuva sav output). 

Uopšteno gledano, društvo ima stalan strah od automatizacije zato što se boji da ista smanjuje broj radnih mesta. U ovom slučaju je realnost daleko od te pretpostavke. Sve što smo automatizovali nam je oslobodilo vreme da radimo nešto korisnije, kao npr unapređujemo proizvod i stabilnost platforme, pružanje bolje podrške… U nekim slučajevima je čak i omogućilo stvari o kojima smo pre automatizacije mogli samo da sanjamo (pružanje velikog broja zvaničnih prevoda za Active Collab na primer). 

Izuzetno vredan propratni efekat automatizovanja procesa je da je automatika ujedno i dokumentacija procesa. Kako vreme prolazi, tako se dogodi i neminovnost da zaposleni koji jedini ima detaljno poznavanje nekog procesa ode. Ukoliko je proces automatizovan, a sama automatizacija u skladu sa dobrim praksama (jasni i nedvosmisleni ulazni parametri, iskomentarisani koraci, propratni opis itd), verovatnoća da će odlazak pojedinca napraviti veliki problem značajno opada. To je velika vrednost za firmu koja želi da preživi dugi niz godina.

Dodatak (27. 12. 2015.): jednu stvar sam zaboravio da napišem, a odmotala mi se danas dok sam radio na skroz drugom projektu (koji takođe koristi dosta automatizacije). U mojoj dosadašnjoj praksi se pokazalo da se jednom napisano jobu umem vratiti i koristiti ga ili kao osnov za novi job (Jenkins podržava brzo dupliranje jobova) ili kao mesto gde ću da vidim kako sam neki problem rešio (npr, "komituj izmene ako ih ima" grupa komandi). Reciklažom se štedi dosta vremena. Job koji sam danas rešavao je nastao za petnaestak minuta pre svega zato što je za osnov korišćen sličan job iz drugog projekta. Umesto da se sve piše i testira od nule, bilo je potrebno samo izneniti par parametara i koraka.

I na kraju, automatizacija direktno utiče na kulturu tima. Stavljanjem akcenta na automatizaciju (delom, ne "dekretemo sa vrha") se stavlja akcenat na ideju da smo tu da radimo pametno i da maksimalno iskoristimo vreme koje nam je na raspolaganju. Stvari koje se ponavljaju treba da radi računar, dok se mi bavimo kreativnijim poslom. 

S tim svim na umu, usuđujem se da dam sledeći savet: automatizujte sve, ili bar probajte. Jednom kada krenete tom stazom, nema nazad jer su prednosti koje donosi na svim frontovima vrlo brzo vidljive i izazivaju zavisnost (poslovnu i kulturnu).

Podržavanje dve verzije aplikacije u produkciji

Postoje scenariji gde želite da imate dve generacije SaaS aplikacije u produkciji koje rade rame uz rame - staru i novu. Razlozi zašto biste želeli da ostavite staru iako ste upravno izbacili novu verziju su retko tehničke, a gotovo uvek poslovne prirode. 

Velika je verovatnoća da postojeći korisnici (koji uredno plaćaju pretplatu) nisu spremni da se prebace na “nešto novo“ onog momenta kada ste vi spremni to novo da im učinite dostupnim. Možda im se ne sviđa da menjaju svoje navike. Možda im se i sviđa, ali je tajming loš (rade na nečemu što im je bitno, a učenje novog softvera i izgradnja novih navika im baš i nije visoko na listi prioriteta). 

Strogo “presecanje sa prošlošću” može biti i riskantno. Koji procenat mušterija bi razmislio o prelasku na konkurentski alat kada je suočen sa izborom u nametnutom vremenskom periodu (“Ako me već teraju da učim sve novo, zašto to ne bih radio na Konkurentu X npr?”)? Ukoliko je veći od 0%, onda je prevelik.

Kada smo izbacivali Active Collab 5 vodili smo se logikom da niko ne želi da mu neko u sred bitnog projekta promeni ceo app za vođenje projektima, pa smo odlučili da paralelno podržavamo Active Collab 4 i Active Collab 5. Bio je procenat korisnika koji su se odmah prebacili, ali je tokođe ostao i veliki broj ljudi na staroj verziji. Lagano ih podsećamo da je izašla nova verzija, koje su njene prednosti i prebacujemo kada su spremni.

Što se tehničkog dela priče tiče, jedna od stvari koje sam (na teži način) naučio je da se dve generacije aplikacije ne bi smele instalirati na isti aplikacioni sloj. 

Ukoliko se želi podržavati legacy verzija aplikacije, trebalo bi je ostavi na starom hardveraju, a novu verziju izgradi na novom. Ili obrnuto - preseli legacy na hardver koji je optimizovan za sunset (opadanje broja korisnika) umesto za rast, a novu podesi na hardver predviđen za rast. 

Ukoliko se to ne uradi, može biti dosta problema zato što sve novo što se dodaje u novoj generaciji aplikacije mora biti realizovano sa legacy verzijom na umu, a to šlepanje košta vremena i podložno je greškama.

Iako je sam proces prelaska sa stare verzije na novu dugotrajan i tehnički zahtevniji, i dalje mislim da je to bila ispravna stvar za uraditi. Takođe je i ceo proces zanimljivo iskustvo koje će nam pomoći da napravimo bolje odluke u budućnosti.

Podcast 001

U prvoj epizodi Danijel i ja pričamo o tome koje okruženje ljudi koriste za PHP razvoj na Mac OS X (Vagrant, brew, liip, built-in PHP), Vagrantu, Dockeru, Dropboxovom udesetostručenju prostora za Pro korisnike, sistemima za backupovanje za zahtevenije korisnike i Googleovoj odluci da favorizuje HTTPS.

Video:

Audio:

iWatch

Jedina situacija u kojoj iWatch po meni ima smisla je da bi korisnik uvek imao pristup Siri. Telefon može biti u džepu, torbi, drugoj prostoriji, ali sat na ruci je uvek tu i uvek mu se može uputiti pitanje ili izdiktirati podsetnik.

Ukoliko sam u pravu, iWatch neće biti pušten među mase još neko vreme, pre svega zbog toga što Siri danas još uvek nije dovoljno dobra da bude primarni interfejs za upravljanje uređajima. Ipak, dan kada ćemo biti okruženi uređajima kojima upravljamo glasom ne deluje daleko. Desetak godina, tu i tamo, s tim da pioniri tog interfejsa već grabe napred velikim koracima…

Timovo zaveštanje

Baš dosta koristim email. Ne govorim samo o stvarima tipa notifikacije i newsletteri, već i o prepiskama sa kolegama, korisnicima, partnerima itd. U tim raznim prepiskama sa raznim ljudima, s vremena na vreme naletim na osobe koje imaju setovan famozni Tim Ferisov auto-responder:

Thank you for your email! I currently check email twice a week. I respond to urgent email at those times and endeavor to respond to all other email once a week.

If you need anything immediately, please call me on my cell so that I can address this important matter with you.

Thank you and have a great day!

Nemojte biti osoba koja šalje takve poruke. Te poruke su jedna od najružnijih stvari koja se desila emailu od dana kada je prvi poslat.

Kao primalac te poruke, jedina poruka koju ja primam je:

Pazi,

Ja jako cenim svoje vreme (a ne baš mnogo tvoju poruku), tako da proveravam mail samo dva puta nedeljno. No, pošto znam da ti imaš tonu slobodnog vremena da se petljaš sa junk porukama, evo ti jedna, da ti ne bude dosadno.

Srdačno, Productivity Gury

Kako stvari stoje, verovatno ću početi da šaljem auto-respondere na te auto-respondere. Prikačim 2MB težak JPEG (NASA objavljuje tonu prelepih fotografija svemira) uz poruku: "Izvolu nasumičnu sliku svemira. Verovatno ti je korisna koliko i meni tvoja poruka da proveravaš mail dva puta nedeljno!"

Osveženje naslovne stranice

Danas smo pustili osveženu verziju activeCollab.com naslovne stranice. Kažem osveženu zato što nismo išli sa kompletno novim pristupom, već sa laganom evolucijom postojećeg stila. Izbacili smo dve varijante. Prva ima naglašen poziv da se pogleda Intro video:

 

Verzija A

Verzija A

a druga balansira dalji opis aplikacije (prostom listom problema koje activeCollab rešava) sa pozivom da se pogleda Intro video:

Verzija B

Verzija B

Sistem pojednako servira i jednu i drugu verziju, pa ćemo kroz desetak, petnaest dana videti koja više ljudi dovodi do demoa i zadržati je.

Pored videa, novost je da je sada znatno naglašeniji naslov stranice i Call to Action (kreiranje demoa), kao i da je social proof bolje prezentovan (activeCollab se prodaje već više od 5 godina i imamo hiljade korisnika među kojima i dosta zvučnih imena), a da opet nije previše napadan.

Sada nam ostaje da gledamo ponašanje korisnika, konverzije i dalje peglamo, u skladu sa tim. Zarad poređenja, evo je i naslovna stranica koju nova verzija menja:

Stara naslovna stranica

Stara naslovna stranica

Prava pitanja

Kada sam pre neki dan gledao intervju sa Timom Kukom na D11, jedna stvar me je opasno iznervirala: činjenica da neko ima pažnju tog čoveka na sat i po vremena i traći je na kompletne gluposti.

Zanima vas iOS7? Sačekajte desetak dana. iPhone 6? Možda koji mesec. To je nešto što će doći i što će većina videti, samo uz malo strpljenja. Ono što većina nema priliku da čuje je razmišljanje nekoga kao što je Tim Kuk o poslovanju i životu uopšte. 

Tim-Cook-D11.jpg

No, evo je serija dobrih pitanja (via @daringfireball). D11 slobodno ignorišite - tamo nema ništa novo da se nauči. 

Problemi i odluke

Jedna od stvari koje sam naučio tokom naše petogodišnje poslovne istorije je da su problemi stalno prisutni. Kako rešite jednu grupu, dođe druga i tako u krug. Nekada se čak desi da se problem koji ste ranije već rešili vrati, ali je u međuvremenu mutirao - narastao, poprimio neke nove osobine. Nekad je u pitanju nešto sasvim novo, sa čime do sada niste ni jednom imali prilike da se susretnete.

Zahvaljujući tome, za ovih par godina ni jednom nije došao momenat kada smo mogli da odahnemo i kažem: "Eto, sjajno, nema više ni jedan problem sa kojim treba da se pozabavimo". Iskreno, kako je vreme prolazilo i kako sam o ovakvim stvarima pričao sa drugim, iskusnijim preduzetnicima, tom momentu sam prestao i da se nadam.

I to je sve OK, dokle god se radi i gura napred. Ono o čemu ovde hoću da pričam je potreba da se donose razne odluke kako sečemo kroz šumu problema i rastemo. Ima momenata kada treba da se zastane i donese neka teška odluka i uvek sam na njih gledao istim očima. Međutim, nedavno sam gledao snimak predavanja File Libina (jedan od osnivača Evernota) na Stenfordu gde on naglašava razliku između teških i neprijatnih odluka.

Teške odluke su ono što im i ime kaže - odluke gde treba dosta vagati, gledati što je moguće više unapred (i unazad), probati naći potencijalne probleme, alternativna rešenja itd.

nut.jpg

Ono što je čudno, kada gledam iz ove perspektive, je da je takvih odluka baš malo. Mnogo više ima onih drugih, neprijatnih odluka.

Odlika neprijatnih odluka je ta da su često jako lake za doneti (gotovo pa očigledne u mnogim slučajevima), ali samo sprovođenje istih u delo je užasno neprijatno. Iz tog razloga ih često ljudi greškom svrstavaju među teške, iako to stvarno nisu. Primer koji se najčešće uzima je prekid rada na nečemu u šta je mnogo uloženo (finansijski i emotivno), a što se pokazalo kao neisplativo, prekid saradnje sa zaposenim ili dugogodišnjim partnerom itd.

Takeaway je prilično jednostavan: sledeći put kada se suočite sa nekom "teškom" odlukom, treba odstupiti korak unazad i postaviti jednostavno pitanje: "Da li je ovo stvarno teška odluka ili je sve već kristalno jasno, ali mi je ono što posle odluke dolazi neprijatno pa izbegavam donošenje iste iz tog razloga?"

Nakon što odgovorite na to pitanje, pola posla je već gotovo. Onaj neprijatni deo neće nestati, ali neće biti zabune u vezi toga šta treba da se radi, što će i prolazak kroz taj deo učiniti koliko toliko podnošljivijim.

Godinu dana activeCollab-a 3

Prošlo je godinu dana od kada je activeCollab 3 izbačen. Tom verzijom smo "resetovali" activeCollab razvoj, a samim tim i način na koji smo do tada radili. Baš zbog toga je ovo bila jako uzbudljiva godina, sa prilično vidnim rezultatima:

  1. Izbačeno je više od 40 novih verzija. U verziji 3.3 je predstavljena Auto-Upgrade funkcionalnost, tako da ćemo izbacivati nove verzije još redovnije,
  2. Napredak ka verziji 4 smo rasparčali na tri koraka. Prvo je stabilizovan 3.1, pa onda izbačen 3.2 zimus i 3.3 pre mesec dana, a na v4 se uveliko radi. Ovo je bitno zato što je drugačije od načina na koji smo v3 razvijali: umesto da idemo na v4 direktno i zakopamo se na godinu ili dve dana bez značajnijih novih unapređenja, ka njoj dolazimo korak po korak, uz stalno izbacivanje novih stvari,
  3. Pripremljen je i pušten u test fazu activeCollab in the Cloud servis (kao ManageProjects.com).

Još jedna bitna stvar kod verzije 3 je što nam upravo ta verzija platforma za naš dalji rast i razvoj. Tu je i ManageProjects.com platforma, kao evolucija proizvoda i preusmeravanje naših aktivnosti više ka servisima, a manje ka klasičnom licenciranom softveru. Sve u svemu, jedna zanimljiva godina je za nama, a ja sam uveren da nas čeka još dosta uzbudljivih stvari u narednoj.

PHP wishlist: USE AS

Često sam unutar objekta i hteo bih da svojstvo ili rezultat funkcije prosledim anonimnoj funkciji, tipa:

class MyClass {

function doSomething() {
return cache_get('cache_key', function() use ($this->someExpensiveFunction() as $tmp_data) {
return "processed $tmp_data";
});
}

function someExpensiveFunction() {
return 'do something expensive';
}

}

Umesto toga, kod moram da pišem sa privremenim promenljivima, gde će se funkcija pozivati svaki put bez obzira da li mi treba ili ne:

class MyClass {

function doSomething() {
$tmp_data = $this->someExpensiveFunction();

return cache_get('cache_key', function() use ($tmp_data) {
return "processed $tmp_data";
});
}

function someExpensiveFunction() {
return 'do something expensive';
}

}

Ako već ima nešto slično, javite.

99% mailova završava u kanti

Sada već davne 2003. ili 2004. se desilo nešto nezamislivo. Iz više-se-ne-sećam-kog-razloga izgubio sam celu svoju Outlook arhivu, a zajedno sa njom i sve poruke koje sam godinama uredno sortirao i čuvao. Da li mi je backup pukao, da li je arhiva bila oštećena ili šta već, stvarno se više ne sećam, ali eto, jednog jutra više nisam imao pristup tim mailovima.

Zanimljiva stvar se desila u periodu posle tog incidenta - ne mogu da prizovem momenat kada su mi te poruke ikada nedostajale. Možda se desilo jednom, dvaput da mi nešto zatreba, ali u tim situacijama sam se uglavnom snalazio da dođem do stvari koje mi trebaju. I preživeo sam da vam danas to ispričam (ili-ti: nije došlo do kraja sveta zato što nisam imao pristup nekoj od poruka)…

Tada to nisam znao, ali cela ta epizoda sada potvrđuje stav koji zastupam: 99% mailova koje svakodnevno primamo treba da završi u kanti za otpad, ne u arhivi. Onih 1% što preostane, dovoljno je da samo arhiviramo i pustimo sisteme za pretragu da nam nađu ono što tražimo kada nam nešto zatreba. Uostalom, te algoritme su ljudi pravili baš za pretrage velikih arhiva, tako da neće imati nikakvih problema da pretražuju ovu našu malu (1%).

Da bi Backspace (ili Del) bili taster koji mogu često da pritiskam, imam "strategiju" pomoću koje "izvozim" stvari koje zahtevaju neku akciju. O njoj sam već pisao, a lako se pamti kao 4D:

  1. Do - ako nešto treba da uradim, a zahteva manje od 3 min posla, uradim odmah,
  2. Delegate - stvari koje neko drugi treba da uradi "šaljem dalje" u naš activeCollab,
  3. Defer - ako nešto treba da uradim kasnije, prebacim u svoj Things,
  4. Delete - ogroman deo pošto pročitam i odmah brišem, a naposletku i prva 3 D završe sa ovim D nakon što završim sa sortiranjem.

Šta arhiviram: sve mailove od banke, sve prepiske sa zaposlenima koje se dešavaju mimo našeg project management alata, sva dopisivanja sa potencijalnim partnerima i tome slično. Takve pošte nema puno.

Šta sortiram u arhivi: ništa. Mesto gde sortiram stvari su naš activeCollab (upravljanje firminim projektima) i moj Things (stvari nevezane za posao, ili stvari vezane za posao koje mi padnu na pamet kada sam daleko od računara i zahtevaju dalju razradu pre nego što završe u firminom sistemu).

Zahvaljujući ovoj jednostavnoj "strategiji" i "just let go" prisptupu pošti, moj inbox danas izgleda ovako:

Moj inbox, danas

Moj inbox, danas

4 actionable poruke… Nije loše, posebno ako se uzme u obzir da dobijam po par stotina poruka dnevno.

PS: Da ne dođe do zabune, nisam egocentrik koji  briše poštu kako bi se osećao bitno i ne ceni ljude sa kojima se dopisuje. Poenta je da ću stvari zapamtiti ili uvezati na neki drugi način (project management alat, lična to do lista, kontakti ili veze), umesto da skupljam samu poštu i trošim vreme na sortiranje nečega što je u većini slučajeva samo privremena informacija.

#onokad support tim slavi

Ima tako dana kada support tim slavi što je nekoj problematičnoj mušteriji* istekao support plan. I tako, dok oni slave, negde daleko ta mušterija popunjava order formu i "Bam!", krećemo: "Evo nas nazad, imamo podršku, sad ste naši!"

Male stvari koje čine našu svakodnevicu zanimljivom :)

* Problematična može biti iz niza razloga: loš server koji je pravo mučenje održavati, užasno konfigurisano okruženje sa tonom modula i stvari koje mogu poći na loše, ili jednostavno čovek sa kojim je teško raditi. Nije nikad ništa lično, naravno, samo ima imena i prezimena kojima se baš ne obraduješ kada ih vidiš u help desk inboksu.

O podizanju minimalnih sistemskih zahteva

Ima već desetak godina kako razvijam za web. U početku, dok su projekti na kojima sam radio bili tuđi, obično je na poručiocu bilo da odredi koji su minimalni sistemski zahtevi. Međutim, od neke 2006. te odluke su bile na meni, pa kasnije, od kada je 2007. iza activeCollab projekta stala A51 doo, na nama.

Lično, u većini ću slučajeva predlagati da dignemo sistemske zahteve (u razumnim granicama) i vidimo da li možemo da se "provučemo" sa tim. Sad već davne 2006. prvi activeCollab je zahtevao PHP5, što je bilo ravno jeresi. Pre godinu dana, kada je activeCollab 3 završavan, u zadnjim momentima je odlučeno da PHP 5.3 bude minimalan zahtev iako su rane bete bile u potpunosti PHP 5.2 kompatibilne. U prvom slučaju se nismo "izvukli", pa je tokom leta 2007. activeCollab bio prepisan da lepo radi na PHP4, a u drugom slučaju nismo imali većih problema.

Usporenje ili ubrzanje

Po mom dosadašnjem iskustvu, razumno dizanje minimalnih sistemskih zahteva je ulaganje u dalji razvoj. Kasniti sa dizanjem minimalnih sistemskih zahteva vuče par problema:

  1. Nagomilavanje tehničkog duga. Isti je veliki problem ako se otme kontroli,
  2. Vreme uloženo u testiranje i razvoj za starije platforme je vreme koje se moglo uložiti u dalje usavršavanje proizvoda,
  3. Podrška za stare platforme obično odseca pristup alatima koje nova platforma pruža, jer isti nisu dostupni na staroj. To usporava tim i čini da se u kodu nagomilavaju hakovi i zakrpe,
  4. Osuđivanje svih korisnika na ograničenja platforme koju koristi manjina. Hakovi i zakrpe koji su potrebni da bi sistem radio na starijim platformam su tu i za one kojima isti ne trebaju.
  5. Omogućavanje korisnicima da nastave da koriste proizvod na platofrmi za koju znate da ne zadovoljava današnje standarde po pitanju korisničkog doživljaja i performansi. Ako je platforma spora ili bagovita, korisnik će kriviti vaš softver, ne platformu.

Pod "razumno" podizanje, ne mislim ne programerski hir, već odabir platforme u dugoročnom interesu većine korsnika. Kada je PHP 5.3 bio određen kao minimalan zahtev za activeCollab 3 u maju 2012. godine, tada je već dve i po godine bio stabilan, a nudio je značajno bolje performanse i brojna jezička unapređenja. Insistirati na PHP 5.4 u tom momentu (tada je bio stabilan oko dva meseca) bi bilo nerazumno, ali PHP 5.3 je bio sve, samo ne bleeding edge, neproveren i nepouzdan.

Umesto da se troši vreme na krpljenje i održavanje legacy platformi zarad šačice korisnika, to isto vreme može da se uloži u dalji razvoj softvera na modernijoj i bržoj platformi. Ne samo da sa jedne strane nisi u minusu (jer trošiš vreme na podršku starijih platformi), već s druge strane dobijaš i vetar u leđa u pogledu garantovanog pristupa alatima koje nova platforma pruža.

Tajming

Još jedna stvar koju treba imati na umu kada se odlučuje o dizanju minimalnih sistemskih zahteva je vreme lansiranja nove verzije softvera i koji je njen očekivani životni ciklus.

Ukoliko se lansiranje očekuje za 6 meseci recimo, do tada situacija može bitno da se promeni, pa odluka da li podržavati staru platformu ili ne postane nebitna. Takođe, ako se očekuje da ta verzija bude u upotrebi značajan vremenski period, možda je bolji ići sa novom platform uprkos "trnovitom" početku, kako bi osnova za kasniji razvoj i održavanje bila bolja.

Zaključak

Lider na tržištu na kome activeCollab nastupa je ove stvari shvatio vrlo rano i odluku za odlukom pokazuje da dobro razume šta radi (nisu džabe lider). Naime, oni među prvima "iseku" podršku za browsere koji ne zadovoljavaju njihove minimalne standarde. Na taj način njihovi korisnici su prisiljeni da koriste browser u kome njihov proizvod radi bolje nego u starijim verzijama (samim tim korisnik ima bolji doživljaj), a sa druge strane, vredan i skup programerski sat uvek odlazi na unapređenje proizvoda ili platforme, umesto na krpljenje i održavanje podrške za stare browsere zarad šačice korisnika koja ih koristi.

Mi smo sada pred izbacivanjem podrške za Internet Explorer 8. Problem čini grupa korisnika koja još uvek koristi Windows XP (ili stariji), a nema mogućnost instalacije nekog drugog, modernijeg browsera. Videćemo kako će se cela priča razvijati, pa pišem detalje.