Se simte de la un km daca o firma face ce trebuie sau nu. E posibil sa dai pe un proiect urat, dar daca celelalte sunt in ordine poate esti exceptia.
In 2021 un proiect sanatos ar trebui sa aiba code review obligatoriu, unit teste la fiecare pull request (care sunt rulate automat si conditie obligatorie ca sa treaca la fiecare PR), contract testing daca ai microservicii sau teste e2e/smoke-uri rulate la fiecare build, smoke testing automat la release daca proiectul permite, un sistem de CI/CD care face build-ul si ruleaza automat testele si te anunta pe slack cand ceva cade, toate artefactele (pachetele npm de exemplu) sunt stocate pe un server al firmei cu artifactory/altceva si nu descarci random de pe npm. Pe frontend obligatoriu cat mai mult TypeScript cu prettier/linting la fiecare dev. Pe backend in mod ideal ai diagrame la endpoint-uri in documentatie, nu e doar codul. (asta inseamna ca s-a facut review la backend din punct de vedere al arhitecturii si securitatii) Proiectul cel mai bine e structurat pe trunk-based development, adica monorepo ca sa gasesti tot ce iti trebuie cat mai usor. Pe devops ar trebui sa ai om dedicat pe proiect, nu te bagi ca dev in pipeline de fiecare data cand e o problema. (ca pot fi probleme zilnic) Release-ul nu se face de developer ci de catre un program manager/manager/PO cu ajutorul unui buton care ia din env-ul de QA si pune codul in staging/prod. Orice proiect serios are minim 4 medii de lucru: develop, QA, staging si prod, dev-ul are control doar pana la/doar asupra unui pipeline (buton) de Promote to QA, in rest nu mai e al lui (in mod ideal ai cel putin un QA la fiecare dev care iti face testare de explorare/trece prin test case-uri sau le scrie si le automatizeaza). Pe fiecare env ar trebui sa se ruleze testele de smoke automat inainte si dupa un release. Release-urile obligatoriu trebuie sa poata fi restaurate dintr-un buton daca e o problema. Nu se face release vineri sau la sfarsitul programului. Dev-ul nu are acces la credentialele/log-urile de pe prod si nu are ce sa caute cu ssh pe serverele de prod. Exista un log analysis tool pe proiect in care se centralizeaza toate log-urile. Ca si procese ai un daily care ar trebui sa tina cat mai putin posibil, se face peer programming, ai sprint planning/refinement-uri cu product owner-ul, ai retrospectiva la sprint, ai un sprint de 2 saptamani sau mai mult cu retrospectiva la final. In mod ideal fiecare din echipa stie sa scrie teste end to end si exista o platforma cu test cases/test plan si o suita de teste sau se face cucumber/BDD. In mod ideal ai un one to one cu managerul saptamanal/la doua saptamani. Nu se lucreaza peste program si nu se lucreaza in weekend. Exceptie daca e nevoie de ceva release care se poate face doar in weekend. (dar doar cineva senior ar trebui sa faca release in weekend cu totul pregatit, adica planned maintance) Ai un salary review la 6 luni, ar trebui sa iti poti lua o zi libera oricand in timpul saptamanii si oricat daca anunti din timp. Ca si hardware iti trebuie minim 16Gb RAM cu un Core i7, doua monitoare (preferabil mai bun de 1080p) si 32Gb RAM daca ai kubernetes. La firmele care se respecta toata lumea are mac-uri de ultima generatie sau desktop/cloud server + laptop daca faci game development. O atentie foarte mare legata de scaunul ergonomic si masa, la birou ar trebui sa ai un scaun ergnomic (alea de 1500+ lei cu tetiera, nu chinezarii) si o masa reglabila. Inclusiv acasa unii ofera buget/scaunul de la birou.
La o firma mica serioasa poti intreba pe oricine sa te ajute, ai un intreg etaj care te ajuta daca poate. La o firma mare trebuie sa planifici un meeting despre aproape orice la inceput. Buddy-ul o sa iti explice cum functioneaza bucataria si o sa te ajute sa cauti in ce echipa trebuie sa cauti omul care te poate ajuta. Chiar o sa iti puna tot felul de meeting-uri inutile, one on one-uri care o sa te streseze ca sa vada daca lucrezi. Risti sa te intrebe daca vrei un training despre X fiindca a vazut ca ti-ar prinde bine si dupa stai in meeting-uri la care aproape adormi si iti vine sa iti tai venele. Intr-o firma mare trebuie sa iti faci o strategie personala, sa vezi ce accepti si ce nu ca totul are pro si cons. Trebuie sa ai grija ce faci ca e mare politica in echipa, adica daca apelezi la ajutorul cuiva trebuie sa te ridici la nivelul cerut de el, altfel cand trebuie o aprobare te rogi o saptamana de ei. La peer programming e greu daca unul cunoaste si celalalt nu codul, o sa te ia de prost la aproape fiecare meeting si o sa fie greu de lucrat cu unii oameni, in special cand nu ai alternativa.
Daca poti angajeaza-te din start la o companie foarte cunoscuta, o sa te ajute mult in CV. Daca nu poti la outsourcing conteaza mai mult proiectul si echipa decat firma.
Totusi cum in ziua de azi competitia e extrem de mare la nivelul de entry level, e.g 500 de candidati pe un post, cea mai buna strategie zic eu e sa te angajezi unde gasesti loc si se lucreaza cu ce iti place tie.