În Interviuri

[Interviu] Sorin Dumitrescu, Technical Team Lead @Innobyte

sorin-dumitrescu

Am stat de vorbă cu Sorin, despre mediul de lucru din cadrul Innobyte, importanţa echipei pentru performanţă şi recomandările acestora pentru tinerii care aspiră la o carieră în web development.

În prezent ești Technical Team Lead la Innobyte. Ce abilități te-au ajutat să ajungi aici?

Din punctul meu de vedere, seriozitatea și consecvența sunt calități necesare oricărui Team Lead, dar la fel de importantă este abilitatea de a-ți asculta colegii și de a accepta sfaturi. 

Bineînțeles, cunoștințele tehnice sunt foarte importante, dar nu constituie criteriul principal de selecție. Team Lead-ul nu este neaparat cel mai bun membru al echipei din punct de vedere tehnic, însă trebuie să poată înțelege soluțiile tehnice (atât la nivel macro, cât și la nivel micro) și să poată alege soluția cea mai bună pe termen lung, în funcție de constrângerile proiectului. 

Valoarea unei echipe este dată de un cumul de factori: cunoștințele tehnice ale membrilor echipei, seriozitatea, pasiunea față de munca prestată și de comunicarea dintre membrii echipei. 

Care îți sunt “tools of trade” – hardware, software folosit zilnic, pentru organizare, eficientizare etc.?

Pentru noi, ca web developeri, este ideală folosirea unui mediu local de dezvoltare cât mai apropiat de cel de producție. Pentru a îndeplini acest obiectiv, folosim mașini virtuale. Echipa noastră folosește Vagrant și Puppet pentru provizionare; însă sunt echipe care folosesc alte soluții, de ex. Docker.

Ca sistem de operare, eu folosesc Ubuntu, însă am colegi care folosesc OSX sau Windows. În ceea ce privește editorul de cod, lucrez cu PhpStorm, însă echipa noastră utilizează și NetBeans sau Sublime. Folosim o varietate de alte tool-uri auxiliare, precum MySQL Workbench sau HeidiSQL pentru conectarea la bazele de date, terminale cu funcționalități avansate, precum Terminator, Postman pentru a testa API-uri, diverși clienți de VPN etc. În funcție de specificul poziției, software-ul folosit diferă – colegii din cadrul departamentului de design folosesc Photoshop sau Illustrator, iar colegii de la testare folosesc diverse tool-uri pentru automatizări.

Alegerea software-ului ține mai mult de preferințele fiecăruia. Pentru persoane diferite funcționează aplicații/tehnici diferite, așadar nu are sens îngrădirea developerilor pe niște direcții rigide. Fiecare coleg este liber să folosească orice tool i se potrivește mai bine, atât pentru confortul lui, cât și pentru o productivitate sporită.

Nu știu ce tehnologii vom folosi în viitor, însă suntem mereu în căutare de noi tehnologii pentru a crește calitatea soluțiilor dezvoltate și pentru a eficientiza timpul de dezvoltare.

Pentru planificarea ședințelor și a discuțiilor sau rezervarea sălilor de ședință folosim Google Calendar; avantajele sunt integrarea cu diferiți clienți de mail/calendar, inclusiv mobili, integrarea cu calendarele clienților și simplitatea în utilizare.

Folosim suita Atlassian pentru a ne organiza activitatea zilnică: Jira pentru tracking de issue-uri și dezvoltare, Confluence pentru documentarea soluțiilor, Stash (acum Bitbucket Server) pentru colaborare pe cod – lucrăm într-un sistem în care code review-urile sunt obligatorii pentru orice implementare, oricât de mică.

În materie de hardware, folosim atât laptop-uri, cât și desktop-uri (după preferințe și necesități), ce conțin hardware capabil, echipate cu 2 sau 3 monitoare (la fel, după preferințe și necesități).

Povestește-ne despre mediul de lucru de la Innobyte. Cum arată o zi obișnuită de muncă?

Aici sunt foarte multe de zis…

Innobyte înseamna echipă, Innobyte înseamnă prieteni, Innobyte este o întreagă cultură, bazată pe o filosofie ce are în centru oamenii. În Innobyte, meritele sunt deschis apreciate și performanța este răsplatită întotdeauna. 

O zi obișnuită de lucru începe cu micul dejun servit la birou (înainte de începerea programului de lucru), împreună cu colegii. Este acea parte a zilei în care ne întâlnim toți și punem țara la cale, la o cafea. Continuăm cu o ședință inter-echipă de dimineață, în care discutăm pe scurt progresul înregistrat în ziua precedentă, precum și planurile pentru ziua curentă. După ședință începem activitatea noastră preferată, aceea de dezvoltare.

Innobyte

Lucrăm cu seriozitate și pasiune, dar ne mândrim și cu skill-urile de foosball sau air hockey, sporturi pe care le practicăm în sala de relaxare când ne permite timpul, sau când simțim nevoia să luăm o pauză. Masa de foosball este în topul preferințelor, dar avem colegi care preferă să se relaxeze pe canapea, să joace air hockey, darts, un joc pe Xbox sau să citească o carte.

Desigur, apar și momente dificile, însă în cadrul unui asemenea colectiv, ele nu constituie o problemă persistentă și sunt depășite cu ușurință.

Până nu experimentezi atmosfera din Innobyte, nu poți să înțelegi pe deplin. Este greu de găsit un loc în care colegii să vină să te ajute din proprie inițiativă când ai o problemă, fie ea de natură profesională sau personală. Mereu am simțit un sprijin puternic din partea colegilor din Innobyte și asta te face sa îți dorești să poți întoarce favorul; este ceva special.

Innobyte este o companie autohtonă. Care sunt provocarile unei companii românești de web development pe piață?

La Innobyte, noi credem că poți ajunge să ai succes prin inteligență, pasiune și multă muncă. Viziunea noastră e de a oferi înaltă performanță prin soluții web scalabile și inovatoare. Tocmai din acest motiv, suntem în permanență în căutare de noi abordări privind soluțiile web.

Ne-am luat angajamentul de a fi întotdeauna din ce în ce mai buni, de a excela prin serviciile oferite și de a atrage în echipa noastră oameni valoroşi. Toate acestea ne-au adus clienți pe măsura așteptărilor.

Cred că cea mai mare provocare a oricărei companii (nu doar autohtone) este să transmită clienților că este important să țintești calitatea pentru orice software, dar și că aceasta costă.

Din punctul de vedere al unui programator, nu cred ca sunt provocări specifice pe piața din România față de alte piețe. După cum probabil știi, în România se face foarte mult outsourcing pentru străinătate, iar Innobyte nu face excepție.

Lucrăm cu clienți din toată lumea, indiferent de cultură sau de poziționarea geografică. Colegii noștri sunt buni vorbitori de limba engleză, iar comunicarea cu clienții din afara României nu constituie un impediment.

În funcție de locația clientului, diferența de fus orar poate constitui uneori un factor de dezavantaj, datorită latenței cu care vor fi primite răspunsurile la întrebările puse. Totuși, acest lucru nu este nici pe departe un obstacol în dezvoltarea unui proiect la cele mai înalte standarde,  soluția fiind o bună planificare și analiză înainte de începerea dezvoltării, astfel încât specificațiile să fie complete și clare.

Anul acesta, Innobyte aniversează 10 ani de când furnizează servicii de web development. Care sunt planurile voastre de viitor?

După cum îți poți imagina, după 10 ani am ajuns la un anumit nivel și avem o sumedenie de proiecte interesante. Natura lor este variată: proiecte e-commerce, realizate atât pe platforma Magento, cât și construite după specificații pe framework-ul Symfony, multiple soluții CRM, proiecte orientate pe ideea de rețea de socializare, tool-uri pentru marketing, precum și soluții personalizate.

12274447_10156292227050182_7474967313459425462_n

Avem colaborări cu clienți pe termen lung, cum ar fi Fashion Days, Medigo sau iSTYLE, dar avem și clienți project-based.

Suntem în permanentă expansiune a echipei, fiindcă mereu avem proiecte cu provocări pe măsura oamenilor care le dezvoltă.

Care este poziția voastră față de tinerii aflați la începutul carierei?

Innobyte încurajează tinerii aflați la început de drum. Suntem cu toții tineri și entuziaști, suntem un colectiv de oameni pasionați de ceea ce fac, și, conform clienților, suntem profesioniști :). Mai mult, ne place să transmitem și altora din cunoștințele noastre.

Această afirmație nu se oprește doar la nivel declarativ. Din 2015, Innobyte organizează un internship de vară, în care potențialii viitori colegi sunt iniţiaţi în web development. Sunt prezentate atât concepte teoretice, prin furnizarea de materiale de studiu, precum și cunoștințe dobândite în urma experienței. În principiu, este vorba de realizarea (succesivă) a două proiecte, la care echipa de interni lucrează ca un întreg: un proiect PHP, fără framework, și un proiect realizat în framework-ul Symfony.

Metodologia de lucru este una reală. Echipa are un Project Manager care se ocupă de planificare și de urmărirea evoluției proiectului. Proiectul începe cu identificarea task-urilor și apoi echipa face o estimare a proiectului (ajutată de un developer senior). Se țin ședințe atât zilnice, cât și săptămânale, pentru a ajuta la îmbunătățirea abilităților fiecăruia.

Ce este remarcabil la acest internship este faptul că fiecare intern are un mentor alocat (un developer senior care să îl îndrume), eliminând astfel situațiile în care participanții la internship rămân blocați și nu au pe cine să întrebe cum să procedeze în continuare.

La finalul internship-ului din 2015, ne-am mărit echipa cu 4 noi colegi dornici să învețe și să facă parte din Innobyte, echipă în care s-au integrat rapid.

Suntem mereu în căutare de colegi talentați și pasionați, fie ei la început de drum sau experimentați.

Care sunt recomandările tale pentru tinerii care aspiră la o cariera în web development?

Web development-ul este probabil domeniul pentru care se găsesc cele mai multe resurse de studiu online, atât materiale pregătite (tutoriale, cursuri), cât și răspunsuri la întrebări specifice. Din păcate însă, nu toate sunt de calitate bună, iar multe dintre ele nu respectă best practice-urile pentru domeniul de dezvoltare. Pentru cineva fără experiență este dificil să discearnă pe baza unor soluții propuse și să o aleagă pe cea mai bună.

Evident, o facultate tehnică ajută, oferind bazele unei gândiri analitice și cunoștințe generale despre programare și algoritmi. Însă, lipsa ei nu constituie un impediment; atâta timp cât există voința necesară, dublată de înclinația spre programare, totul se poate învăța.

Coursera oferă cursuri de calitate pentru începători, în cadrul unui program de învățare similar cu cel din universități, folosind proiecte care trebuie realizate de către cursanți, cu deadline-uri și examinări în timpul și la finalul cursurilor. Există atât cursuri gratuite, cât și plătite.

Similar, Codecademy oferă cursuri și tutoriale interactive, care ajută la o înțelegere profundă a noțiunilor. În general, cursurile de nivel de bază sau introductive sunt gratuite, în timp ce cursurile care abordează subiecte mai avansate costă.

O altă sursă de încredere este W3Schools, care conține informații de bază pentru tehnologiile folosite în web development, precum și exemple concrete de utilizare.

De asemenea, participarea la conferințe sau meet-up-uri de specialitate poate deschide câteva căi de studiu care să fie urmate apoi individual sau în cadrul unor cursuri organizate; un alt aspect pozitiv este componenta socială a paricipării la aceste evenimente.

Din experiența mea, însă, cea mai eficientă modalitate este de a învăța de la un grup care are cunoștințe solide în domeniu. Procesul de învățare este mult mai rapid comparativ cu modalitatea de studiu individual. Am menționat internship-ul nostruȘtiu ca am facut-o, dar acum este cu titlu de invitație pentru oricine vrea cu adevărat să își construiască o carieră în web development. Așteptăm înscrierile voastre.

Ce competenţe noi vrei să îţi dezvolţi / Ce competenţe curente vrei să îţi îmbunătăţeşti?

Caut întotdeauna să învăț tehnologii noi și să îmi lărgesc orizonturile. În ultimul timp am cochetat cu programarea în limbajele care sunt acum la mare căutare: NodeJS și Go.

Rezultatele sunt într-adevăr spectaculoase, dar implementarea nu poate fi făcută pe orice tip de proiect într-un mod sustenabil (cel puțin pentru moment).

De asemenea, este important sa consolidezi cunoștințele din domeniile cu care lucrezi în mod curent. Găsesc întotdeauna lucruri de învățat legate de tehnologiile cunoscute, precum PHP și JavaScript, sau HTML și CSS. Aici este vorba despre a fi la curent cu tehnici noi, librării care încorporează funcționalitate uzuală, precum și cu noile feature-uri oferite de tehnologiile folosite.

Performanța este un criteriu foarte important pentru noi și de aceea căutăm mereu să optimizăm aplicațiile la care lucrăm. Fie că este vorba despre un design pattern aplicat ingenios, de o variantă optimizată a unui algoritm, de interconectarea ingenioasă a unor tehnologii sau de arhitectura infrastructurii unui proiect, suntem dornici să aflăm lucruri noi și să le împărtășim.

Cum rămâi up-to-date în domeniul tău?

Personal, folosesc Feedly pentru a primi știri agregate din surse de specialitate. De asemenea, Twitter poate fi un tool de excepție dacă urmărești pe cine trebuie (software developeri din comunitatea open source, persoane din cadrul unor companii renumite de software development și conturile companiilor/proiectelor). Și Facebook este unul dintre canalele de informare pentru mine – la fel, este important să ai feed-ul populat din surse relevante.

Abonarea la newslettere specifice, cum ar fi cele de la SensioLabs, sau înscrierea în mailing list-uri precum cel de la PHP sunt și ele foarte utile.

Ultima, dar una dintre cele mai importante, este grupul Innobyte; dat fiind faptul că există foarte multă informație, este greu să obții mereu cele mai interesante subiecte. Datorită faptului că suntem un colectiv de oameni pasionați, frecvent se nasc discuții legate de subiecte interesante și astfel se produce o uniformizare a informațiilor la nivelul colectivului.

Consider că atâta timp cât activitatea de software development se face din pasiune și creează plăcere celui ce dezvoltă software, actualizarea cunoștințelor și învățarea de tehnologii noi vin de la sine, fiindcă reprezintă o necesitate.