Nu reusesc sa invat programare cum trebuie

Reply la post-ul lu John:

Nu este clar unde vreau sa ajung din toate post-urile de pana acum ?

Sa cunosc programare suficient de bine incat sa ma angajez in domeniu = goal.
Ce trebuie sa stiu pentru asta + in ce ordine sa invat = roadmap

Ce nu imi e clar e cat trebuie sa stiu, unde ma opresc si zic ca gata , pot sa aplic, si ce e ok sa nu stiu, acum la inceput.

Asta este scopul principal al acestui post:

Eu acum vreau sa iau o decizie daca sa incerc sa ma angajez full time pe QA (sau poate si altceva) si vad pe parcurs cu programarea, sau daca pot gasi o posibilitate, eventual si daca ma mai poate ajuta cineva sa continui sa invat, mainly sa fac aplicatii inteleg de pe aici, si sa lucrez ceva part-time.

De aceea am cerut sfaturi pe aici, sa imi dau seama daca e posibil sa continui sa invat programare, ce am gresit pana acum, si ce as putea face ca sa reusesc.

Unde sunt nu stiu sa raspund, nu inteleg la ce te referi, am niste cunostinte, pot detalia daca e, nu stiu daca la procesul de invatare te referi, a doua parte a post-ului tau nu am inteles-o.

Oh, dar aici este simplu: niciodată. Nu există un punct în care poți spune relaxat „gata, nu mai am ce să învăț”. Nici măcar dacă scopul este să înveți minimul necesar pentru a fi … angajabil (în termerni generici). Asta pentru că angajabil nu este foarte bine definit și depinde foarte mult de firmă. De exemplu, angajabil pentru nvidia presupune alte competențe decât angajabil pentru cine-știe-ce-firmuliță.

Ai ajuns la concluzia asta… cum? Doar pentru că toți ți-au răspuns - în mare - același lucru? (și anume: pune mâna și construiește tu ceva)

O comunitate prietenoasă cum ar fi trebuit să-ți răspundă? „da Andrei, faci bine că te-ai afundat în tutoriale, continuă așa!” :smiley:

Ce a făcut Claudiu a fost doar un exemplu, dar secretul este același: nu faci, nu înveți.

Există un mod în care putem afla asta… :stuck_out_tongue:


Știu că pare că toți știm secretul programatorilor de succes și nu vrem să ți-l dăm.

Dar… secretul este că nu este niciun secret (altul în afară de practică).

2 Likes

Ai fost la vreun interviu? Cum a mers? restul sunt detalii.

1 Like

asta e cum as spune: scopul meu e sa ajung intr-o vacanta frumoasa.
oare gps-ul o sa imi dea ruta pana acolo?

imi pastrez impresia si subliniez partea cu hartia / detalierea.
mai departe e “in curtea ta”.

daca ar fi sa fiu in locul tau si mi-as da un indiciu… as face asa:

  • as lua problema expusa (unde sunt - unde vreau sa ajung - cum sa fac) si as trata-o ca o problema de informatica si i-as cauta o rezolvare.
  • asta presupune sa fiu capabil sa o scriu (in cuvinte normale prima data) si sa verific ca alte persoane au inteles lucrul pe care incerc sa il transmit (nu ca au inteles altceva decat vreau eu)
  • apoi as incerca sa “traduc” problema in termeni pe care un robot ii poate intelege
  • as cauta un algoritm pentru rezolvare si l-as scrie in pseudocod (ca sa nu ne impiedicam in limbaje si unelte pentru ca mai e pana acolo).
  • apoi as incerca sa aduc cat mai multe detalii fiecarui pas din algoritm (tratandu-l ca o problema in sine si repetand procesul).
  • as repeta detalierea cu cate un nivel nou pana se intampla una dintre:
    – ma plictisesc / imi dau seama ca nu e de mine / renunt
    – se aprinde becul / inteleg secretul
  • as urmari si cs50 pentru ca m-ar ajuta in procesul de mai sus

problema de mai sus are si componenta practica de care spune toata lumea, are si o componenta teoretica (notiuni introductive / abstractizare / entitati / algoritm / pseudocod), are si o componenta (f importanta dpmdv) de autodescoperire / introspectie (care te ajuta sa faci “click” cu domeniul - sau nu)

dar asta e ce mi-as spune mie si sunt destul de sigur ca m-ar ajuta sa ajung la un raspuns satisfacator pentru mine.
pentru tine… decizia si responsabilitatea e la tine.
daca decizi sa urmezi sfatul meu pentru mine… si vrei sa il faci public aici pe forum (similar cu ce recomanda @iamntz mai sus)… incerc sa raspund suplimentar cand cred ca am indicii relevante.
daca nu crezi ca ti se potriveste… ignora.

Empatizez cu tine. Eu când m-am apucat de programare, am crezut că dacă învăț PHP devin programator. Tutorialele ajută dar sunt făcute să te țină într-un loop infinit.

Și eu sunt la 36 și nu pot spune că am învățat încă programare deoarece m-am întins foarte mult pe orizontală: front-end, UX&UI, SEO, puțin marketing, puțin branding, ceva teologie.

Eu întâi am învățat HTML, CSS și extrem de puțin jQuery ca să construiesc site-uri statie apoi am dat peste WordPress, Magento și alte platforme. M-am apucat de freelancing forțat de împrejurări și apoi am vrut să lucrez direct cu clienții (firme mici) cărora să le ofer site-uri web. După câteva site-uri create, am realizat că nu e suficient să fac un site ci trebuie să știu cum să aranjez și structurez informația așa încât să fie ușor de scanat vizual de către utilizatori și motoarele de căutare, ce culori și imagini și alte elemente grafice să folosesc așa încât să contribuie la îndeplinirea obiectivelor companiei.

Îmi plac răspunsurile lui @kleampa și @serghei - programarea înseamnă de fapt un mod de gândire și de exprimare structurată care, ca orice alt “skill”, se dezvoltă prin practică. Cred că înainte de pseudocod, trebuie să înțelegi Object-Oriented Design și să faci soluții simple la care să adaugi “features” dar eu sunt cel mai puțin în măsură a oferi vreo îndrumare.

2 Likes

Multumesc tuturor pentru pareri. Chiar ajuta.

Am ajuns, impreuna, la o mica concluzie, si anume ca nu prea am lucrat practic si singur. Asta e clar. Nici cu OOP nu am lucrat practic.

Din pacate, acum sunt putin cam incurcat, cu multe chestii, posibil sa lipsesc o perioada de pe aici. dar as vrea sa mai continuam discutia.

Cel mai sigur pentru mine ar fi sa ma angajez QA la o firma de software.

Mai am ceva timp la dispozitie , sa ma gandesc si la a doua varianta. Job part-time + invatat development. Dar pentru ca sa ma apuc din nou de invatat, mi-ar trebui ceva pe care sa ma bazez, nu garantia ca ma angajez, dar sa fiu convins ca am inteles ce am gresit, si ca sunt pe drumul cel bun.

Cred ca ar trebui sa folosesc google mai des. Uite ieri am dat un search pe “is programming hard” ?

Si in doua parti erau doua articole scrise in detaliu,nu asa, care ziceau acelasi lucru:

Programarea e grea intradevar, dar este asa pentru ca majoritatea oamenilor nu stiu cum sa o invete.

Poate solutia ar fi sa imi dau seama cum sa invat.

Ideea lui Ionut cu aplicatiile este buna. Daca aleg sa mai incerc, sigur le fac, doar ca imi mai trebuie cunostinte pentru ele.

Ma gandesc sa fac si ce a propus Jhon, dar trebuie sa il mai intreb niste chestii cu ce a vrut sa spuna. Imi poti da un exemplu de ce ar insemna “unde sunt” si “unde vreau sa ajung” ? @John_Jhon

Si poate apuc sa va povestesc si despre singurul interviu pe care l-am avut, la un start-up f misto, ca a intrebat cineva, Adrian parca.

Si ultima chestie:

Exista cineva pe aici dispus sa ma ajute sa imi fac un roadmap, un plan cu ce sa invat, cu indicatii specifice. Faci asta, in paralel asta, cand ajungi aici, incepi sa inveti despre asta. Intre timp faci si codewars / leetcode , etc …, e doar un examplu. dar sa fie ceva limitat si bine structurat.

Voi ziceti-mi daca puteti unul dintre voi, si intre timp incerc sa vorbesc si cu mentorul 2, era cam ocupat in ultima vreme.

Asta cred ca m-ar ajuta mult , si e posibil sa fie suficient.
In rest la blocaje and stuff, ma gandesc sa intreb pe Discord-ul official al limbajului pe care o sa il aplic, cred ca Python, si m-am mai gandit si sa invat cu chat-gpt, sa il intreb concepte,chestii, si chiar sa imi genereze cod, asta mai rar, cat sa ma prind de unele chestii.

Simt ca asa e posibil sa reusesc.

Ms.

Salut ! Din punctul meu de vedere, programarea se invata cel mai bine lucrand, cel putin creierul meu asa functioneaza. Da, este foarte bine sa ai notiunile de baza, dar nu sa te axezi atat de mult pe partea “teoretica” daca o pot numi asa, cat ar trebui sa te axezi pe practica.

Practica este mama invataturii.

Cu bazele pe care le ai deja in limbajele de programare, cel mai bine incepi sa dezvolti o aplicatie, cat mai simpla, iar pe parcurs cresti in dificultate, in cazul meu, lucrand in zona de Web Development, cand eram la inceput descarcam cat mai multe resurse, si incepeam sa la editez, eu am inceput de la o varsta frageda pot spune, insa de la, a schimba cateva culori dintr-un proiect si cateva imagini, texte, am ajuns la momentul asta sa dezvolt aplicatii custom, complexe, in functie de cerintele clientilor.

Totul este sa fii constant.

Cel putin eu la inceput, imi puneam o idee in cap pe romaneste, astazi vreau sa fac un sistem de gestiune sa zicem. Si ma gandeam: ok, deci ca sa ajung eu in punctul asta, cam de ce am nevoie ?

Pai am nevoie de un tabel in care sa trec niste date, un nume, un prenume si un post ocupat, exemplu: Ingrijitor.

“How to create a table in HTML”. Dadeam copy + paste la codul de pe internet, il editam sa fie pe placul meu. Dupa ma gandeam , mhm ar trebui sa stochez datele astea intr-o baza de date ca sa pot sa le si editez mai tarziu.

“How to make a database for an web application PHP MYSQL”, copy paste la cod pana il aduceam in punctul sa functioneze cum doream eu, intial eu am plecat de la a face un lucru sa mearga pe modul copy+paste, iar la final cand ajungeam unde mi-am dorit de la inceput, am luat din nou tot codul ala de il copiasem si editasem eu si am inceput sa caut despre el, sa inteleg logica, de ce face asa, de ce functioneaza, si asa mai departe.

Acum, nu te sfatuiesc sa incepi neparat cum am facut eu, insa te sfatuiesc sa iti pui o idee in cap, si sa ajungi pe parcurs ce o dezvolti sa intelegi cum functioneaza.

@D12RO

Da, vad ca tot mai multi spun de chestia asta.

Si mie mi-a sugerat-o cineva pe un slack oficial de c++, al limbajului, ca spuneam ca vreau sa fac un football manager online, intr-o pagina web. Si imi zicea tot asa, cauti sa faci un login, dai search pe google, apoi pagina jucatorului, cum te conectezi la baza de date… adica pe bucatele asa, cauti orice.

Mie, atunci, la vremea respectiva, dar si acum, mi se pare contraintuitiv, si nu mi s-a parut ok asa, sa inveti ,dand search pe google, nu mi s-a parut corect asa. Eu credeam ca trebuie sa stii majoritatea lucrurilor, si apoi sa le aplici.

Oare e buna si varianta asta ?

Cred ca il pun pe chat-gpt sa scrie programe, si il intreb: “What was your reasoning behind this ?”

Oare nu as putea sa incep sa lucrez la aplicatia care ma pasioneaza, cea cu football managerul intr-o pagina web. Sa o schitez , iar apoi sa sa incep sa construiesc lucruri micute, cum te loghezi, apoi intri pe pagina principala, pagina cu jucatorii, poate initial sa nu am nici un fel de meci, doar sa am ca un site cu pagini, si informatii, date, jucatori, echipe, si sa tot adaug asa ? Si toate datele sa le salvez intr-o baza de date, ca vor fi multe date. Sa tot progrsez putin cate putin, nu stiu daca imi iese un joc, dar o pagina web tot imi iese .

Oare e ok asa, si pare prea complexa aplicatia, sau as putea sa o fac ?

Frontend nu stiu mai deloc insa.

Sa incep oare cu cateva dintre cele descrise de Ionut intai ?

Da, ai putea sa o faci. Va fi cea slaba aplicatie de football manager facuta vreodata, va avea o multime de bug-uri, nu va conta la portofoliu, nu vei face niciun ban cu ea, nu va conta la nicio angajare, va dura minim 2 luni cu 2-3h/zi de munca. Daca in aceste conditii, inca mai vrei sa o faci, poate ai totusi o sansa in acest domeniu.

Legat de frontend. Ok, esti in pasul in care stii ca nu stii. Care-i pasul urmator avand la dispozitie resursele de pe tot internetul?

Nu imi dau seama daca esti sarcastic. Eu vreau sa o fac, mai de mult, dar nu stiu daca e ok asa pe bajbaite. ar fi v1.0. Dupa ce ma perfectionez , pot sa o imbunatatesc cat vreau. Nu imi dau seama de ce spui ca nu imi va folosi la nimic, decat probabil voi invata multe cred ca vrei sa zici. La portofoliu de ce nu imi foloseste ? E o aplicatie web mai complexa decat un crawler web sau cele spuse de Ionut, fara nici o aluzie. Nu inteleg de ce la angajare nu m-ar ajuta , fata de un webcrawler sa zicem.

Daca e il pot face pe acesta, ca fiind cel mai important, si inca 2-4 de genul celor spuse de Ionut, ca oricum imi trebuie mai multe la portofoliu.

Este bine asa ?

Nu sunt sarcastic, eram putin filosof.
E clar ca vei invata “ceva” dar voiam sa subliniez ca e genul de “castig” care va conta mai mult pentru incredere decat pentru altceva si voiam sa setez cumva asteptarile.

La angajare, prea putini sunt cei care vor sa verifice codul unui proiect scris de tine. Iar la v.1.0 codul va fi cu siguranta ceva cu care nu vei vrea sa te mai lauzi peste cativa ani. Majoritatea sunt mai degraba interesati de complexitatea problemei rezolvate, de modul de gandire, de UX si cel mai important, faptul ca ai putut duce singur cap-coada un anume tip de proiect (proiectare, implementare, testare).

In practica, la un interviu, e de ajuns doar sa vorbesti despre cele facute. Iar un recruiter bun isi va da seama din modul in care raspunzi daca il minti sau nu.

1 Like

Îți dau un challenge: lasă vorba. Vino data viitoare cu ceva practic în care te-ai încurcat și vrei să te ajutăm.

Rețeta succesului depinde de skillurile tale, de ce vrei de la viață și de la carieră. Este dificil să te angajezi în perioada asta în care se tot dă afară, dar privește partea bună: dacă acum reușești să te angajezi, după ce trece perioada asta ar trebui să te angajezi și mai ușor.

Succes!

sa zicem ca partea de “unde sunt” e relativ acoperita in prezentarea initiala.
probabil ca ar trebui sa acopere “resursele” / datele de intrare, puncte forte si puncte slabe, etc.

partea de “unde vreau sa ajung” e mult prea vaga pentru a ii putea adauga actiuni concrete.
dar chiar si asa… daca spui ca vrei sa ai un job de programator bine platit… pui asta pe o hartie si apoi incepi sa adaugi detalii:
ce inseamna bine platit? => stabilesti un nivel minim al salariului pe care il vizezi.
apoi cauti sa vezi daca exista joburi de programator cu salariul ala si le pui mai departe pe hartie intr-o lista.
apoi iei fiecare job din lista si vezi care sunt cerintele minime pentru a il ocupa (skilluri, experienta, etc) si cate joburi de tipul ala sunt in piata (eventual care e trendul) si tot ce mai poti aduna relevant.
apoi eventual ordonezi lista in functie de criterii relevante pentru situatia ta: de ex in functie de cel mai scurt timp in care estimezi ca poti atinge cerintele minime.
nu adaug ca un programator pasionat probabil ar crea un fel de “nota” generala care ar include mai multe variabile (gen pe langa timpul de atins cerintele ar putea fi considerate so costul pentru a ajunge acolo, cat de mult iti place domeniul, numarul de joburi disponibile, trendul, etc) - gen un “job rank”, similar cu page rankul pe care google il folosea candva pentru rezultatele cautarilor.

si tot asa pana devin suficient de concrete si “actionabile” lucrurile.
la fel si cu datele de plecare / intrare.
si apoi urmezi procesul si pentru “cum fac” sa ajung din A in B?

eu am propus sa le pui pe hartie si pentru ca multi programatori sunt ajutati de partea vizuala a lucrurilor, dar si pentru persistenta lor (prin comparatie cu gandurile care zboara si posibil sa nu le gasesti pe toate adunate cand vrei sa scoti o concluzie) si poate pentru faptul ca devin “mai reale” cand le vezi scrise sau citite / spuse de tine (sau de altcineva) tie.

asta probabil ca ar fi un prim indiciu util in cautarea ta.
daca apoi incerci sa le treci din limbaj uman in pseudocod si instructiuni pentru robot… deja lucrurile devin mai practice si mai aproape de tinta.

da, nu e chiar evidentul “codeaza un proiect cu finalitate” (pe care nu il contest, ci il intaresc), dar dpmdv raspunde partii personale / de autodescoperire din intrebarea ta (care altfel a primit destule raspunsuri tehnice bune si nu mai are sens sa sa spun acelasi lucru)

Prea multa vorba, prea putina practica.

5 Likes

Iti recomand sincer sa stai mai mult timp pe Discord pe canalele oficiale ale limbajelor pe care incerci sa le inveti, sau comunitati unde developerii sunt familiari cu acelele limbaje de programare.
Userul meu de Discord este: sg1asgard

Incearca sa faci macar un proiect end-to-end nu doar tutoriale, asa cum ti-au recomandat si alti oameni aici pe forum. Succes mai departe! : D

1 Like

“secret sauce-ul” programatorilor este muncă, muncă, muncă și iar muncă… Adică faci practică in fiecare zi. Acumulezi cantitativ iar apoi, la un moment dat, faci saltul calitativ (level up). La fel ca-n fotbal. Messi a fost întrebat cum de știe să bată loviturile libere așa de bine. A zis că se antrenează în fiecare zi la tras la poartă. Însă a mai zis și că a învățat de la alții mai buni ca el, gen Ronaldinho. Ceea ce mă duce la următorul “secret sauce”: un buddy. Adică un coleg, tot programator, mai priceput decât tine, cu care să lucrezi și de la care să înveți. Cineva alături de care să lucrezi la un proiect concret. Nu neapărat un mentor, care îți alocă câteva ore din timpul lui prețios, ci cineva cu care să stai de vorbă, să faci pair-programming să te ajute să înțelegi ceea ce faci. Unde îl găsești, asta nu știu… (forumuri, meetups?)

“Gândirea de programator” presupun că se referă la o gândire logică, analitică, critică. Ceea ce presupune să fii capabil să creezi niște conexiuni între lucruri, să vezi pattern-uri, să identifici și să rezolvi probleme. Să descompui problemele complexe etc. Cred că orice companie caută programatori care să fie “problem solvers”. Și au dreptate, pentru că, la urma urmei, companiile au niște probleme și au nevoie de oameni care să le rezolve.

Cred că e normal să ai multe ambiguități și confuzii. Orice programator s-a lovit de ele. E un domeniu destul de complex. Însă cu multă practică o să ai la un moment dat acel breakthrough, acel level up, și o să devină totul clar. Până la următorul bug

Succes!

PS: https://roadmap.sh/

4 Likes

Am revenit pe aici.

Am luat o hotarare. Indiferent daca ma angajez full-time sau part-time, o sa incep sa lucrez la aplicatii. Mai mult daca e part-time si mai putin daca e fulltime (sambata sigur 4 ore si as mai vrea intr-o zi din mijlocul saptamanii vreo 2-3 ore. mai mult de atat nu stiu sigur daca pot).

@kleampa : imi poti spune despre partea de proiecte, cum se desfasoara la interviu? In cv ar trebui sa pun proiecte si o scurta descriere ca sa stie angajatorul de ele, eu zic ca ar fi f important cel putin pt cv-ul meu, ca sa ma cheme lainterviu, dar zic sa intreb.
Sau se uita pe linkedin, si acolo ar trebui sa intre pe ele si sa funxctioneze complet ? Intra recrutorul pe proiecte sa vada ce si cum ? Sau doar se uita pe cv, si ar trebui sa fie acolo ?

@alex.io : accept challenge-ul. Posibil sa dureze putin pana incep la aplicatii, sa mai trec odata prin limbaj. Dar nu mult

@WorkingClassHero imi placuse postul tau, ca intelesesei cam care sunt nelamuririle mele, cel mai bine, dar din pacate l-ai sters

@John_Jhon de chestia asta o sa ma apuc, in particular cred, sau sa vad. Ms.

@George_Antohi o sa iti scriu

Am ales sa continui cu Python, iar la cele de frontend, cele 3 clasice cred.

Spor la toata lumea !

3 Likes

Iti mai pot spune cateva lucruri bine de stiut.
Daca vrei sa ai un job vezi care sunt joburile curente de pe piata muncii si cerintele acestora. Apoi verifici si care sunt salariile aferente si care este competitia, cati oameni aplica in general pentru acele joburi. Inveti ceea ce se cauta si mergi pe cele caer sutn platite relativ decent sau bine si care au numar de candidati mai putini.

Cealalta metoda este sa vezi ce limbaj de programare iti place tie, ce framework si/sau comunitate si te apuci sa le inveti pe alea indiferent de numarul de joburi existente si competitie sau salarii. Apoi incerci marea cu sarea.

@anon8881405 sunt unele companii unde recruiter-ul este CTO de exemplu si acolo e important sa vada direct si ceva cod (deci proiect pe care sa-l faci public pe github) sau link al proiectului (eventual lasi si niste credentiale de acces ca sa intre cat mai repede sa vada ce ai facut). astea le-as numi cazuri izolate pe piata din RO (de obicei sunt start-up-uri).

in cele mai multe cazuri, CV-urile sunt filtrate initial de cineva non-tehnic deci o descriere cat mai succinta a fiecarui proiect e binevenita. in situatia de multinationala sau companie mai serioasa, vei ajunge la interviuri tehnice unde vei avea tot timpul din lume sa explici tot ce ai facut/stii.

PS: presupunand ca topicul asta ar fi fost o intalnire face2face la interviu (raportat la ce concluzii am putut trage despre tine in urma mesajelor), chiar daca ai indeplini skill-urile tehnice, tot ai fi refuzat. Nu e totul despre tehnologie.

@anon8881405 ți s-a spus de nenumărate ori care este secretul, dar aparent știai deja răspunsul, care, cumva, nu se alinia cu acest secret [1]. Prin urmare, ai ajuns la concluzia că nu ai aterizat unde trebuie și ai început cu mici împunsături și/sau concluzii în direcția asta.

Discuția este futilă în continuare, consider că deja s-a spus tot ce era de spus, știi deja ce ai de făcut, depinde de tine dacă faci sau dacă ne vei ține la curent cu progresul.

Discuția se închide.


PS: Scopul gramaticii este simplu: te ajută să te exprimi. Cu un acord al subiectului cu predicatul toți suntem datori, altfel ajungem să ne înjurăm singuri și nu știm de ce râd ceilati de noi.


  1. sau, mă rog, știai că nu e ăsta secretul. ↩︎

6 Likes