În Interviuri

[Interviu] Lucian Cioroga, Software Engineer la WeVideo

lucian.cioroga

În interviul de astăzi, Lucian ne vorbește despre diferențele dintre un job în țară sau afară, ce înseamnă să-ți găsești pasiunea și care sunt aptitudinile esențiale de care are nevoie un tânăr pentru a reuși în prezent în software development. Pentru a afla în detaliu poveste sa profesională, te așteptăm în 13 noiembrie la Carieră în Ctrl.

Salut, Lucian! În curând o să ne vedem la Carieră în Ctrl, unde ne vei povesti mai multe despre parcursul tău profesional. Ce înseamnă carieră pentru un software engineer?

Tocmai asta face ingineria software specială: faptul că fiecare își poate defini cariera cum crede de cuviință. Nu există o rețetă universal valabilă, dar există ingrediente care nu ar trebui să lipsească: capacitatea de a asimila lucruri noi, gândirea abstractă, perfecționismul, auto-evaluarea corectă și, nu în ultimul rând, bunul simț. În rest, fiecare are o multitudine de opțiuni, alegerea uneia sau alteia depinde de fiecare în parte: companii mici, mari sau antreprenoriat, startup sau consultanță, web, desktop sau mobile, server, client sau fullstack, 9 to 6 sau hackathoane, who cares? Cred că orice carieră de succes se poate defini generic prin a face lucruri care-ți plac, într-un mediu care-ți place, asigurându-ți un trai sustenabil.

Există o mulţime de cărţi motivaţionale care ne vorbesc despre pasiune şi cum să alegem să facem ceea ce iubim, pentru a nu simţi că lucrăm. Din punctul tău de vedere şi din experienţa acumulată – chiar aşa e?

Nu sunt un fan al cărților motivaționale. Sunt, de obicei, situații care au funcționat pentru autor, povestite ulterior, când entuziasmul a înlocuit deja frustrarea. În plus, sunt făcute să zgândere necesarul personal de apreciere în stilul “yes, I can”-ului american. Nu sunt rele, a nu se înțelege greșit, dar sunt idealiste. În rest, e clar că pasiunea și a face ceea ce iubești sunt esențiale, și e valabil în absolut orice aspect al vieții. Dar cred că la fel de important este managementul așteptărilor. Dacă îți imaginezi că un job va fi numai programat în limbaje care mai de care mai cool, pentru proiecte care “schimbă vieți”, în care toate deadline-urile sunt atinse și toți clienții sunt politicoși și te apreciază, s-ar putea să fii dezamăgit. Din nefericire, mai există mentenanță pe proiecte vechi, clienți plini de cerințe, rapoarte, timesheet-uri, facturi, menținerea documentației ș.a.m.d. Mă îndoiesc că cineva face toate astea doar cu pasiune și iubire :).

Atunci când doreşti să te specializezi în ceva, impulsul este să citeşti o gramadă şi să practici. Noi credem că este nevoie de mai mult de atât pentru a deveni un specialist complet. Care sunt sursele tale de inspiraţie?

E destul de greu în software să separi specializarea de proiectul în sine. Personal, toate tehnologiile pe care le-am învățat le-am învățat lucrând la un proiect anume, deci practicând. Tocmai de aceea vorbeam anterior de capacitatea de a asimila lucruri noi și gândirea abstractă. Le consider skilluri mai importante decât specializarea în sine, pentru că, în software, specializarea este un proces continuu.

Cărțile le consider în special utile pentru metodologii (project management, clean code, work attitude) și nu pentru tehnologii. Pentru tehnologii, pentru mine ordinea de inspirație e: documentația tehnică (cea oficială), codul sursă (dacă e disponibil), stackoverflow, bug tracker-ele oficiale (sursă foarte importantă de informare, în special asupra motivelor pentru care ceva e cum e), și, in extremis, colegi sau cunoscuți deja specializați. Cred că aceași ordine e valabilă și pentru începători. Tentația e să sari prea repede la pus întrebări și atunci pierzi antrenamentul de învățare.

Ai început să lucrezi încă de pe băncile facultăţii, ca freelancer în cadrul RentACoder. Cu ce lecţii ai rămas din perioada de freelancing şi care a fost proiectul cel mai de suflet de atunci?

Cea mai importantă lecție a fost că un proiect implică mult mai mult efort decât scrierea de cod. Din facultate, din nefericire, am rămas cu o imagine prea “didactică” asupra programării, aceea că mergi la curs, înveți un limbaj sau un concept, hey rup în sesiune, iei un 8, și ai încheiat cu materia respectivă. În real life, efortul este susținut și nu temporar, 8 e rareori OK (sunt rari clienții care acceptă 80% din funcționalitate :) ), și nici un proiect nu se termină la prima livrare.

Primul proiect care-mi vine în cap e un joculeț web multi-player cu grafică 16bit inspirat din Zelda. Deși cu un concept foarte simplu, a fost printre primele proiecte și s-a dovedit destul de complex. În concluzie, am lucrat la el destul de mult pe bani puțini, însă clientul a devenit unul fidel. Deci, e și o lecție pe undeva pe acolo.

După mai mulţi ani de experienţă în Timişoara, ai făcut schimbarea către Norvegia, ca software developer pentru Inspera, unde ai stat  mai bine de 2 ani. De ce ai făcut pasul ăsta şi care au fost provocările descoperite în noul mediu?

Sincer, nu am căutat să merg în Norvegia. Am vrut să merg în UK, însă mi s-a făcut o ofertă bună în Norvegia și am ajuns acolo. Cu Inspera lucrasem înainte prin jobul din Timișoara, deci mă cunoșteam bine cu oamenii de acolo.

Motivul principal pentru care am vrut să plec din țară a fost însă curiozitatea, nu legată de job, ci de a locui în altă parte, de a experimenta alte moduri de viață. În final am ajuns și în UK (îmi petrec timpul între Londra și Timișoara de câteva luni), nu pentru job, deorece lucrez înregistrat în România pentru o companie din US, ci, din nou, din curiozitate. Cred că libertatea de mișcare pe care o avem acuma e ceva extraordinar și e păcat să nu o folosim.

Cele mai mari provocări în Norvegia n-au fost nici în niciun caz legate de software development. Au fost legate de aclimatizarea la vreme, la lumină și la prețuri :). Ca job, probabil cea mai mare provocare, deși e exagerat să-i spun așa, a fost să lucrez pe mai multe proiecte mari în același timp, fiind însă foarte puțin implicat în unele. Sunt obișnuit să am un aport important pe proiecte, așa că a fost destul de ciudat să fiu implicat în proiecte în care aveam timp alocat să-mi dau tehnic cu părerea, însă fără posibilitatea de a face efectiv mai mult. A fost una din situațiile în care m-am apropiat cel mai mult de management și o nouă oportunitate să-mi dau seama ca nu-i de mine.

Acum eşti software engineer în echipa WeVideo. Povesteşte-ne puţin despre responsabilităţile tale de acolo.

Pentru WeVideo lucrez, într-o formă sau alta, încă dinainte de a pleca în Norvegia. Chiar și în Norvegia, am petrecut destul de mult timp ca și consultant din partea Inspera pentru WeVideo.

Am început ca dezvoltator web pentru editorul video online. care tocmai era în lucru (nu se numea WeVideo pe atunci). Am lucrat în Flash/Flex și ActionScript. Ulterior, din Norvegia, am lucrat pe proiectele WeVideo Next și WeVideo Android. WeVideo Next era un editor HTML5 pe platforma Chrome Apps, proof of concept pentru renunțarea la Flash, cu care am fost invitați la Google I/O în 2013. De când am revenit în Romania, lucrez majoritatea timpului pentru WeVideo Android app. Pe lângă coding, sunt responsabil cu arhitectura, deciziile tehnice, antrenarea dezvoltatorilor noi, și am un aport în deciderea roadmap-ului, a funcționalității viitoare și a UX/UI-ului.

Pentru că ai termen de comparaţie – cu ce diferă stilul de lucru al echipelor de development unde ai lucrat în România, faţă de cel de afară?

Sincer, nu cred că diferă mai deloc. Cred că în România, când vine vorba de software, suntem la fel de serioși, capabili și eficienți ca oriunde altundeva. Dacă ne lipsește ceva, e spiritul antrepenorial și înțelegerea pentru business, probabil și unul din motivele pentru care sunt atât de puține startup-uri în România. Dar, semnele sunt tot mai bune, deci, să ne ținem pumnii :).

Care este, după părerea ta, setul esențial de aptitudini și competențe de care are nevoie un tânăr pentru a ajunge să lucreze în software development pe proiecte importante?

Dupa cum am menționat la prima întrebare: capacitatea de a asimila lucruri noi, gândirea abstractă, perfecționismul, auto-evaluarea corectă și, nu în ultimul rând, bunul simț. Pentru cineva care dispune de acestea, restul sunt skilluri derivate, care vin, evoluează, se transformă și sunt înlocuite de altele, relativ fără probleme.