Cariera de programator

Vreau să încep să învăț programare. Doresc ca în viitor să pot lucra ca programator.

Ce se caută mai mult în România?
Cu ce limbaj ar trebui să încep?
Pentru un job ca acesta este necesar să ai liceul terminat la profil mate-info?

Cunosc putin din baza HTML & CSS. (chiar foarte putin)
La şcoală nu am făcut mai nimic, doar un an de html, în rest Excell (ceea ce consider eu că nu am nevoie).
Sper ca am postat unde trebuia. Va multumesc !

ce crezi ca ti-ar face placere sa dezvolti mai mult?

  1. web (ex: facebook.com - cel mai probabil vei face site-uri de prezentare dar am zis sa fiu optimist)
  2. desktop (ex: programe care se instaleaza local)
  3. mobile (ex: candy crush)
  4. gaming (ex: jocuri de pc/ps/xbox)
2 Likes

Recomand o facultate de profil. Invatatul fara ghidare si cu foarte putina motivare si aceea pe directii gresite, poate fi foarte putin productiv.

4 Likes

@kleampa , as merge pe desktop & gaming.
E vreo sansa sa ma angajez fara facultate?
@anon31094663 , multumesc de raspuns !

Trebuie sa stii engleza la perfectiune si sa inveti lucruri complexe. (adica sa stii sa iti organizezi timpul)
Ceea ce nu prea poti invata e cum sa gandesti logic si sa ai o intuitie pentru a rezolva probleme. (dar matematica si fizica te ajuta)

Nu in ultimul rand e ideal si daca citesti mult si esti creativ.

Eu personal nu recomand sa fii programator in viitor, in special daca nu crezi ca vei putea ajunge extrem de bun. Foarte multi au mers acum pe aceasta cale (in special oameni foarte inteligenti) si e pur si simplu o meserie ca oricare alta, dar are destul de multe dezavantaje :

  1. Iti distrugi sanatatea cu sedentarismul necesar
  2. Daca iti distrugi sanatatea iti distrugi si viata sociala (nu prieteni, nu comunicare, nu fete, nu locuri de munca alternative decente, esti la fel de necalificat ca unul care a fost agent de securitate la amanet, cel putin fara facultate)
  3. Banii vor fi doar in aplicatiile si site-urile pentru telefon, in rest nu te atingi de nimic serios fara sa fii extrem de bun.
  4. Jocurile au nevoie mai mult de artisti decat de programatori, nu e rau daca stii sa programezi, dar un artist 3d, animator e mult mai important. (in rest iarasi nu te atingi de lucruri care deja sunt programare serioasa fara sa fii extrem de bun)
  5. Cel putin in Romania nu prea exista locuri unde chiar ai vrea sa lucrezi, toti fac ceva la comanda, cu specificatii stricte, fara multe oportunitati. Salariile sunt cele mai mici din Europa (fara scutire de impozit, din cauza scutirii de impozit toti cauta doar oameni cu diploma ca sa ii poata mentine cu un salariu cat mai mic), iar posturi entry level nici nu exista sau nu vor mai exista. (mai rapid castigi la loterie decat sa prinzi un post entry level)
    In alte tari situatia e ceva mai buna, chiar si in Ungaria e mult mai buna situatia. (dar toti vor cobori la nivelul romaniei)
  6. E o meserie plina de paradoxuri, multilaterala, daca nu stii sa te vinzi, sa vorbesti, sa iti organizezi timpul, sa scrii, sa ai o personalitate interesanta si sa ii inveti pe altii poti sa fii cel mai bun programator din lume, tot nu faci multe. (in trecut nu era asa important, in viitor vor cauta cel mai mic defect al tau ca sa te compare cu altii)
  7. Cel mai accesibil mod de a fi programator e sa realizezi site-uri, problema e ca si site-urile se indreapta cu viteza maxima direct spre inginerie de soft, adica adio lucruri simple si profitabile.

Extrem de bun inseamna proiecte de succes, o facultate cu renume (nu astea din Romania fiindca te intereseaza renumele facultatii, nu ce se preda), cunostiinte teoretice aprofundate, memorie foarte buna, atentie la detalii, cercetare si inovare.

Salariile nu vor fi mai mari, doar vor scadea.

Avantajul major e ca iti poti realiza propriile proiecte fara cel mai mare cost, respectiv nu trebuie sa te increzi in ceva consultant ca sa stii pe ce cale te duci ca si antreprenor. Programarea e doar unul din multele cunostiinte necesare pentru a administra o afacere in viitor.

Un alt avantaj extrem de bun e ca totul e pe internet, exista carti foarte bune gratuite, cursuri video, cursuri interactive foarte bune iarasi gratuite sau la un cost redus (daca nu vrei sa fii pirat), cu un calculator de 1000 de lei si 2 monitoare ai practic tot ce iti trebuie ca sa faci orice ti-ai imaginat.

Daca te pasioneaza extrem de mult calculatoarele si vrei sa rezolvi probleme cu programe de calculator/roboti/jocuri probabil poti gasi o alternativa la a fi extrem de bun in viitor, daca nu esti nici super pasionat, nici nu te duci la facultate cu toata materia stiuta deja pe de rost o sa ajungi doar la o criza existentiala in 5-6 ani. Iar daca treci peste ea o sa lucrezi cine stie unde si la ce, numai programare nu o sa faci. (eu cel putin imi imaginez ca in China vor fi de 10 ori mai multi programatori care vor vorbi la perfectiune limba engleza ca populatia romaniei)

In fine, probabil aceleasi lucruri sunt valabile si la oricare alta meserie decent platita si daca cineva nu implementeaza corect venitul unic universal de baza vor fi oricum probleme foarte mari.

Ca sa iti raspund si mai direct:


Cam aceste lucruri se invata la o facultate de renume, ti se vor cere si tie la interviu daca cineva va angaja oameni fara diploma ca sa ii filtreze pe cei care stiu ceva programare dar nu sunt speciali.
Pana aici nu e nici o problema, e posibil sa inveti ce e acolo intr-o luna, doua daca inveti sistematic. Problema e ca daca tu nu esti in stare sa faci un mate-info, o facultate pot sa pariez pe orice ca tu nu o sa fii in stare sa stai pe scaun si sa inveti 2 zile 8-10 ore pe zi, nu sa stai 2 luni.

Alternativa e desigur sa faci proiecte calumea, de succes, bine promovate, estetice, sa ai prieteni care sa te promoveze. (chiar si asa nu e exclus ca cineva sa te testeze din toata materia de facultate, probleme grele fiindca tot vor fi multi care vor avea proiecte decente)

Alternativa mult mai buna (cam singura optiune realista in viitor) e sa fii antreprenor si sa iti faci prieteni cu care sa ai propriile proiecte, dupa propriul gust la care sa lucrati din pasiune si sa le monetizati.

3 Likes

Ce e sigur e că vei avea mult de învățat. Pentru meseria asta trebuie să dezvolți și o oarecare pasiune. Eu am început cariera de programator acum un an, dar asta după mulți ani de tachinări, orice făceam, oriunde ajungeam tot eram un pic atras de ea.
Încercă și un internship, găsești câteva pe site-urile de job-uri. Sunt și ceva firme care oferă cursuri de câteva luni și posibilitatea de angajare la ei după. Daca ești interesat am sa caut câteva, acum îmi scapă denumirile.
Spor!

1 Like
  1. Nu
  2. Nu
  3. Nu
  4. Nu neaparat
  5. NU, nu stiu unde ai lucrat sau cu cine ai avut contact dar de ce afirmi ca la noi nu prea exista locuri unde ai vrea sa lcurezi fara sa fi lucrat in 90% din locuri nu stiu.
  6. Nu trebuie sa fii cel mai bun programator din lume, nu trebuie sa fii cel mai bun intr-un domeniu pentru a excela. Scopul in viata nu e sa fii cel mai bun in ceva, ci sa te bucuri de “drum” si de challangeurile pe care le intampini. Ma rog, asta e urmarea sistemului nostru de invatamant in care te bate la palma sa fii cel mai bun din clasa. Sunt deacord insa ca e foarte bine sa stii sa te vinzi, sa vorbesti si sa iti organizezi timpul. Personalitatea interesanta ti-o creezi pe parcurs.
  7. E ok sa incepi prin a realiza site-uri, pentru un incepator e mai usor sa inteleaga ceva dar pe viitor, dupa ce treci un pic prin algoritmica, dupa ce vezi diferite aplicatii prin diferite tutoriale poti trece la lucruri mai serioase.

Va rog, nu mai descurajati oamenii in ceea ce vor sa faca, daca chiar n-o sa fie pentru ei aceasta meserie, acest hobby, acest stil de viata isi vor da singuri seama la un momendat. Nu mai urmati sistemul prost romanesc de a taia craca de la inceput cuiva(“nu vei fi niciodata un sportiv bun ca nu alergi sub 6s la 50m” “nu vei fi niciodata inotator bun ca nu ai aliura” etc etc). Orice lucru se poate invata in viata daca este dorinta, daca depui efort, daca iti doresti asta. Nu mai veniti cu concluzii trase dupa ureche de parca ati facut un studiu pe x mii de participanti si ati vazut care e tendinta gen “iti distrugi sanatatea”.
@isti37 cu siguranta nu sunt la fel de bun tehnic ca si tine din ce vad in posturile tale dar esti prea pornit pe a intoarce lumea din drum cand vrea sa faca ceva.

19 Likes

o atitudine corecta !

Sansa este, dar… vrei sa fii zugrav sau pictor? Vrei sa fii inginer sau sa sapi santuri?

Uite aici ceva care are elemente pe care le-ai gasi in ‘gaming’: https://compphys.go.ro/newtonian-gravity/
Daca o sa arunci o privire peste codul OpenGL o sa vezi ca necesita ceva cunostinte de matematica. In cazul asta e simpla geometrie si trigonometrie[^1], normal le obtii si in liceu, dar nu intotdeauna lucrurile vor fi atat de simple…

Sigur ca acum exista ‘game engine’-uri si ‘physics engine’-uri si cineva ar putea sustine ca nu mai e nevoie sa intelegi cum functioneaza, doar sa le folosesti ca maimuta. Am mari indoieli ca cineva care programeaza fara sa inteleaga ce se intampla are aceeasi eficienta ca cineva care intelege.

[^1]: Desi cred ca totusi operatori de rotatie si translatie in reprezentare matriceala pot depasi cunostinte de liceu, in ciuda faptului ca se face si algebra liniara in liceu, cu tot cu matrice. Se fac si grupuri in liceu dar daca scriu SO(3) majoritatea absolventilor de liceu o sa se uite… si o sa dea cu google.

3 Likes

De fapt “meseria de programator” in sine este perfect inutilă. Programarea de regula nu se face de dragul programării, mai degrabă aplicaţiile sunt un soi de “helpere” pentru activităţi care n-au nici cea mai mică legătura cu ştiinţa calculatoarelor.

De exemplu, sunt programator, ştiu la perfecţie C++. Mă ajută asta să fac un program de contabilitate, fără ajutorului unui expert contabil? Absolut deloc, pentru că n-am nici cea mai vagă idee cu ce se mănâncă contabilitatea. Mă ajută cunoasterea C-ului să automatizez un proces industrial? Highly unlikely, daca habar n-am ce naiba e procesul ăla. Şi aşa mai departe.

Matematica folosită în exemplul de mai sus de colegul @anon31094663 este acea disciplină suplimentară necesară pentru a implementa un anumit tip de aplicaţie. De exemplu, eu în 20 de ani n-am avut nevoie de acel tip de matematică.

În realitate, nu e nevoie să ştii foarte multe ca să poţi dezvolta aplicaţii, ci mai degrabă să ai o cunoaştere foarte profundă a colţişorului în care activezi. În opinia mea, competenţa unui programator nu este direct proporţională cu lărgimea orizontului cunoaşterii acestuia, poate chiar dimpotrivă - încercând să asimilezi prea multe nu aprofundezi nimic, adică ştii câte nimic din toate :slight_smile:

4 Likes

Pe langa limbaje de programare mai trebuie sa cunosti structuri de date si algoritmi cat si tehnici de programare. E bine sa fi autodidact dar cred ca trebuie sa incepi cu o facultate de profil care te va invata aceste lucruri mai repede si mai bine. In plus acolo iti vei forma un mod de gandire specific ce te va ajuta ulterior in gasirea solutiilor la probleme. Altfel nu stiu cat poti reusi sa faci fara sa ai o ghidare despre unde trebuie sa ajungi :wink:

3 Likes

Eu doar am precizat ca ori iei in serios ideea de a fi programator, ori o sa ai probleme mari in viitor daca vrei sa fii angajat intr-un loc serios. Adica mate-info, facultatea sunt doar un efort minim, chiar si cu ele vei avea probleme…

Desigur ca si antreprenor exista mai multe optiuni. (Dar in Romania se face totul posibil pentru a-i opri pe antreprenori)

Eu n-am zis nimic din statistici, am spus totul din experienta personala, sanatatea mea nu e cea mai buna, viata sociala e 0 daca nu fac altceva pe langa programare, proiectele care sunt viabile si din care iau mai mult de 100 de lei pe o zi de munca sunt pe mobile/aplicatii, am lucrat la modificarea catorva jocuri 3d si orice vizibil e mai mult scripting, iti trebuie foarte multa fizica si geometrie, in Cluj cel putin e jale cu locurile de munca, 0 entry level, poate in Bucuresti e mai bine…, am facut si reparat site-uri, inca nu m-am imbogatit din acest domeniu, iar cei pe care ii cunosc si au facut ceva sunt mai mult bisnitari cu papagal decat programatori.

1 Like

A pomenit destul de clar despre dezvoltarea de jocuri. Daca dezvolti 20 de ani jocuri si nu te lovesti de matematica respectiva, probabil ca ai dezvoltat jocuri la nivel de… solitaire. Ceea ce pana la urma se rezuma la diferenta dintre zugrav si pictor, dupa cum spuneam mai sus :slight_smile:

In mai toate domeniile unde se aplica programarea e cam asa. Poti sa lucrezi la sapat de santuri, sau la mult mai mult. Ai pomenit de ‘contabilitate’. Acolo poti ramane la nivel de baza de date simpla, ceva form-uri pentru introducere date si niste rapoarte simple, sau ajungi sa faci analize statistice pe volume mari de date pentru firme serioase, si atunci deja poate te lovesti de ceva matematica mai sus decat cea de liceu.

Cad despre largimea orizontului, depinde. Unii raman la sapat santuri toata viata. Acolo intr-adevar nu e nevoie de orizont larg.

Chestia asta cu lărgimea orizontului e relativă, desigur. De exemplu pe mine ma intereseaza doar C++, sockeţi, SQLite, FOX Toolkit şi Cairo, WinAPI si X11 API, fiecare dintre ele find un Univers in sine - pe unele le stăpânesc mai bine pentru că am avut răbdare să le aprofundez, pe altele abia le-am atins.

OpenGL/Vulkan/DirectX nu ştiu şi nici nu m-a interesat vreodata. Oracle? Nu. Java? Nu. Python? Nu. Node.js & friends? Nu. Aplicatii mobile native? Hmm. Am scris drivere? Nu. Sisteme de operare? Nu. Filesysteme? Nu. Firmware-uri? Nu. Inteligenţă artificială? Haha, bună gluma. LUA, Haskel, Ruby, D, Scala, Rust, Go, Perl, Objective-C, C#, Swift, TCL/Tk? Hmm, doar am citit despre ele. Ar trebui sa ma intereseze toate astea? Habar n-am. Mai sunt şi alte tehnologii pe care nu le-am atins? Ohoooo…

Şi acum să comparăm ce am atins sau nu. Păi… Aş putea ajunge la concluzia că degeaba sunt in IT de peste 20 de ani, că practic a trecut pe lângă mine cam tot ce se putea, orizontul meu este absolut insignifiant :slight_smile: Ăia care propovăduiesc orizonturi largi habar n-au ce vorbesc…

1 Like

Foarte pe scurt: nasol (se refera la ce ai fost tu expus de-a lungul timpului). Dar asta tine de ce ai avut de facut, asta este…

Mai nasol e cand unul care se ocupa de inginerie software (sau crede ca se ocupa) o confunda cu o insiruire de limbaje si librarii/api-uri.

Asta mi-a plăcut să fac, asta am făcut. Şi nu ma interesează să “fac inginerie software” (ce-o mai fi şi aia), ci mă interesează să fac aplicaţii care să funcţioneze repede, bine şi fără bug-uri, iar clientul/utilizatorul să fie mulţumit. Cunosc o groază de aplicaţii over-engineered al căror autor dacă eram, aş fi fugit să mă ascund în munţi. De ruşine :slight_smile:

1 Like

Am cunoscut si eu unul care credea ca stia C++ bine. A invatat programare urmand ceva curs, nu la nivel de facultate. A scris un program care functiona repede si bine. Atat de repede incat la incarcarea unui fisier de date dura si peste 2 ore. Bine, de obicei mergea relativ repede. Dar erau situatii mai complexe cand… necunosterea structurilor de date si algoritmicii i-au cam jucat feste. Am pus un profiler la lucru si dupa modificarea de rigoare a structurilor de date si algoritmilor (ce era in codul ala, cautare secventiala in liste… etc) s-a ajuns de la peste doua ore la vreo… 6 secunde. Asa ca se poate scrie cod cat se poate de lent si in C++. Under-engineered :slight_smile:

2 Likes

Pai cine vorbeşte de programe scrise in C++ in Basic-style. Eu pledez pentru echilibru şi compromis. Bineînţeles că trebuie să ai bază solidă de cunoştinţe legată de programarea în general, nu neaparat legata de C++. Bineinţeles că trebuie să citeşti despre algoritmi şi structuri de date, ar fi chiar culmea să te apuci să faci aplicaţii inainte să afli diferenţa dintre un vector, o listă dublu înlănţuită şi un hash - o să ai nevoie de ele mereu. Ideea e că nu este necesar în toate cazurile să ai cunoştinţe avansate de matematică, nici măcar de liceu. Poate e bine să le ai, dar nu-i obligatoriu.

1 Like

Nu e nevoie, daca vrei sa fii zugrav. Sau sapator de santuri, metaforic vorbind.

Categoric poti sa ramai cu liceul, sa inveti ceva programare frontend si eventual backend si sa faci pe indianul sapator de santuri toata viata. Nu e nevoie nici macar de C++. Inca se arunca muncile de jos catre tarile din lumea aia mai necivilizata… e nevoie sa fie si dintre aia care fac partile plictisitoare :slight_smile:

Pentru ceilalti, exista facultati pe unde se fac materii precum metodele numerice, care celor mai sus mentionati nu le folosesc deloc. Exact cum unul care da la pila nu prea are ce face cu materia numita ‘rezistenta materialelor’. Si din nou se pune intrebarea, vrei sa dai la pila sau sa fii inginer mecanic?

1 Like

Well, depinde. Vrei să dai lovitura cu o aplicaţie făcută “la pilă” sau vrei să fii inginer-şomer inalt calificat? :slight_smile: Sigur, nu generalizez, dar se poate întampla.

2 Likes