Cerințe software

În studenție fugeam de scris proiecte și documentație ca dracu de tămâie. Îmi plăcea să scriu cod și doar asta aș fi făcut toată ziua dacă mă lăsai la calculator cu o sticlă de cola și un pachet de Lucky Strike. Mai plecam de la birou seara târziu când terminam inclusiv chiștoacele.

Nici pentru produsele la care lucram nu aveam acest bun obicei de a documenta. Motiv pentru care ajungeam în neplăcuta situație de a fi singurul care știa ce e am făcut acolo și trebuia să mă plimb de la client la client să rezolv până și cele mai mici probleme de configurare.

Noroc că m-am mai deșteptat prin 2010 și în primul rând m-am lăsat de fumat. Am schimbat jobul și am ajuns la Zitec unde lucrurile nu se mai făceau pe genunchi. Așa că am început să mă pun și eu le punct cu lucrurile pe care ar fi trebuit să le stăpânesc deja mai bine.

Unul din obiectivele mele de dezvoltare a fost să îmi îmbunătățesc abilitatea de comunicare în scris. În special când vine vorba de cerințe software, dar și articole tehnice sau alte forme de documentare. Așa a ajuns în lista mea de citit cartea Software Requirements: Practical Techniques for Gathering and Managing Requirements Throughout the Product Development Cycle.

Este genul de carte cu care cu siguranță poți să rănești pe cineva, fie că îl pui să o citească sau o folosești ca să aplici o lovitură la cap.

În orice caz, merită măcar răsforită pentru că mai reduce așteptările că software-ul se scrie singur pe vorbe și dacă se poate peste noapte. Fiecare propoziție scrisă te aduce mai aproape de un rezultat, decât o discuție care nu se ma termină.

Back to Scrum 2020

Anul trecut am luat o pauză de la rolul de Scrum Master / Agile Coach în echipe de dezvoltare software pentru a experimenta un rol mai aproape de client la Amiqa o companie aflată la început de drum.

Mi-am îndreptat astfel atenția către metoda Lean Startup și principiile de construire a unui model de afacere. Am început să studiez și să aplic acest proces denumit Customer Development popularizat de Steve Blank prin care ne-am propus să descoperim și să validăm profilul de client ideal pentru Amiqa.

A fost o călătorie extrem de interesantă alături de Bogdan, fondatorul companiei și echipa pe care a adunat-o în jurul ideii sale de produs. Am interacționat cu o grămadă de oameni din industria de IT pentru a ne forma o imagine cât mai clară asupra provocărilor pe care le pe zona de testare software.

Am descoperit că cel mai dificil este să ieși din bula ta și să te conectezi cu oameni din întreaga lume pentru a pune bazele unei companii care are potențial de a scala global.

Pentru mine tot procesul a fost cu suișuri și coborâșuri. Mi-am dat seama că sunt un moment din carieră în care apreciez mai mult claritatatea și stabilitatea. Până la un punct am reușit să gestionez incertitudinea de a nu avea clienți și de a fi într-un brainstorming prelungit.

Începutul pandemiei a momentul în care am început să simt mai multă presiune și stres. Deși am început să fim mult mai clari în modul în care exprimăm problema și soluția pentru mine incertitudinea provocată de context a venit cu nevoia de a obține o confirmare mult mai rapidă.

Cred că formarea mea din ultimii ani a venit din urmă și am căutat un proces mai clar și rezultate mai concrete. Lucru care m-a făcut să înteleg mult mai bine provocările cu care se confruntă un Product Owner atunci când are în față o mulțime de posibilități și trebuie să ia în fiecare moment decizia potrivită.

Prima zi de școală în pandemie

Mi-am pus aici imaginea cu Doodle-ul de pe pagina căutare de la Google ca să-mi amintesc de prima zi de școală din pandemie

Google ne prezintă un ideal de care suntem foarte departe în 2020 pentru că sunt zeci de mii de copii care nu au acces la instrumente de învățare.

Acestora le lipsesc până și caietele și rechizitele tradiționale. Să nu mai vorbim de un calculator suficient de performant de pe care să participe la lecțiile online.

Dacă dai click pe imagine, începi să vezi știre cu știre realitatea

POO și ATP: între frustrare și înțelepciune

În anul universitar 2019 / 2020 dl prof Pocatilu mi-a propus să colaborez în colectivul de programare la doua materi Programare orientată obiect (POO) și Algoritmi și Tehnici de Programare (ATP).

POO este spaima studenților de anul II în primul semestru pentru că dacă te numeri printre cei care au promovat înseamnă că ai lucrat cu adevărat în C++ și nu ai lăsat totul pentru sesiune.

Disciplina ATP este predată in anul I semestrul doi unde studenții își pun bazele gândirii algoritmice și învață să lucreze cu fișiere de intrare / ieșire în limbajul C.

Am predat cu atitudinea: greșește, greșește, greșește până când vei înțelege și vei continua să faci greșeli, dar din ce în ce mai puțin.

Am descoperit acest citat tradus aproximativ într-o poezie pe peretele casei lui Donald Knuth într-un interviu pe care l-a dat pe YouTube. Îl găsești la adresa https://www.youtube.com/watch?v=v678Em6qyzk

Dacă l-ai văzut probabil că ți-ai dat seama la fel ca și mine ca din aceste materii ai descoperit doar mici frânturi despre ce înseamnă programarea.

Aș mai adauga pe lista de videoclipuri recomandate această prezentare a lui Alan Kay de la OOPSLA din 1997 pe care o găsești adresa https://www.youtube.com/watch?v=oKg1hTOQXoY

Știu că azi nu mai avem timp pentru lucruri atât de “învechite”, dar am realizat după această experiență cât de util este să te întorci la principiile de bază și să încerci să ți le explici mai bine.

Studenții spun mereu că materiile astea s-ar putea preda mult mai bine și atunci ei nu ar mai avea restanțe, industria IT ar face produse de miliarde de dolari și eu probabil aș scrie această postare de pe o insula din Bali.

Dar iată-mă undeva în Vitan, încercând să înțeleg cum se aplică derivatele în Machine Learning și cum se obține rezultatul înmulțirii a două matrici.

Ce am învățat la Zitec?

M-am format ca profesionist în dezvoltare software la Zitec.

Interviul l-am avut în martie 2010. Pe atunci sediul se afla pe Strada Binelui.

Urmăream compania de ceva vreme, am văzut că au o echipă strong și un portofoliu bogat de clienți. Veneam cu o experiență de 2 ani și jumătate la, Pit Software unde dezvoltam soluții pentru Ho.Re.Ca și cu un portofoliu de siteuri web dezvoltate ca freelancer.

Știam că așteptările sunt mari așa că am venit cu emoții, dar și cu încredere că voi reuși. După primul interviu am primit acest mesaj.

Pe 17 Mai 2010 a fost prima zi de muncă.

La Zitec am învățat meserie

1) Bune practici

Când am ajuns la Zitec primul lucru pe care l-am descoperit a fost celebrul wiZki și regulamentul de ordine interioară.

Lucrurile se desfășurau cu o precizie incredibilă pentru mine care veneam dintr-un mediu în care prin comparație ai fi l-ai fi putut cataloga drept haos. Înainte lucram cu vreo 30 de clienți care mă sunau la ore târzii, aveam o grămadă de versiuni la care cu greu le mai dădeam de cap. De aceea mediul de lucru din Zitec m-a fascinat.

Am răsfoit wiZki-ul pe toate părțile, am citit sute de tichete din istoricul de proiect, m-am familiarizat cu sisteme de versionare și cu un ciclu de lucru pe sprinturi. Îmi plăcea ca aveam un feedback constant prin diverși metrici și că aveam ocazia să colaborez pe proiect. Lunar se realizau întâlniri de prezentare a proiectelor și cu ocazia asta aflam o grămadă de lucruri noi.

În primul am am stat pe un proiect considerat destul de învechit de care mulți se fereau. Pentru mine era o adevărată experiență. Îmi făcusem un sistem cu care urmăream branch-urile pe care lucram și mi-am propus să am cât mai puține tichete întoarse. Priveam totul ca pe un joc. Faptul că aveam o serie de metrici bine definiți mă ajuta să îmi auto-evaluez munca și progresul.

2) Dezvoltare continuă

Până să ajung la Zitec aveam un stil de învățare reactiv. Adică mă preocupam să găsesc soluții atunci când aparea o problemă. Prindeam foarte repede conceptele din practică, dar de multe ori se întâmpla să re-inventez roata.

Lucrând alături de oameni care aveau o înclinație către dezvoltarea continuă am început să mă preocup la rândul meu de studiu. Se promova dezvoltarea individuală mai ales în timpul liber pentru că lucrul pe proiecte permitea rar să găsești timp pentru învățare. Aveam acces la anumite facilități precum certificări plătite de firma și la o bibliotecă de cărți din domeniu.

În 2010 început să mă familiarizez cu Zend Framework. În 2011 mi-am luat certificarea Zend de PHP și în 2012 cea de MySQL Developer. Am organizat un grup de studiu împreună cu 3 prieteni în care realizam prezentări despre design patterns.

Primul plan de dezvoltare l-am făcut în iulie 2012 după un model prezentat de HR.

plan-dezvoltare-individuala

Surpriza a fost ca ritmul de creștere să fie mult mai accelerat decât mi-am imaginat. În 2013 Alex mi-a popus să coordonez departamentul de dezvoltare custom și să mă alătur echipei de conducere ZiBord.

3) Eficiență

Modul standardizat de lucru și bunele practici urmăreau un obiectiv foarte precis: eficiența în tot ce ne propuneam să realizăm.

Încadrarea în estimare și utilizarea eficientă a timpului reprezentau două din elementele importante pe care le urmăream. În fiecare zi completam un raport de activitate în care detaliam la ce am lucrat în ziua respectivă. Toate cele opt ore de lucru trebuiau să se regăsească în acel raport.

Aveam chiar o procedură care îți oprea accesul la internet și te băga în pădure dacă nu aveai completat raportul pe ultimele 5 zile. Pădurea era Subiect de bășcălie și caterincă în echipă. Într-un teambuilding la munte ne-am propus să simulăm “cronul” care rula de fiecare dată la 5 dimineața, să trezim un coleg și să-l ducem în pădure.

padurea

Așa am învățat să lucrez eficient, să descompun problema în sub-probleme și să mă preocup de a livra calitate într-un timp cât mai scurt cu putință.

Faptul că foloseam un tool de project management intern și un aveam un ritm de lucru bazat pe sprinturi asigura predictibilitatea procesului. Nu tot timpul ne ieșea așa cum am planificat, dar de fiecare dată estimările erau asumate și făceam tot posibilul să ne încadrăm în termenele promise clientului.

4) Lucru în echipă

Până să ajung la Zitec nu știam ce înseamnă să lucrezi în echipă. Colaboram foarte bine cu clienții și colegii de la PitSoftware, dar când era vorba de programare eram un lup singuratic pentru că eram singurul dezvoltator pe tehnologii web.

5) Fun

biroul

promovare

promovare-2

motivation-eduard-budacu

alocari

10856487_10155566728547355_3012018659569073022_o

10039_10151741843172355_279136265_n

38371_410946952354_5724965_n

53718_10152425050342355_312441536_o

177014_10151313689467355_1435074888_o

218854_10150192218602355_8295389_o

218928_10150192216322355_3324052_o

227959_10150192219862355_5237612_n

292927_10151086237017355_1594000671_n

310238_10150407533252355_1560791542_n

409695_10151086237227355_705608237_n

553047_10151741842882355_64659487_n

617117_10151313689282355_2090628952_o

856740_10151574374247355_1541432197_o

860278_10151541298002355_1261134545_o

892137_10152425048442355_2078253303_o

1274862_10152239907752355_567442388_o

1397589_10152608426367355_294684758_o

1400361_10152425050407355_1803429857_o

1403090_10152799212257355_903548731_o

1978441_10154267090137355_426061216652575086_o

10273401_10154781007252355_933406862848140098_o

10394501_10155166349582355_5433872158540030981_n

10484150_10155482220242355_1885158751635204080_o

Colaborare 2.0

Concepte precum “desktop”, “personal computer” sau “workstation” se vor transforma în moduri pe care nu le bănuim încă de tehnologiile cloud.

În prezent colaborarea la locul de muncă presupune o forma de partajare și prelucrare de informații care conduce la îndeplinirea unui obiectiv comun. Calitatea deciziilor depinde de modul în care se face accesul la date și de cum acestea sunt prelucrate în informații valoroase.

Partajarea de informații prin posta electronica pare la fel de rudimentara precum posta tradițională pentru cei care își doresc sa acceseze informația în timp real. Sa aștepți după cineva care are acces la o foaie de calcul și este plecat în concediu pare de neconceput, dar este o situație atât de des întâlnită atât în marile corporații, cât și în companiile mici.

Birocratia moderna presupune o forma de a limita accesul la informații cheie de care depinde succesul organizației. Pentru a reduce efectele negative ale birocrației sunt necesare metode noi de colaborare.

Colaborarea 2.0 nu duce lipsa de unelte, ci necesita o schimbare de mentalitate și de înțelegere a relațiilor de lucru care se formează într-o organizație.

În centrul sistemului colaborativ se afla angajatul care este purtător de cunoaștere și care își folosește abilitățile cognitive pentru a prelucra date și a le transforma în intuiții actionabile. Forță de muncă moderna dispune de caracteristici precum agilitatea, creativitatea, gândirea critică și abilitatea de a rezolva probleme complexe.

Angajații sunt persoane autonome, conduși de scop și de dorința de a se auto-depăși. Activitățile de rutina sunt îndeplinite de algoritmi inteligenți care învață din colaborarea cu oamenii. Munca fizica este făcută de roboți.

Vine vacanțaaaaa maree!

Un beneficiu la care am renunțat când am ales să nu mai fiu angajat este concediul plătit. Lucrând de cinci ani pe proiecte, acum mi se pare un mare lux să ai zile libere plătite. Am câștigat totuși ceva mai multă flexibilitate și o vacanță mare care sa ma deconecteze de la rutină. Am câștigat timp în care să mă plictisesc și să mă ajute să vin cu o perspectivă fresh in munca pe care o fac.

Așa că trec luna august la capitolul investiții pentru un plus de energie înainte de finalul de an care de fiecare dată a fost foarte dinamic.

Anul trecut după vacanță am luat o decizie importantă de a mă concetra mai mult pe dezvoltare de produs.

Am observat cât de mari sunt provocările pe zona de testare software în companiile cu care am lucrat, așa ca am simțit o potrivire foarte bună cu misiunea Amiqa. Atunci când dezvolți într-un ritm rapid, cu livrări repetate, este inevitabil să nu strici ceva. E o problemă pe care o confirmă orice echipă cu care am discutat. De aici rolul meu alături de Amiqa e să înțelegem cum putem productiza procesele de testare și cum putem să împachetăm mai bine tehnologia pe care o dezvoltăm.

Pot să spun că ritmul de învățare a accelerat semnificativ și viața într-un start-up e foarte diferită de o companie stabilă deja pe piață. Efortul de adaptare a fost mare și s-a cumulat cu cel de a preda la facultate. Cred că vacanța e bine meritată și abia aștep să mă re-conectez cu mine.

Pe lângă odihna de rigoare, mi-am luat niște teme. Anul acesta vreau să mă concentrez mai mult pe managementul de produs, pe comunicarea în scris și colaborarea de la distanță.

Îmi doresc să fie o vară liniștită, să rămânem sănătoși și să ne bucurăm de viață!

De la cusut la programare


Când eram mic îmi plăcea să cos. Și făceam haine pentru păpuși.
Eram fascinat de mașina de cusut pe care încă o mai are mamaia Jeni. De fiecare dată când mergeam în vizită îmi plăcea să o studiez ca să înțeleg cum funcționează.

Înainte să încep clasa întâi am fost la atelierul de croitorie la care lucra mătușa mea ca să îmi facă uniformă. Acolo am văzut că era un întreg sistem pentru a produce un costum cu tot felul de mașini și șmecherii. Am trăit o experiență fascinantă să văd cum măsurătorile mele sunt transformate într-o schiță, apoi sunt transferate pe material, sunt tăiate și cusute cu atenție. Ca în final să am o uniformă special croită pentru mine.

În clasele primare abia așteptam ora de lucru manual. Auzisem de la prietenii de la bloc mai mari că o să facem traforaj cu un profesor care era al dracului. Noroc că atelierul de școlii s-a închis în perioada de austeritate. Și profesorul cred că s-a pensionat pentru că noi nu l-am mai prins. Așa că deopotrivă, băieți și fete am învățat cum să facem modele pe etamină, să împletim și să facem mărțișoare din ață colorată.

Mai târziu am învățat de la maică-mea să croșetez. Era o activitate ce necesita foarte multă concentrare și atenție pentru a păstra același număr de ochiuri pe fiecare rând. Pentru a realiza modele complexe trebuia să schimbi împletitura când pe față, când pe dos. Țin minte că erau acele reviste cu șabloane pe care dacă le urmai puteai să faci orice de la căciuli, șosete sau fulare. N-am ajuns la nivelul acela de performanță, dar știu că mi-au ieșit câteva bucăți de material pe care le-am lipit într-un colaj. Apoi a apărut moda cu goblen-urile când eram deja ceva mai mare. Nu mai știu dacă eram în școala generală sau în primii ani de liceu.

Acum conștientizez cum toate aceste experiențe s-au translatat în cariera mea de programator. Mi-a fost ușor să înțeleg cum să parcurg un vector element cu element pentru că mintea mea era deja antrenată de la număratul ochiurilor la croșetat. O matrice nu era nimic mai mult decât șablonul unui goblen. Și diagramele de arhitectură seamănă mult cu tiparele unui costum.

Nu zic să lăsăm tastaturile și să ne apucăm de croșetat. Doar realizez că în lucrurile simple există multă știință și cunoaștere.

În peștera digitală

În mii de ani oamenii au dezvoltat simboluri cu care sa comunice, sa exprime idei și sa transfere cunoștințe de la o generație la alta.

Imaginile pictate pe pereții peșterilor au fost primele forme de comunicare. În timp s-au dezvoltat simboluri mai complexe precum hieroglifele egiptene. Scrierea cuneiforma a înlocuit desenele cu forme mult mai abstracte care sa permită o eficienta sporită. Alfabetul și dezvoltarea tiparului a acelerat exponențial transmiterea de cunoștințe.

În prezent, în era digitala, ne întoarcem la comunicarea prin imagini și simboluri. Acestea fiind este cel mai accesibil mod prin care oamenii se exprimă folosind interfețele actuale.

Folosind dispozitive mobile dotate cu camere foto puternice capturam din realitatea ce ne înconjoară o scenă pe care vrem sa o împărtășim cu ceilalți cât mai repede.

Aplicăm câteva filtre, etichete și mesaje cu care să atragem atenția și postarea ajunge la rapid la prietenii ce ne urmăresc feed-ul. Apoi sperăm algoritmul ne va ajuta să ajungem la cât mai multe persoane de la care sa primim o reacție sau o confirmare ca am fost văzuți.

Platformele multimedia ne ocupă cel mai mult din timpul pe care îl petrecem folosind dispozitivele mobile pentru ca sunt optimizate ca să ne capteze atenția. Pentru a funcționa aceste platforme au nevoie de baze mari de utilizatori care consumă și creează informație în cel mai simplu mod cu putință.

În toată aceasta economie a timpului și atenției câștiga cei care cunosc simbolurile, codurile și limbajul tehnologiei. Dacă vrei sa ieși din peștera digitală trebuie sa înțelegi cum este construită.