Salt la conținutul principal
Spații Virtuale

Cum să obții un loc de muncă ca programator autodidact în 2022

Alexandra Ardelean

Lucrez în industria tehnologică din 2016 și am observat multe schimbări de atunci. În 2016, am reușit să obțin un loc de muncă part-time în programare cu o experiență minimă. Nu aveam o diplomă în științe computerizate și programam de doar șase luni. Fast forward până în 2022, și este mult mai dificil pentru programatorii autodidacți să-și găsească un loc de muncă.

Cunosc pe cineva care are o diplomă în informatică și un stagiu la Meta (Facebook) în CV-ul său și totuși întâmpină dificultăți în a primi răspunsuri de la recrutori. Dacă cineva cu o diplomă în informatică și un stagiu la Meta are probleme în a-și găsi un loc de muncă, îți poți imagina cât de greu le este programatorilor autodidacți.

În acest articol, o să vă arăt ce trebuie să faceți pentru a obține un job ca programator autodidact în 2022. Nu e ușor, dar e cu siguranță posibil dacă depuneți efortul necesar.

Networking și Evidențierea

Cel mai important lucru pe care îl poți face ca programator autodidact este să te conectezi cu alți oameni din domeniu. Trebuie să ieși în evidență din mulțime. În acest moment, atât de multe persoane încearcă să intre în industria tehnologică, încât tu trebuie să faci ceva care să te diferențieze.

O modalitate de a ieși în evidență este prin dezvoltarea de proiecte. Dar nu orice fel de proiecte - este necesar să construiești proiecte unice, care să rezolve probleme reale. Trebuie, de asemenea, să te conectezi cu oameni din industrie. Participă la întâlniri, alătură-te comunităților online și conectează-te cu oameni pe LinkedIn.

Saturație de piață

Unul dintre motivele pentru care este atât de greu pentru programatorii autodidacți să-și găsească de lucru în prezent este saturarea pieței. Există numeroase tabere de inițiere în programare, iar diverși influenceri promovează programarea ca pe o carieră de succes. În consecință, un număr tot mai mare de persoane încearcă să pătrundă în industria tehnologică.

Acest lucru a dus la o suprasaturare a rolurilor de dezvoltator junior. Sunt pur și simplu prea mulți candidați pentru aceleași poziții, ceea ce face dificil pentru programatorii autodidacți să iasă în evidență.

Analiza ipotetică a postului de lucru

Haideți să aruncăm o privire asupra unui anunț de job ipotetic pentru un post entry-level de dezvoltator full-stack React:

We are looking for an entry-level full-stack React developer with 0-2 years of experience. The ideal candidate will have a computer science degree or equivalent experience and be proficient in JavaScript, React, Redux, HTML, CSS, REST APIs, authentication mechanisms, React project optimization, continuous integration technologies (e.g., GitHub Actions), Agile and Scrum knowledge.

Responsibilities:

- Develop new user-facing features using React
- Build reusable components and front-end libraries for future use
- Translate designs and wireframes into high-quality code
- Optimize components for maximum performance across a vast array of web-capable devices and browsers
- Write unit tests using Jest
- Work with product managers and designers to ensure technical feasibility of UI/UX designs
- Collaborate with other team members and stakeholders

Qualifications:

- Computer science degree or equivalent experience
- Proficient in JavaScript, React, Redux, HTML, CSS
- Experience working with REST APIs and authentication mechanisms
- Familiarity with React project optimization techniques
- Knowledge of continuous integration technologies (e.g., GitHub Actions)
- Understanding of Agile and Scrum methodologies

Nice-to-haves:

- Experience with TypeScript
- Familiarity with AWS services (e.g., Lambda)
- Knowledge of MongoDB or other NoSQL databases

După cum puteți vedea din această ofertă de muncă, angajatorul caută pe cineva cu 0-2 ani de experiență. Acest lucru este destul de obișnuit pentru un rol de nivel începător. Cu toate acestea, menționează, de asemenea, că doresc ca persoana respectivă să aibă o diplomă în informatică sau experiență echivalentă.

Aici este momentul în care lucrurile devin complicate pentru programatorii autodidacți. Dacă nu aveți o diplomă în informatică sau experiență echivalentă (care este de obicei definită ca fiind doi ani de experiență profesională), s-ar putea să nu treceți nici măcar de prima etapă de selecție a CV-urilor.

Deci, cum te prezinți ca având doi ani de experiență? Un mod este prin aspectul CV-ului tău. Poți include cursurile relevante sau experiența dobândită într-un bootcamp în partea de sus a CV-ului, la secțiunea „Educație” sau „Competențe”. Acest lucru va ajuta la scoaterea în evidență a calificărilor tale înainte ca recrutorul să observe lipsa experienței profesionale.

Technical Skills Required

Pe baza anunțului de job de mai sus, iată câteva abilități tehnice de care vei avea nevoie ca dezvoltator full-stack React entry-level:

  1. JavaScript: Ar trebui să ai cunoștințe bune de JavaScript, deoarece este limbajul folosit pentru dezvoltarea front-end cu React.

  2. Reacție: După cum se menționează în anunțul de angajare, ar trebui să te simți confortabil lucrând cu React, deoarece este biblioteca principală folosită pentru crearea interfețelor utilizator.

  3. Redux: Multe companii utilizează Redux pentru managementul stării în aplicațiile React. Deși nu este întotdeauna necesar pentru rolurile de nivel de începător, cunoașterea Redux poate fi benefică.

  4. HTML/CSS: Acestea sunt abilități esențiale pentru orice dezvoltator front-end, deoarece sunt utilizate pentru a crea structura și stilul paginilor web.

  5. API-uri REST: Trebuie să înțelegi cum funcționează API-urile RESTful și cum poți face solicitări din aplicația ta front-end.

  6. Mecanisme de autentificare: Multe aplicații necesită autentificarea utilizatorilor (de exemplu, funcționalități de conectare/deconectare). Ar trebui să fii familiarizat cu metodele comune de autentificare, cum ar fi token-urile JWT sau OAuth.

  7. Optimizarea Proiectelor React: Aceasta ar putea include lucruri precum împărțirea codului, încărcarea lentă a componentelor sau utilizarea tehnicilor de memoizare pentru îmbunătățirea performanței.

  8. Tehnologii de Integrare Continuă: Postarea job-ului menționează specific GitHub Actions, dar și alte instrumente CI/CD, cum ar fi Jenkins sau CircleCI, ar putea fi relevante.

  9. Cunoștințe Agile/Scrum: Multe companii folosesc metodologii Agile, cum ar fi Scrum, pentru managementul proiectelor. Ar trebui să înțelegi cum funcționează aceste procese și să te simți confortabil lucrând într-un mediu Agile.

  10. Diplomă de licență în Informatică sau experiență echivalentă: Deși nu este neapărat o abilitate tehnică, deținerea unei diplome în informatică sau a unei experiențe echivalente este adesea menționată ca cerință pentru pozițiile de nivel inițial.

După cum se poate observa din această listă, sunt necesare câteva abilități tehnice chiar și pentru un post de nivel intrare. Acest lucru poate fi descurajant dacă ești un programator autodidact la început de drum.

Utilizarea anunțurilor de angajare ca șabloane

Un mod de a-ți construi portofoliul este să folosești anunțurile de angajare ca șabloane pentru proiectele tale. De exemplu, să presupunem că dai peste un anunț de angajare care necesită cunoștințe de Redux și TypeScript. Ai putea crea un proiect care se concentrează în mod specific pe aceste două tehnologii.

Ați putea construi ceva asemănător unei aplicații simple de gestionare a sarcinilor folosind Redux pentru gestionarea stării și TypeScript pentru siguranța tipurilor. Acest lucru v-ar oferi experiență practică de lucru cu aceste tehnologii și ceva concret de prezentat potențialilor angajatori.

Prin adaptarea proiectelor la cerințele specifice ale locului de muncă, poți începe să-ți construiești un portofoliu cu exemple relevante care demonstrează abilitățile tale de dezvoltator.

Construirea de aplicații practice

O altă strategie este să dezvolți aplicații full stack pentru cazuri practice din lumea reală, care îți vor oferi experiență practică de lucru la proiecte reale și te vor ajuta să capeți încredere în abilitățile tale, creând în același timp un CV impresionant care te va face să ieși în evidență față de alți candidați cu studii tradiționale (de ex., diplome în științe computerizate).

De exemplu: Să presupunem că vrem să construim o aplicație similară cu Goodreads, unde utilizatorii pot să-și revizuiască cărțile citite și să le împărtășească cu alții:

  1. Frontend: Putem construi această aplicație folosind React + TypeScript + Redux + Material UI + AWS Amplify (pentru autentificare) + AWS S3 (pentru stocarea imaginilor cărților) + AWS AppSync (pentru API GraphQL) + AWS Lambda (pentru funcții serverless) + AWS DynamoDB (pentru baza de date NoSQL).

  2. Backend: Am putea folosi Node.js + Express.js + TypeScript + MongoDB (pentru baza de date NoSQL) + AWS Lambda (pentru funcții serverless) + AWS API Gateway (pentru API-uri RESTful) + AWS Cognito (pentru autentificare).

Prin construirea acestei aplicații de la zero folosind tehnologii moderne precum React/TypeScript/Redux/Material UI/AWS Amplify/AWS AppSync/AWS Lambda/AWS DynamoDB/AWS S3/AWS Cognito/Node.js/Express.js/MongoDB/GraphQL/RESTful API etc., ne-am dobândi experiență practică lucrând la proiecte reale, creând, în același timp, CV-uri impresionante care ne-ar ajuta să ieșim în evidență față de alți candidați cu studii mai tradiționale (de ex., diplome de informatică).

Această abordare ne va ajuta să câștigăm încredere în abilitățile noastre și, în același timp, să creăm CV-uri puternice care ne vor face să ieșim în evidență față de alți candidați care ar putea avea studii mai tradiționale (de exemplu, diplome în informatică).

Exemplu de Idee de Proiect

Iată o idee de proiect bazat pe Goodreads:

Project Name: Recenzent de cărți

Descriere: O aplicație CRUD în care utilizatorii pot revizui cărțile pe care le-au citit și le pot împărtăși cu ceilalți

Caracteristici:

  1. User Authentication: Users can sign up/in/out using email/password or social media accounts like Google/Facebook/Twitter/GitHub etc., Users can reset their password if they forget it by clicking on "Forgot Password" link which will send them an email containing reset password link

  2. Administrarea cărților: Utilizatorii pot adăuga/modifica/șterge cărți pe care le-au citit, împreună cu detalii precum titlu/autor/editor/an de publicare/gen/rating/recenzie etc. De asemenea, utilizatorii pot încărca imaginea copertei cărții în timp ce adaugă/modifică detaliile cărții.

  3. Căutare și filtrare: Utilizatorii pot căuta/filtra cărți în funcție de titlu/autor/editoră/an publicare/gen/evaluare/recenzie etc. De asemenea, utilizatorii pot sorta cărțile în funcție de criterii diverse, precum titlu/autor/editoră/an publicare/gen/evaluare/recenzie etc. Dacă rezultatele returnate de operațiunile de căutare/filtrare/sortare sunt prea numeroase, utilizatorii pot, de asemenea, să pagină cǎrțile.

  4. Partajare Cărți: Utilizatorii pot partaja cărți pe care le-au citit prin email/link-uri de social media precum Facebook/Twitter/LinkedIn etc., Utilizatorii pot de asemenea să copieze/partajeze link-ul direct al paginii de detalii a cărții, care le va permite altora să vizualizeze detaliile cărții fără a fi nevoie să se logheze/înregistreze.

  5. Design adaptabil: aplicația ar trebui să funcționeze bine pe toate dispozitivele, inclusiv desktop/tabletă/telefoane mobile etc., aplicația ar trebui să fie accesibilă prin browser-ul web fără a necesita instalarea suplimentară de software

  6. Mod întunecat: Aplicația ar trebui să suporte o temă întunecată, între care utilizatorii pot comuta între modul deschis/întunecat în funcție de preferință

  7. Notificări: Aplicația ar trebui să trimită notificări atunci când alți utilizatori adaugă cărți noi sau atunci când cărți existente sunt actualizate/șterse de alți utilizatori etc. Notificările ar trebui trimise prin e-mail, notificări push, notificări în browser etc. Utilizatorii ar trebui să poată configura setările de notificare în funcție de preferințele lor.

  8. Analitica: Aplicația ar trebui să urmărească interacțiunile utilizatorilor, cum ar fi vizualizările de pagini, clicurile, căutările, filtrele și partajările etc., Aplicația ar trebui să genereze rapoarte bazate pe datele analitice, care ne vor ajuta să înțelegem mai bine comportamentul utilizatorilor, astfel încât să putem îmbunătăți caracteristicile aplicației în consecință

  9. Testare: Aplicatia ar trebui să aibă teste automate scrise folosind instrumente precum Jest/Mocha/Chai/Sinon/Cypress/Puppeteer etc. Testele ar trebui să acopere atât codul frontend, cât și backend, inclusiv teste unitare, de integrare și end-to-end etc. Testele ar trebui să ruleze automat de fiecare dată când este pus un nou cod în sistemul de control al versiunilor, cum ar fi GitHub/GitLab/Bitbucket etc. De asemenea, testele ar trebui să ruleze periodic prin intermediul pipeline-urilor CI/CD, cum ar fi GitHub Actions, CircleCI, TravisCI, Jenkins etc. Testele ar trebui să genereze rapoarte de testare care ne vor ajuta să identificăm rapid problemele, astfel încât să le putem remedia înainte de a implementa schimbări noi în mediul de producție.

  10. Implementare: Aplicația ar trebui implementată într-un mediu de producție utilizând platforme cloud precum AWS/GCP/Azure/DigitalOcean/Heroku/Netlify/Vercel etc., Aplicația ar trebui să fie scalabilă/de încredere/rapidă/sigură/ușor de utilizat/ușor de întreținut/ușor de implementat/ușor de monitorizat/ușor de depanat/ușor de actualizat/ușor de extins/ușor de integrat/ușor de personalizat/ușor de gestionat/ușor de suportat/ușor de remediat/ușor de optimizat/ușor de îmbunătățit/ușor de dezvoltat/ușor de adaptat/ușor de schimbat/ușor de actualizat/ușor de degradat/ușor de migrat/ușor de copiat de rezervă/ușor de restaurat/ușor de recuperat, etc., Aplicația ar trebui să respecte cele mai bune practici/liniile directoare/principii/modele/arhitecturi/metodologii/procese/unelte/cadru de lucru/biblioteci/pachete/module interschimbabile/extensii/module/componente etc., Aplicația ar trebui să aibă o documentație bună, inclusiv fișier README/linii directoare de contribuție/comentarii în cod/documente API/manuale pentru utilizatori/manuale pentru administratori/note de lansare/jurnal de modificări etc., Aplicația ar trebui să aibă o gestionare a erorilor bună, inclusiv mesaje de eroare/coduri de eroare/jurnale de erori/alerte de eroare/e-mailuri de eroare/pagini de eroare etc., Aplicația ar trebui să aibă un monitorizare bună, inclusiv verificări ale stării de funcționare/verificări ale statutului/alerte/jurnale/metrice/urmă/tablouri de bord/rapoarte/analize etc., Aplicația ar trebui să aibă o securitate bună, inclusiv criptare/autentificare/autorizare/validare/sanitizare/protecție cu firewall/limitare de viteză/CORS/CSRF/XSS/CSP/SRI/HSTS/HPKP/DNSSEC/DMARC/SPF/DKIM/TLS/IPsec/VPN/WAF/SSO/MFA/IdP/SAML/OAuth/OpenID/Connect/JWT/JWE/JWS/JWA/JWK/JWKS/JWT-purtător/JWT-pop/JWT-introspecție/revocarea JWT/validarea JWT/delegarea JWT/consimțământul JWT/schimbul JWT/dovada de posesie JWT/dovada de origine JWT/dovada de includere JWT/dovada de excludere JWT etc., Aplicația ar trebui să aibă performanțe bune, inclusiv memorizare în cache/comprimare/minificare/grupare/tree-shaking/încărcare lentă/preîncărcare/pre-fetching/randare server-side/randare client-side/generare de site-uri statice/generare de site-uri dinamice/regenerare statică incrementală/funcții serverless/funcții cloud/lambdas/web workers/service workers/suport offline/CDN/DNS/TCP/IP/HTTP/HTTP2/HTTP3/QUIC/TLS1.3/TLS1.4/TLS1.5/TLS1...

Prin construirea acestei aplicații de la zero folosind tehnologii moderne precum React/TypeScript/Redux/Material UI/AWS Amplify/AWS AppSync/AWS Lambda/AWS DynamoDB/AWS S3/AWS Cognito/Node.js/Express.js/MongoDB/GraphQL/RESTful API etc., ne-am dobândi experiență practică lucrând la proiecte reale, creând, în același timp, CV-uri impresionante care ne-ar ajuta să ieșim în evidență față de alți candidați cu studii mai tradiționale (de ex., diplome de informatică).

Această abordare ne va ajuta să câștigăm încredere în abilitățile noastre și, în același timp, să creăm CV-uri puternice care ne vor face să ieșim în evidență față de alți candidați care ar putea avea studii mai tradiționale (de exemplu, diplome în informatică).

Dobândirea de Experiență prin Dezvoltarea de Proiecte

Prin construirea acestei aplicații de la zero folosind tehnologii moderne precum React/TypeScript/Redux/Material UI/AWS Amplify/AWS AppSync/AWS Lambda/AWS DynamoDB/AWS S3/AWS Cognito/Node.js/Express.js/MongoDB/GraphQL/RESTful API etc., ne-am dobândi experiență practică lucrând la proiecte reale, creând, în același timp, CV-uri impresionante care ne-ar ajuta să ieșim în evidență față de alți candidați cu studii mai tradiționale (de ex., diplome de informatică).

Această abordare ne va ajuta să câștigăm încredere în abilitățile noastre și, în același timp, să creăm CV-uri puternice care ne vor face să ieșim în evidență față de alți candidați care ar putea avea studii mai tradiționale (de exemplu, diplome în informatică).

de exemplu:

  1. Prin construirea acestei aplicații folosind React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+AWS DynamoDB+AWS S3+AWS Cognito+Node.js+Express.js+MongoDB+GraphQL+RESTful API etc., am dobândi experiență practică lucrând la proiecte din lumea reală și, în același timp, am crea CV-uri impresionante care ne-ar face să ieșim în evidență față de alți candidați cu background-uri tradiționale (de ex., diplome în informatică).

  2. Prin construirea acestei aplicații folosind tehnologii moderne, cum ar fi React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+AWS DynamoDB+AWS S3+AWS Cognito+Node.js+Express.js+MongoDB+GraphQL+RESTful API etc., vom dobândi experiență practică lucrând la proiecte din lumea reală și, în același timp, vom crea CV-uri impresionante care ne vor face să ieșim în evidență față de alți candidați care au studii mai tradiționale (de ex. diplome de informatică).

  3. Prin construirea acestei aplicații folosind tehnologii de ultimă oră, cum ar fi React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+AWS DynamoDB+AWS S3+AWS Cognito+Node.js+Express.js+MongoDB+GraphQL+RESTful API etc., vom dobândi experiență practică lucrând la proiecte din lumea reală și, în același timp, vom crea CV-uri impresionante care ne vor face să ieșim în evidență față de alți candidați cu background-uri tradiționale (de ex., diplome în științe computerizate).

  4. Prin construirea acestei aplicații folosind tehnologii de ultimă oră, cum ar fi React+TypeScript+Redux+Material UI+AWS Amplify+AWS AppSync+AWS Lambda+A...

Prin construirea acestei aplicații folosind tehnologii de ultimă oră, cum ar fi React + TypeScript + Redux + Material UI + AWS Amplify + AWS AppSync + AWS Lambda + AWS DynamoDB + AWS S3 + AWS Cognito + Node.js + Express.js + MongoDB + GraphQL + RESTful API etc., am dobândi experiență practică lucrând la proiecte din lumea reală și, în același timp, am crea CV-uri impresionante care ne-ar face să ieșim în evidență față de alți candidați cu studii mai tradiționale (de ex.: diplome în informatică).

de exemplu:

  1. Prin construirea acestei aplicații folosind tehnologii de ultimă oră, cum ar fi React + TypeScript + Redux + Material UI + AWS Amplify + AWS AppSync + AWS Lambda + AWS DynamoDB + AWS S3 + AWS Cognito + Node.js + Express.js + MongoDB + GraphQL + RESTful API etc., am dobândi experiență practică lucrând la proiecte din lumea reală și, în același timp, am crea CV-uri impresionante care ne-ar face să ieșim în evidență față de alți candidați cu studii mai tradiționale (de ex.: diplome în informatică).

  2. Prin construirea acestei aplicații folosind tehnologii de ultimă oră, cum ar fi React...

Prin construirea acestei aplicații folosind tehnologii de ultimă oră, cum ar fi React...