În Cariere

Cum lucrează un Web Developer

web-developer-romania

Alin Alexandru, CTO la Innobyte şi Andrei Pfeiffer, Code Designer la [e-spres-oh] ne povestesc despre ce implică munca unui Web Developer: de la competenţele tehnice până la cele soft şi de la analiza specificaţiilor până la dezvoltarea propriu-zisă a proiectului.

Învață programare direct de la profesioniști, la cursurile Decode Academy din Timișoara. Înscrie-te aici!


Alin Alexandru, CTO @Innobytealin-alexandru-innobyte

Atunci când întrebi un Web Developer cu ce se ocupă la birou, zi de zi, și care e cea mai frumoasă parte în meseria aceasta, îți va răspunde la ambele întrebări, scurt: că scrie cod.

O carieră în web development îți poate aduce multe beneficii, atât financiare, cât și personale.

IT-ul este unul dintre cele mai dinamice domenii de pe piață, un domeniu care permite oamenilor pasionați și valoroși să își aleagă compania în care vor să lucreze. Totuși, pentru a ajunge acolo, ce drum trebuie să parcurgă cei care aspiră la o carieră în web development?

Totul începe de la pasiunea pentru acest domeniu. În plus, un Web Developer trebuie să aibă gândire analitică și logică, să fie comunicativ și team-player.


Competențe necesare

 

Andrei Pfeiffer, Code Designer @[e-spres-oh]andrei-pfeiffer-espresoh

Pentru a fi un Web Developer complet, este nevoie să avem cunoștințe din toate fazele și nivelurile de dezvoltare ale unui proiect, cunoștinte care s-ar putea împărți în mai multe categorii.

Tehnice (hard-skills)

Aspectele tehnice sunt primele pe care le învățăm, sunt cel mai ușor de asimilat și în general se rezumă la a învăța un limbaj, o librărie sau un framework. Indiferent de specializare, va trebui să cunoaștem, într-o oarecare măsură:

 

  • HTML deoarece este limbajul de bază al web-ului, cel care definește structura și conținutul paginilor web, și chiar dacă nu ne lovim de probleme mai avansate de accesibilitate sau SEO, o bună cunoaștere a limbajului este esențială;
  • CSS deoarece este limbajul care decorează și stilizează conținutul paginilor, le „face să arate frumos”. Această parte este în general acoperită de către un Front-end Developer sau chiar de designeri, însă orice developer care lucrează cu pagini web ar trebui să înțeleagă CSS-ul;
  • JavaScript deoarece definește comportamentul paginilor și al aplicațiilor web, este utilizat de către toate API-urile implementate în browsere și nu cred că există website sau aplicație online creată în ultimii ani care să nu ruleze măcar o linie de cod JavaScript;
  • Cel puțin un limbaj de server, fie PHP, Java, ECMAScript/Node.js, Ruby, Python, etc, deoarece nu putem crea website-uri sau aplicații dinamice și interesante fără ele, nici măcar de dimensiuni mici;
  • Limbajul SQL este utilizat de majoritatea sistemelor de baze de date relaționale, cum ar fi MySQL sau PostGreSQL, iar fără acestea ne limităm destul de mult aria de cunoștințe și de posibilități în crearea soluțiilor software;
  • Un sistem de versionare, cum ar fi Git sau SVN pentru că, și o spun cu mâna pe inimă, consider că nu ar trebui să scriem software fără ele, indiferent dacă lucrăm într-o echipă sau suntem lupi singuratici;
  • Noțiuni de rețelistică pentru că întelegerea dintre request-uri sincrone, asincrone și full-duplex, HTTP, XHR, WebSockets sau comunicarea între un client și un server sunt elemente cu care ne întâlnim zi de zi și este important să înțelegem cum comunică sistemele între ele, fie că ne ocupăm doar de interfața grafică sau de administrarea unui sistem;
  • Linia de comandă este de multe ori necesară, fie pentru utilizarea sistemelor de versionare, pentru gestionarea mașinilor virtuale sau pentru automatizarea anumitor procese. Deși există aplicații cu interfață grafică pentru inlocuirea liniei de comandă, acestea sunt deseori limitate ca funcționalitate.

Pe lângă cele enumerate mai sus, există și 3 niveluri de abstractizare de care este bine să ținem cont:

 

  • Nivelul de jos definește capacitatea de a scrie cod brut și de a cunoaste un limbaj anume. Fără experiență la acest nivel, vom căuta tot timpul soluții implementate de alții și nu vom reuși să scriem propriile implementări atunci când nu găsim una gata făcută.
    Mai mult de atât, fără a cunoaște detaliile limbajului cu care lucrăm, vom avea de multe ori impresia că se petrec fenomene magice;
  • Nivelul mediu definește cunoașterea anumitor librării sau framework-uri. Acest lucru este esențial pentru a putea fi productivi, deoarece fără experiență la acest nivel, vom reinventa mereu roata și vom pierde timp, în loc să utilizăm soluții existente;
  • Nivelul înalt definește capacitatea de a avea o privire de ansamblu, de a putea structura arhitectura proiectului sau de a alege paradigma potrivită de programare pentru a rezolva o anumită problemă. Fără experiență la acest nivel, ne vom lovi mult prea târziu de probleme de integrare între 2 sisteme sau ne vom da seama tardiv de o decizie nepotrivită luată la un moment dat.

Pseudo-tehnice

Dincolo de aceste aptitudini și cunoștințe, există o categorie aparte, care este în strânsă legătură nu doar cu partea tehnică, ci și cu personalitatea fiecărui developer:

 

  • Testarea automată este un proces pe care îl practicăm zi de zi, fiind necesar pentru a ne demonstra în primul rând nouă, ca developeri, că ceea ce creăm și codul pe care îl scriem funcționează așa cum ne așteptăm;
  • Codul curat scris, ușor de citit, de înțeles, de modificat și de înlocuit este la fel de important, dacă nu mai important decât a scrie cod care doar funcționează cum trebuie;
  • Depanarea: mai devreme sau mai târziu, codul nostru nu va mai funcționa sau va trebui să reparăm o problemă apărută, așadar abilitatea de a o putea identifica este esențială;
  • Estimarea volumului de muncă sau a efortului necesar pentru găsirea unei soluții este o abilitate care în general se perfecționează odată cu experiența.


Non-tehnice (soft skills)

Alin Alexandru, CTO @Innobyte

Adesea mai valoroase decât cele tehnice, acestea sunt competențele care țin de abilități personale, iar printre cele mai importante ar fi următoarele:

  Bune abilități de comunicare

Chiar dacă jobul de Web Developer este unul tehnic, comunicarea este esențială. Fie că vorbim despre comunicarea inter-echipă, cu managerul de proiect sau cu clienții, este important ca developerii să reușească să comunice în mod eficient și personalizat, indiferent de interlocutor.

În timp ce comunicarea între colegi este facilă, fiind persoane familiarizate cu noțiunile tehnice, în comunicarea cu persoanele non-tehnice (spre exemplu clienții), este necesar ca limbajul să fie adaptat și pe înțelesul tuturor.

 

  Spirit de echipă

Jobul de web developer presupune muncă în echipă. Cu toate că developerii au propriile task-uri și responsabilități, este important ca aceștia să lucreze bine și atunci când vine vorba de lucrul în echipă.

Fie că vorbim despre împărțirea sarcinilor între colegi, ajutarea colegilor pentru a duce la bun sfârșit un task sau contribuirea la crearea unei atmosfere destinse în echipă, team player-ii sunt apreciați!

 

  Adaptabilitate și flexibilitate

Dacă ești un Web Developer (sau dacă îți dorești să fii), știi că în această industrie lucrurile se mișcă foarte repede. Astfel, adaptabilitatea este esențială.

Schimbarea poate implica învățarea unor noi tehnologii, schimbarea modului de lucru, modificarea sau multiplicarea task-urilor și a responsabilităților, schimbarea membrilor unei echipei, a proiectului sau chiar relocarea.

 

Atitudine pozitivă la locul de muncă

Atitudinea pozitivă este un skill important în orice companie, nu numai într-o companie de web development. Prin ce se traduce aceasta?

  • Socializarea cu colegii;
  • Celebrarea reușitelor cu restul echipei;
  • Identificarea oportunităților și concentrarea pe lucruri pozitive;
  • Amablitatea și politețea față de colegi, dar și disponibilitatea de a le sări în ajutor;
  • Încrederea în forțele proprii și în succesul proiectului/companiei.

  Dezvoltare continuă

Un Web Developer trebuie să fie interesat să învețe în permanență, să participe la training-uri și conferințe de specialitate, să urmeze cursuri, să fie la curent cu cele mai noi tehnologii și să obțină certificări.

 

Principalele responsabilități ale unui Web Developer


Alin Alexandru, CTO @Innobyte

  Lucrează în echipă împreună cu project manageri, web developeri, front end developeri, QA sau SysAdmini;

  Participă la ședințe interne sau cu beneficiarul proiectului, ședințe de code review sau ședințe pentru estimarea task-urilor viitoare;

  Analizează cerințele de business și identifică cele mai bune soluții pentru fiecare proiect în parte;

  Comunică statusul proiectelor și sesizează eventualele probleme care pot interveni;

  Finalizează task-urile în timpul agreat și livrează soluțiile tehnice.

 

Ce task-uri bifează un Web Developer într-o săptămână de lucru

 

Alin Alexandru, CTO @Innobyte

Task-urile unui Web Developer pot varia într-o săptămână, fiind influențate atât de proiectul la care lucrează, cât și de etapa în care se află acesta. Printre cele mai comune ar fi:

1) analizarea specificațiilor pentru feature-urile care trebuie dezvoltate;

2) estimarea efortului de dezvoltare prin descompunerea task-urilor;

3) dezvoltarea propriu-zisă, care include code review, teste unitare, scrierea documentației;

4) bug fixing, dacă este cazul;

5) coaching pentru colegii noi.

***

Dacă vrei să afli mai multe despre web development, poţi citi şi:

 Cum se lucrează într-o agenţie de web development

Personalităţi din development: Aaron Schwartz

Primii paşi în scrierea codului unui site


Cu o experiență de peste 10 ani în domeniu, Innobyte oferă soluții optime de web, mobile și e-commerce pentru companii de top din întreaga lume.

***

[e-spres-oh] este o companie românească de web development care oferă servicii de educational software pe piața din SUA. Echipa este formată din tineri creativi și entuziaști, a căror pasiune pentru inovație poate fi observată în proiectele pe care le creează.