Cărți preferate

HTML & CSS - carte favorita
JavaScript & Jquery - carte favorita
Fullstack React - carte preferata
Clean Code - carte preferata
2022-03-16

Cum să înveți programare de la zero

Salut lume

Și zici că vrei să înveți programare nu? Și vrei să faci asta de la zero? Cel mai probabil ai ajuns în locul în care trebuie și articolul ăsta este pentru tine doar că nu te va învăța programare pe loc. În schimb îți va da câteva idei despre joburile existente în acest domeniu, despre ce cunoștințe ai nevoie pentru un anumit job, despre limbajele de programare folosite și poate te va ajuta în decizia de a alege ceea ce vrei să faci. Și dacă vei reuși să te decizi într-o anumită direcție vei vei putea să înveți programare de la zero. Îți va fi mai simplu așa pentru că te vei putea pregăti efectiv pentru un anumit job încă de la început fără să trebuiască să rătăcești aiurea prin sute de tutoriale de pe youtube doar ca să îți dai seama că mai ai nevoie de încă un tutorial.

Ideea este că atunci când vorbim despre domeniul IT la modul „lucrez în IT” conceptul este destul de larg și sub umbrela lui se află o grămadă de specialități și joburi de diferite categorii pentru care ai nevoie de cunoștițe elementare de programare sau cunoștințe avansate de programare, ai nevoie de cunoașterea unui anumit limbaj de programare sau e foarte posibil să nu trebuiască să știi unul.

Așa că mai jos ți-am pregătit o listă de joburi din domeniul IT și după ce îți vei face o idee cam ce se întâmplă pe acolo vei putea trece raspunsul întrebării „cum să învăț programare de la zero” Așa că haide să trecem la lista de joburi și cam ce presupune fiecare din ele.

1. UI/UX Designer

Jobul de UI/UX developer presupune implicarea în procesul de creație al unei aplicații la nivel conceptual. Cu alte cuvinte asta însemnă că un UI/UX Designer crează la nivel conceptual paginile unei aplicații sau a unei pagini web în funcție de nevoile și preferințele clientului, creează structura vizuală a paginilor respective, crează designul și propune diferite soluții pentru felul în care să arate o aplicație la modul general, poate crea de asemenea diferite resurse folosite de programatori pentru implementarea designului printre care imagini, scheme de culori, componente, vectori sau de asemenea apoate crea un design system. De asemenea acest job poate să presupună și crearea unui sistem prin care să transmită programatorilor informații specifice despre culori, distanțe dintre elemente folosite, textul care trebuie adăugat.

Toolurie folosite de un UI/UX Designer pot fi următoarele: Abobe Photoshop, Adobe Inkscape, Figma, Invision, Zeplin. Nu o să dau mai multe detalii legat de aceste instrumente. De asemenea aș vrea să precizez ca lista asta poate fi foarte diferită...unii designeri folosesc cu totul și cu totul alte instrumente ... eu le-am menționat doar pe cele de care m-am atins sau am vazut colegi care au mai lucrat cu ele.

Un lucru util de menționat este faptul că e posibil ca anumite firme să aibă așteptarea ca un UX/UI Designer să aibă abilitatea de tranforme un design (de obiceti atunci când vorbim de design web) într-o pagina web statică cu funcționalități limitate care mai apoi să poată fi folosite de către FE Developeri sau BE Developeri ca să adauge restul de funcționalități. Se întîmplă mai puțin asta în zilele noastre dar e posibil.

2. FE Developer

Jobul de FE developer presupune dezvoltarea de aplicații web. Asta înseamnă că un FE developer ar trebui să fie capabil să implementeze desingul oferit de UX/UI, ar trebui să fie capabil să facă pagina web să funcționeze conform specificațiilor și de asemenea ar trebui să fie capabil să implemeteze diferite metode de comunicare dintre aplicația web și alte servicii. De exemplu partea de login presupune faptul că un utilizator introduce un user și o parola iar aplicația trimite datele respective la un server iar serverul trimite un răspuns iar in funcție de acest răspuns te lasă să faci anumite lucruri sau nu.

Tehnologiile folosite de un FE developer sunt urmatoarel: HTML, CSS, JavaScript, React, Angular, Vue. Acestea sunt doar câteva dintre ele și în funcție de proiect poate va trebui să înveți și alte lucruri.

3. BE Developer

Un BE Developer se ocupa de construirea de sisteme care preiau, proceseaza, combină și trasmit mai departe informațiile din bazele de date către alte servicii și invers. Munca este destul de complexă asta pentru că presupune necesitatea cunoașterii unor limbaje de programare de genul Java, C#, Node, C++, Python etc și pe lângă asta mai este nevoie și de cunoașterea conceptelor de construire a aplicațiilor. Un alt lucru care adagă complexitate este faptul că de cele mai multe ori un anumit limbaj de programare vine cu o librarie (framework) în spate.

4. Database developer/administator

Un DB developer se ocupă cu bazele de date. Jobul presupune crearea bazelor de date, menținerea lor, interogarea astfel încât să îți trimită datele de care ai nevoie. De cele mai multe ori proiectele pe care am lucrat aveau baze de date relaționale și foloseau limbajul SQL dar există și baze de date nerelaționale (ex Mongo DB). Jobul este complex mai ales pentru aplicații care au milioane sau miliarde de înregistrări într-o bază de date asta pentru că stocarea trebuie să fie făcută eficient astfel încât să permită o interogare eficientă atunci când este nevoie.

Tehnologii folosite: SQL, MongoDb etc..

5. Embeded developer

Un embeded developer se ocupa cu scrierea de programe care fac legătura între hardware (partea fizică a aparatelor pe care le folosim de zi cu zi) și restul aplicațiilor software. Programele scrise de un embeded developer pot să fie folosite pentru mașini de spălat, aspiratoare, telefoane mobile, modemuri, mașini etc... Jobul este foarte complex din două motive. Primul ar fi că trebuie să știi cât de cât electronică și cum funcționează la nivel fizic calculatoarele și în al doilea rând ar trebui să știi foarte bine limbajele de programare C, C++ și Assembly. Părerea mea că ceea ce face un acest tip de developer este magie...:))) magie care e foarte complexă.

6. Cloud developer

Jobul de cloud developer este iarăși unul foarte complex. Spun asta pentru că ai nevoie de cunoștințe ce țin de BE, FE, baze de date, rețele, microservicii, creare de sisteme automate pentru implementarea de noi funcționalități proiect și integrarea lor în proiectul folosit de lumea reală. Instrumente și tehnlologi de care vei auzi atunci când se vorbeește despre cloud develope: AWS, AZURE, Google Cloud, Serverless, Docker, Kubernetes

7. Software tester

Rolul unui software tester este acela de a valida munca programatorilor prin verificarea cerințelor proiectului și verificarea dacă acele cerințe au fost implementate în funcționalitate. De asemenea un software tester trece prin aplicațiile construite și verifică dacă produsul este la calitatea cerută de client, descoperă defectele și le documentează și de asemenea poate să scrie teste automate folosind diferite tehnologii astfel încât atunci când apar modificări și noi cerințe să se asigure că acele noi funcționalități adăugate nu strică ceea ce deja există pe proiect.

Un lucru care merită menționat este faptul că validarea se poate face manual sau prin teste automate.

Pentru a lucra ca si software tester nu îți trebuie neapărat partea de programare dar după părerea mea cred ca este utilă mai ales dacă vrei să începi să faci testare automată.

8. Data Scientist

Jobul unui data scientist este acela de a prelua informațiile din bazele de date, de a le procesa și analiza și a trage anumite concluzii, de a crea modele sau algoritmi care să facă diferite alte lucruri. Exemplele pe care pot să le dau ar fi algoritmii de recunoaștere facială și nu numai (pot si algoritmi de recunoaștere a unor defecte a unor produse din procesele industriale), pot fi de asemenea algoritmi care să conducă mașini, algoritmi care să îmbunătățească de exemplu consumul de combustibil și multe altele.

Jobul este unul destul de complex asta pentru că implică cunoștințe din mai multe domenii printre care baze de date, statistică, matematică, programare, algoritmică și în funcție de ceea ce trebuie să faci probabil că mai ai nevoie și de anumite cunoștințe de business.

Lista asta de mai sus este mai mult sau mai puțin completă...sigur mai sunt joburi pe care nu le-am acoperit dar acestea mi se pare mie că sunt cele mai populare.

Bun...acum că am stabilit care sunt lucrurile pe care le poți face în linii generale haide să vedem cum poți învăța programare de la zero sau mai bine zis cam ce ar trebui să înveți și cum să înveți pentru a scurta cât mai mult timpul dintre momentul în care te hotărăști că vrei să faci un anumit job și momentul în care te angajezi. Așa că haide să încercăm să răspundem la următoarea întrebare.

Cum poți învăța programare de la zero în funcție de jobul pe care îl vrei?

Haide să le luăm puțin pe rând....

  1. Pentru a învăța partea de UX/UI nu îți trebuie neapărat să știi programare dar ar fi util să știi de exemplu HTML, CSS și JavaScript pentru cazul în care vrei să faci niște machete funcționale a designului pe care îl ai de făcut. Ceea ce trebuie să înveți sunt conceptele despre web design, wireframing și pe lângă asta ar trebuie să ai abilitățile necesare ca să te poți descurca cu softurile folosite în industrie pentru design.
  2. Pentru a deveni un FE developer trebuie să înveți prima dată HTML și CSS ca să întelegi foarte bine cum creezi și cum implementezi structura unei pagini web. După ce stăpânești foarte bine următorul pas ar fi să înveți JavaScript și de asemenea cel mai probabil va trebuie să înveți un framework sau o librarie din categoria React, Angular, Vue. Sunt mult mai multe dar acestea sunt cel mai folosite și dacă ești cât de cât competent în oricare dintre îți va fi foarte ușor să îți găsești un job.
  3. Pentru rolul de BE developer trebuie să știi unul dintre limbajele de programare care se folosesc de obicei pe servere și de asemenea mia trebuie să știi și librariile sau frameworkurile asociate. Poți alege unul dintre limbajele ce rulează pe server de exemplu: C# cu frameworkul .NET, Java cu Java EE sau Java Spring, Node cu Express, Nest (probabil ca mai sunt și altele), ruby cu frameworkul rails, PHP cu Symfony, Laravel, Python cu Django etc. Sugestia mea ar fi să începi să folosești unul dintre limbajele care e cel ami probabil să îți aducă un job mai repede așa ca recomand JAVA, NODE, PHP. Ce e important de ținut minte aici...e mai mult o sugestie care îți va ușura viața ar fi să ai habar și de partea de FE pentru că îți va fi dde folos.
  4. Pentru un rol de database developer cred că trebuie să știi foarte bine SQL și de asemenea un limbaj de programare pentru BE. De obicei oamenii care ajung database developeri fac aceasta tranziție de pe un rol de BE developer dar nu e bătută în cuie această tranziție. Știu oameni care au intrat direct de la facultate ca și administratori de baze de date. Ce trebuie să înveți dacă vrei acest rol? Păi începe cu MYSQL și de asemenea un limbaj de programare de BE.
  5. Sincer nu știu ce să zic foarte multe despre rolul de embeded software developer...nu prea am avut tangeță cu această zonă. Cred ca e posibil să înveți singur dar e puțin probabil să reușești daca nu ai înclinație spre așa ceva. Spun asta pentru că rolul acesta implică cunoștințe destul de avansate de programare, electronică și arhitectură de calculatoare. Aici cred că ar trebuie să înveți C și C++ pentru început foarte bine și probabil de acolo îți poți extinde cunoștințele.
  6. Pentru rolul de cloud developer nu cred că poți învăța de unul singur de la zero fără să fi lucrat în domeniu înainte. Asta pentru că trebuie să știi cel puțin un limbaj de programare, trebuie să știi cum se lucrează în echipă, cum e organizat un proiect și de acolo poți face trecerea spre acest tip de job. Ca să înveți partea asta probabil îți trebuie ceva experiență sub centură, cel puțin 3 ani zic eu și de acolo să începi tot ce trebuie să știi ca să poți deveni expert în cloud. Dacă nu știi ce e cloud pe scurt ar fi că toată infrastructura de care are nevoie o firmă care are un produs virtual (calculatoare, rețele, servere) este mutată la terțe companii gen Amazon, Google, Microsoft. Lucrul asta aduce unele avantaje ce țin de costuri dar poate aduce și dezavantaje...dar totul ține până la urmă de ceea ce vrei să obții.
  7. Pentru rolul de software tester trebuie să înveți câteva lucruri despre princiipel de bază de țin de testarea software. După aceea ar fi bine să începi să îți faci puțină experiență cu Selenium și/sau Jmeter, mai apoi poți trece la concepte mai avansate și tooluri mai avansate de genul Cucumber, Cypress. Pașii ar fi urmatorii: să înveți bazele testării software ... poți găsi foarte ușor cărți pe tema asta pe internet...după aceea să te joci puțin cu selenium și cu Jmeter și după ce ai cât de cât fundațiile teoretice poți aplica pentru niște joburi. Cel mai probabil îți vei găsi un job de junior tester dar vei învăța foarte multe acolo și vei putea progresa.
  8. Pentru a deveni un data scientist trebuie să ai experiență cel puțin într-unul dintre domeniile de mai sus. Trebuie să știi un limbaj de programare, trebuie să știi să lucrezi cu bazele de date, cu statistica și matematica. Poți începe să lucrezi ca și programator și să faci tranziția de acolo sau poți face facultate sau de ce nu poți face un curs de programare și după ceva ani de muncă să începi să înveți lucrurile necesare pentru a deveni un data scientist.

Bun...am zis multe și am scris multe în acest articol dar sper că ți-am oferit cât de cât un pic de claritate.

Cum să înveți programare de la zero pană la urma?

Alege ce vrei să faci din lista de mai sus și începe de acolo. Nu trebuie să fie neapărat o categorie din lista prezentată de mine pentru că lista asta poate nu conține unele joburi de care eu nu am habar dar trebuie să îți alegi o categorie și să începi de acolo căci altfel îți va lua foarte mult timp să învețit tot de peste tot și nu vei ajunge la nici un rezultat.

Nu uita că trebuie să începi cu lucruri mici și să exersezi în fiecare zi și după ce ai cât de cât habar să începit să mergi la un interviu, două ca să vezi cu ce se mănâncă această profesie și continui de acolo.

Bun...asta a fost tot...nu uita să te abonezi la newsletter prin una dintre căsuțele de pe aici.

Cu prietenie, Alex

Ți-a plăcut acest articol? Vrei mai mult?

Dacă îți plac materialele de aici și vrei să primești mai multe articole pe email sau dacă vrei să fii la curent cu ceea ce se întîmplă în aceasta comunitate atunci nu ezita să te abonezi la newsletter.

Îți voi trimite săptămînal materiale despre web development, web design, programare și multe altele astfel încât să reușești să îți dezvolți abilitați noi care să te ajute la job sau la pasiunile tale legate de programare.

Aboneaza-te la newsletter

Daca îți plac lucrurile pe care le-ai găsit pe aici și vrei mai mult atunci nu ezita să te abonezi la newsletter și să fii la curent cu ceea ce se întîmpla pe acest blog. Îți voi trimite săptamanal noile articole publicate pe blog, tutoriale scrise și video despre programare web și alte materiale despre cum poți reuși în acest domeniu al programarii web.

Așa că lasă-ți numele și adresa de email în formularul de mai jos și te voi ține la curent.