Nu reusesc sa invat programare cum trebuie

Salut , situatia mea este de dificultate level 9 din 10 as zice.

Incerc sa descriu, prin varianta scurta.

Am 35+ ani.

Am absolvit Electronica Si Telecomunicatii ceva mai demult. Apoi , dupa ceva timp mi-am dat seama ca mi-ar place mai mult partea de software. Apoi am decis sa ma apuc.

Am lucrat in Bucuresti ca game tester o perioada, inainte sa ma apuc de studiat.

Apoi, in 2020 am facut un curs introductiv de C++. Apoi nu am simtit ca sunt pregatit mai deloc sa aplic la job-uri.

Apoi, am urmat un program de mentorat de aproape un an, a costat mult, dar am considerat ca ma poate ajuta. Python, Python Advanced, Baze de date MySQL, Git, Agile, Linux. Ceva care se dorea a fi mai complet. Am invatat multe lucruri si mi-a placut exprimarea in Python. Am zis sa grabesc putin procesul si sa evit situatiile in care m-as bloca de unul singur de aceea am apelat la acest program.
Nu am fost cel mai bun student, si imi pierdeam concentrarea uneori, dar mi-am indeplinit toate temele, si ceea ce trebuia facut. Am avut si o simulare de interviu, si , printre altele am fost intrebat de stack, cu care nu prea am avut tangenta.

Nu prea am studiat algoritmi si nici proiecte personale mai originale sau mai mari nu am avut.

Am terminat programul, ma simteam ceva mai pregatit, dar aveam mari retineri la partea de algoritmi, la care nici acum nu sunt lamurit cu o chestie, si cat e necesar sa stii din ei sau ce.

Nu am aplicat, decat foarte putin.

Am ajuns la concluzia ca trebuie sa ma specializez si perfectionez pe ceva. Din mai multe considerente, am ales sa invat Java in continuare, considerand ca limbajele de programare au multe lucruri in comun, si voi invata rapid bazele, si apoi trec la un framework, si apoi fac niste aplicatii mai maricele. Aveam si o idee de a face o aplicatie a mea si Java mi se parea mai potrivit. Portofoliul imi cam lipsea.

Acum am studiat tot cu un mentor, care ma indruma, si puteam sa il intreb orice. Si acum sunt de parere ca este foarte bine pregatit, si cunoscator. Era , printre altele si asistent in invatamant la o facultate foarte buna de informatica. Era bine pregatit, si am zis sa apelez la cineva care are si capacitatea de a invata pe altii.

I-am spus inca de la inceput ca nu reusesc sa pun lucrurile cap la cap, lucru care mi se intampla si acum. Am spus ca vreau sa invat algoritmi, pentru ca vedeam ca se tot cer la interviuri si par o parte integranta a informaticii.

Am invatat bazele Java, apoi o vreme am facut algoritmi, o luna - o luna jumatate, apoi am inceput Spring si urma sa facem o aplicatie mai mare, full-stack de preferat. Trecerea de la una la alta m-a dezorientat un pic, si de multe ori gandeam cum erau lucrurile in Python. Poate am gresit ca am schimbat limbajul.

Si asa am ajuns la inceputul lui 2023. Din pacate o perioada de 2-3 luni, nu prea am putut invata cum trebuie, tocmai cand trebuia sa termin proiectul si erau cele mai multe internship-uri in Bucuresti. Apoi lucrurile s-au cam impotmolit, dupa o perioada nu a mai putut nici mentorul sa ma ajute, avand alte angajamente.

Iar de prin iulie 2023 a devenit destul de imperios necesar sa imi gasesc un loc de munca. Erau vreo 3,5 ani de cand nu lucram, mereu am avut increderea ca mai e putin si reusesc, dar lucrurile s-au tot prelungit. Din fericire am avut posibilitatea sa fac lucrul asta. Acum nu prea mai am luxul acesta.

Din iulie anul trecut am mai aplicat , in principal si pe alte joburi din it, dar fara succes. Nici cv-ul meu nu este prea atragator, si are unele gauri prin el, si mai nou vad ca aplica 300 - 1000 persoane pe un post in Bucuresti la majoritatea, sau nu stiu ce se intampla de nu mai sunt chemat la interviuri. Inainte mai exista ceva interes.

Recent am obtinut o certificare ISTQB in testare software, in ideea de incepe cu aceasta, am lucrat o perioada ca game tester si apoi sa vad unde ma duce. Imi place si testarea , si ma gandesc ca astfel as putea avea acces in domeniu. Si pe la posturile acestea vad uneori cate 1000 aplicanti. Dar cred ca as reusi in cele din urma. Aceasta ar fi varianta mai sigura, si chiar cred ca mi-ar fi util sa invat testare mai in detaliu.

Dar in acelasi timp ma gandesc daca as putea totusi sa incep din prima pe un post de programator, chiar si ceva basic. Asta imi doresc uneori, mai ales ca din pacate , nu prea mai am luxul ca timp sa incerc lucruri. Si as vrea totusi sa am o cariera ok, sa fiu bun pe bucata mea. Ma gandeam , daca ar fi ok sa incerc sa imi gasesc ceva part-time, care sa imi asigure un venit de 2000 - 3000 lei , spre 3000 ar fi ideal. Si sa continui sa invat programare , sa vad sub ce forma, cateva luni, pana la maxim un an. Tot timpul am avut senzatia ca am lasat ceva neterminat. Aceasta varianta mi se pare un pic mai riscanta , in sensul ca pot avea la cv un job ce nu prea are legatura cu programarea, fata de testing unde as incepe sa construiesc usor-usor niste lucruri care se leaga.

Ce parere aveti dintre aceste doua optiuni ? Este mai sigura varianta cu testarea ?

Acum sunt in momentul in care trebuie sa aleg una din cele doua si sa dau commit. M-am gandit sa mai cer niste pareri.

Aveti vreo idee de ceva ce as putea face part-time, orice e legat de programare, wordpress, vreun fel de freelancing, niste taskuri mici si repetitive sau nu, sa contribui la ceva , etc … sau pana la urma ceva ce se poate face de la un calculator, chiar daca nu are legatura cu programarea ?

Eu am fost mereu fan-ul invatarii structurate si traditionale, care iti pune niste baze solide, dar din moment ce am considerat ca nu pot face o alta facultate de la capat, neavand prea mult timp la dispozitie, am ales sa fac cursurile acestea , am incercat sa reproduc cat mai mult ceea ce ar invata cineva la facultate, dar din pacate mereu a lipsit cate ceva. Am incercat sa fiu bine pregatit, nu m-am dat in laturi de a face lucruri mai grele , ca backend, cand poate as fi putut alege frontend, dar asta m-a atras. Uneori poate nu mi-am dat silinta cat ar fi trebuit, dar a fost mai mult de moment, uneori nu ma puteam concentra.

Mie nu imi e clar ce trebuie sa stii ca incepator, si nu mi-a fost niciodata clar, ca altfel faceam aia si insistam pe ea de 100 de ori si imi reusea pana la urma. Aici vad ca s-a tras de mine in toate directiile uneori, de nu mai intelegeam nimic. Am tot asteptat ca toate sa capete un sens pana la urma, si sa se termine cu alergarea asta dupa tot felul de lucruri, ba tot felul de comenzi in git, ba invata aia, ba aia. Sunt foarte nelamurit de acest domeniu.

Si aveti idee, oare cum se invata corect programare ? Sau poate unde am gresit eu, pentru ca uneori a trebuit sa iau decizii de unul singur ?

3 Likes

salut,
Nu exista neaparat un mod corect de a invata programare. Problema ta nu cred ca e invatarea.

Iti faci un profil de linkedin frumos cu chatgpt, vezi ca acum poti inclusiv sa pui o poza cu profilul si sa ii ceri sa iti dea o nota sau sa iti faca sugestii si aplica la cat mai multe posturi absolut indiferent de ce se cere, remote sau local. Dupa aplici la ce nu aplica nimeni.

Eu daca as ramane fara job azi as uita ca am aproape 10 ani experienta pe web development si m-as apuca o luna doua de invatat tot ce pot despre AI/prompt engineering/etc. si as aplica la joburi de genul. Aici sunt acum banii si aici se vor cauta oameni, programarea e triviala la entry level si al naibii de complexa cum ai cerinte mai interesante pe care nu le poti face cu chatgpt. Adica daca te apuci azi de proiecte serioase iti prinzi urechile inca vreo 3 ani si chiar si asa niciodata nu vei fi pregatit de interviuri. (nimeni nu este, nimeni nu stie ce o sa i se ceara dinainte, dar compensezi cu experienta)

Dupa daca n-ai facultate in domeniu si vrei sa iti gasesti azi un job trebuie sa iesi in evidenta, se dau afara oameni cam de peste tot si nu ai de ce sa angajezi juniori in perioada aceasta. Trebuie sa trimiti tu mesaje private sau email-uri la HR/manageri la firme mai mici sa vezi daca n-au cumva un proiect in mentenanta pe care le-ar trebui om. Uita de algoritmi, invata sa le intelegi, tine-le acolo in cap sa stii ca exista, dar nu trebuie sa le stii pe de rost, nu o sa impresionezi pe nimeni stiind fiecare algoritm pe de rost. Pot sa invat un copil de 5 ani sa recite quicksort, dar asta nu il face programator. Plus la interviuri nimeni nu mai cere algoritmi fiindca chatgpt ti le implementeaza perfect.

Nu inteleg sincer de ce ai trecut de pe python pe java inainte sa iti gasesti un job, pe python erau o gramada de job-uri pe scraping, data processing, data wrangling, legal/contabilitate, automatizari, QA, crypto si desigur AI.

La final, tot ce conteaza e ca daca ti se da un task, il poti face in timp util sau nu ? Poti sa tot inveti, in 80% din cazuri ai un task, iei google sau acum chatgpt si cauti o solutie eleganta sau pur si simplu una care sa satisfaca cerintele si treci la urmatorul task. (intuitia e cea care iti spune ce sa cauti si cum sa combini lucrurile ca sa fie bine, iar asta nu se invata nicaieri, tu ti-o formezi cu citit/scris cod/articole/carti si facut cat mai multe lucruri) E total nerealist ca primul tau proiect sa fie ceva full-stack sau sa faci ceva de la 0 singur, e posibil, dar lucruri simple integrate bine dureaza luni de zile, chiar ani si de stii ce sa faci. Majoritatea estimam, luam task-uri si le facem bucata cu bucata pana iese ceva functional. Foarte putini se apuca si fac o aplicatie de la A-Z singuri. (iar multe cursuri asta iti sugereaza)
La un proiect decent ai mereu pe cineva care a facut ani de zile ce trebuie tu sa faci si te poate ajuta.

Eu tot mentionez AI si ChatGPT fiindca am vazut oameni care n-au nimic deaface cu programarea si si-au facut niste automatizari, macro-uri, scripturi cu chatgpt de ramai socat. In 90% din cazuri e mult mai important sa intelegi cerintele si sa stii sa comunici decat sa stii sa scrii cel mai curat si bun cod din lume.

3 Likes

@anon8881405 îți spun și ție ce le-am zis altor câțiva utilizatori pe forum: am impresia că ești într-un „tutorial hell”, unde ce faci de fapt este să sari dintr-un curs/tutorial în altul, având impresia că înveți. Dar you need to walk the walk, cum se spune.

Și îți spun și ție ce le-am spus celorlalți utilizatori: fă o aplicație de la zero. Vrei Java și C++? fă câteva programe CLI. Apoi fă câteva programe GUI. Și repeți pașii ăștia doi de câteva ori.

Uite idei: CRM, budget tracking, manager de poze, program de chat (client/server), de IRC sau mail, crawler web. Înveți din astea de toate: să interacționezi cu baza de date, cu rețeaua, GUI etc.

Pentru extra-motivare îți propun să pui zilnic pe forum progresul. :wink:


BTW: cred că pleci de la premisa (posibil greșită?) că oricine trebuie sau poate fi programator.

5 Likes

Foarte multi programatori codeaza mai intai pentru ca le place ceea ce faca si nu pentru bani. Nu exista un mod real de a invata programare. Majoritatea limbajelor de programare functioneaza pe exact acceleasi principii. Daca tu cunosti c++ nu ar trebuii sa ai probleme cand vine vorba de ceva mai high level. Iti recomand sa iti gasesti un proiect interesant pe care sa il realizezi.
Cpp. Una dintre cele mai cautate specializari care are la fundatie c++ sau c este reverse engineeringul. Deoarece cam orice alt limbaj poate face ce face c++ in materie de desktop pana la reverse engineering.
Daca vrei sa te axezi pe reverse iti recomand sa iti faci coduri pentru jocuri sa intelegi cum functioneaza memoria anticheaturi debugger metode de preventie, si sa iti faci un cod simplu pentru un joc cum ar fii cs2 care nu prea are anticheat.

Iti recomand si malware developement pentru ca inveti foarte multe despre winapi, usermode, kernel si calculatore (nu atat de mult reverse engineering)

Daca vrei python cateva proiecte interesante ar fii apiuri, boti pe discord, baze de data, cryptographie, ai.

Orice alt limbaj poate sa faca ce face python asa ca aici iti alegi tu ce vrei.

Fa lucuri care iti plac si o sa vezi ca intelegi. nu te uita la prea multe tutoriale mai bine cauti solutii pe internet si daca nu intelegi le traduci cu gpt.

Nu stiu ce sa mai zic sunt un copil este alegerea ta ce faci. Sau poti sa te indepartezi complet de accest domeniu daca simti ca nu intelegi ce se petrece se cauta atatia oameni.

1 Like

Salut. Multumesc pentru raspuns.

Acum realizez ca am scris enorm in primul post si va fi foarte greu de citit pentru majoritatea. Sper totusi sa contribuie cat mai multi, poate ma mai lamuresc si eu cu niste lucruri. Era tarziu aseara si m-am cam pierdut in detalii.

Referitor la partea de Python si AI / Machine Learning si ca am trecut pe Java … a fost o mutare destul de calculata.

Multe dintre cele pe care le mentionezi aici :
"
Nu inteleg sincer de ce ai trecut de pe python pe java inainte sa iti gasesti un job, pe python erau o gramada de job-uri pe scraping, data processing, data wrangling, legal/contabilitate, automatizari, QA, crypto si desigur AI. "

in special partea de ai / ml nu prea prezenta interes pentru mine, atat cat pot eu sa inteleg din ea, mi s-a parut ca nu ma atrage, si , cum spui si tu, majoritatea joburilor sunt sau au legatura cu asta. asta se petrecea inainte de boom-ul cu chat-gpt, acum probabil da , daca vrei job rapid, poate e o optiune de luat in considerare.

Am schimbat pe Java pentru niste motive care mi s-au parut valide, si anume:

  • dintre toate subdomeniile de care am auzit, desi nu am lucrat in nici unul, am zis sa aleg unul si cel mai mult m-a atras cel de web development, backend, mi se parea ca de acolo poti face orice tip de aplicatie, si toate lucrurile , aplicatiile, chiar si cele de desktop, migreaza spre web, imi spusese mentorul. Si intelesesem eu ca Java este mai folosit pentru webdev, acum aud pareri ca si Python e bun pentru web dev, nu stiu in ce masura, si spune “lumea” ca ar avea niste limitari. Mentorul 2 , spunea ca e cam la fel daca faci o app web in Java sau in Python. Se si scaleaza la fel de bine, daca ai multi utilizatori, dar aici ajungem cred, la arhitectura si sisteme, lucruri care ma depasesc cu mult. Deci am ales sa incep cu webdev si apoi , pe parcurs, vazand mai multe lucruri sa trec pe altceva, sa ma specializez pe ceva,daca mi-ar place mai mult. Imi place un pic si game development. Am zis sa aleg ceva foarte generalist, si apoi sa ma specializez

  • m-am gandit mereu si la o aplicatie pe care as putea sa o fac , dar chestia asta mi se pare ca un miraj asa acum, de multe ori ma gandeam la cum sa o fac, si lucrul asta imi cam distragea atentia de la invatat, cred ca mi-a provocat mai multe daune. Iar mai si ziceau unii, gandestete la o aplicatie pe care ti-ar place sa o faci si in functie de asta iti alegi ce limbaj si stack sa folosesti si inveti aia. Cred ca am incercat sa impac prea multe lucruri. Din nou aici se potrivea Java mai mult, dupa mine

  • am simtit si eu niste limitari la Python, poate a fost doar o senzatie, pentru ca simteam ca nu pot face prea multe cu ce invatasem, sau poate citisem undeva, aveam mereu senzatia ca se foloseste la ai si ml, majoritatea joburilor erau pe asta, si nici foarte multe, la momentul acela.

  • toata lumea vehicula faptul ca trebuie sa poti sa te muti cu usurinta de pe un limbaj pe altul, si eu , simtindu-ma un pic increzator pe lucrurile de baza cel putin ( pe rezolvarea problemelor si algoritmi, acolo aveam si inca am niste probleme, o sa mai abordez subiectul) si am zis ca trebuie sa fiu si eu capabil sa ma mut pe alt limbaj , odata ce stiu bazele unuia. Chiar daca nu am lucrat pe unul inca , eu imi ziceam ca ar trebui sa fiu capabil.

Cam astea au fost motivele pentru care am schimbat. M-am gandit destul de mult inainte sa o fac.

Acum, privind si dupa rezultate, si retrospectiv, pot spune ca m-am adaptat mai greu la alt limbaj. Intr-adevar aici se poate identifica o posibila problema.

Acum as zice ca doar dupa ce stii bine un limbaj, poti trece pe altele. Poate nu am mers suficient de departe cu Python-ul, inainte sa trec pe Java. Hmm.

Acum iau in considerare sa revin la Python, daca ar fi sa ma reapuc de invatat, ca parca mi-a fost mai usor sa inteleg lucrurile. Java mi se pare ceva mai complex la unele lucruri. Nu prea am lucrat cu oop decat destul de putin, si niste proiecte finale de la curs. Acolo cred ca am niste lipsuri.

Nu imi este prea clar cu limbajele de programare. Am mai tot citit despre dezbaterea asta.
Toti spun, si asta e un lucru bun, ca toata lumea e de acord :slight_smile: , ca limbajele sunt niste unelte, si ca il alegi in functie de proiectul ce il ai de facut, si ca nu conteaza prea mult cu care incepi.
Totusi tu trebuie cumva sa faci o alegere la un moment dat, ca multe job-uri iti cer experienta pe un limbaj, Java developer, etc, toata lumea se specializeaza pe unul-doua, isi alege un subdomeniu cumva. Atunci cum nu conteaza cu care incepi ?

Cam cum decurg lucrurile referitor la limbajele de programare in general, ca imi e greu sa gasesc o logica dupa care ai alege unul ? Ceva imi spune ca dupa domeniul de utilizare de care esti interesat, dar mai mult decat atat …

Salut Ionut ! Tot din Constanta vad.

Mi s-a mai propus chestia de care zici tu , de catre cineva ce parea priceput, si el. Dar atunci am ignorat-o. De fapt nu am inteles-o.

Un crawler web am facut odata, destul de primitiv, dar functiona ok.

Care e ideea cu aplicatiile astea, si cum ajung sa le fac, cum le gandesc, caut unele lucruri pe care nu le stiu, ma gandesc ce ar trebui sa faca programul ? Scuze , dar nu prea am facut de unul singur,si asta cred ca imi lipseste cel mai mult, genul asta de aplicatii. Adica am mai facut singur, dar nu lucruri prea originale, sau diverse, ci proiecte de la curs, REST api -uri cel mai mult.

CLI = command line interface , in consola ?
GUI = guide user interface , cu interfata grafica ?

Cu GUI nu am facut niciodata, si mi-am tot dorit mereu, dar cum fac asta ?

Am dubii si la limbajul de programare, vezi post-ul de deasupra. Parca m-as intoarce la Python. Ma exprimam mai usor parca. Dintre Python si Java, pe nici unul nu ma mai simt capabil momentan, trebuie sa reiau niste lucruri.

Este mai mult de discutat aici. Aici nu stiu ce sa zic, vad ca parerile sunt impartite, unii zic ca e usor, cei care vand cursuri poate , unii zic ca se poate, daca esti perseverent si putin incapatanat, ceea ce incerc eu acum, si cei experimentati spun ca e greu. Cred ca trebuie sa “walk the walk”. Dar nu stiu care e aia.

Eu mereu am fost in domeniul asta tehnic, mereu pe langa chestiile astea, si ma gandeam la software destul de des. Cand am dat la electronica am vrut sa dau si la automatica, dar erau putine locuri si erau pentru olimpici la info si nu cred ca intram. Atunci, mai de mult, nu prea eram constient eu de info si celelalte ce au programare, poate nu m-am gandit suficient de bine.

Cert e ca mai recent, am descoperit o pasiune pentru lucrurile astea, imi place ideea sa construiesc ceva palpabil doar scriind niste instructiuni, mi se pare ca faci ceva si practic nu folosesti nici o resursa, mi s-a parut mai misto ca hardware-ul, ce mai studiasem eu in facultate.

Asta ca idee, eu zic ca pasiune pentru asta am , check, capacitati intelectuale, mi-au dat oamenii aia de la prima academie, cu mentoratul vreo 6-7 teste de tot felul, iq, personalitate, limba, nr pantof, au zis ca sunt ok, sau chiar f bine, deci, check, mai si spun unii ca nu trebuie sa fii extraordinar de destept, ca nu iti trebuie matematica, asta cu matematica nu prea sunt de acord. Il mai tot intrebam si pe mentor 2, zicea ca sunt ok.

Si totusi care e secretul ? De ce nu reusesc ? Ce calitati iti trebuie asa de speciale ? Ii vad si pe altii din alte domenii ca reusesc, domenii non-tehnice, asta inseamna ca sunt mai determinati ? Care e treaba cu “gandirea de programator” ?

Fac parte din cei acum considerati “seniori” doar cu invatat de pe net, cu 12 clase liceu non-info si de maxim nota 7 la matematica.

Nu mi-am pus niciodata problema “trebuie sa invat bine X,Y,Z si abia apoi pot incepe sa fac chestii”. Din momentul in care am inteles HTML-ul → am vrut sa am un site → am vrut sa-l fac mai frumos/interactiv (CSS/JS) → am vrut sa pot sa-l modifica mai repede/usor (PHP) → etc.

Ideea e ca n-am asteptat sa stiu toate astea de la bun inceput ca sa fac prima varianta de site. Fiecare problema peste care am dat m-a dus mai departe si am avut timpul si rabdarea sa caut rezolvari.

Dar asta se intampla acum 20 ani (cand aveam 16-17 ani), in alte vremuri, cu un creier mult mai tanar, cu mult mai putin “zgomot” in jur si in minte, fara presiunea de “trebuie sa fiu angajabil in urmatoarele x luni”.

Cu mintea de acum, daca m-as regasi in situatia ta (varsta, cunostinte) as trage concluzia ca “programarea e doar un hobby”, m-as angaja tot ceva IT (pare ca ai o oarece atractie asupa domeniului) dar non-coding. Daca dorinta/viata iti permite ca majoritatea timpului de dupa job sa-l dedici programarii, vei ajunge la un moment dat in care sa spui “gata, acum sunt programator, am incredere sa-mi caut un job in domeniu”. Dar as zice ca e de 10x mai greu decat mi-a fost mie.

3 Likes

Nu este prea incurajator ceea ce spui tu. Eu zic ca trebuie sa existe un loc si pentru mine, trebuie sa existe ceva mai de inceput ce pot face. Inca nu am gasit ce.

Si tot nu am aflat care e “ secret sauce-ul” programatorilor… Tot aud de asta si ma frustreaza maxim. Care o fi frate ? Ultradestept am inteles ca nu trebuie sa fii, atunci care e ? “Gandirea de programator” auzi … Ce e cu atata mister ? Ce e atat de special la programare ? Eu l-am privit mereu ca pe un domeniu ca si celelate, complementar cu cel pentru care ma pregatisem eu.

Ori faci o facultate si mergi la greu pe matematica, fizica si le combini la proiecte foarte grele.

Ori iți place și stai 10 ore in fața calculatorului lucrând. Cel mai ușor e dacă te angajezi și lucrezi la proiecte interesante.

Azi problema e că mai nimeni nu angajează începători, în rest era trivial să te angajezi cu ceva cunoștiințe de bază acum 2-3 ani.

Ti-am mai zis, problema ta e să treci interviul, nu învățatul. Majoritatea stau în tutorial hell în loc să facă zeci de interviuri.

De ce e mai dificil ? Fiindcă dacă angajezi un constructor ca un programator începător o să ai o casă unde intrarea va fi printr-o scară până la etajul 5 cu intrare pe un capac de canal care e un tobogan pana la parter, care după se duce la un lift, care de fapt e o scară care se misca stanga dreapta si te duce sus dacă tragi de o maneta ca sa miste intreg peretele pe care e scara. Iar geamurile vor sta atarnate de o funie fără perete. A da, daca vrei sa iesi trebuie sa lasi lumina pornită altfel ia foc.

Ai pus și întrebarea ai dat și răspunsul în prima propoziție :smiley:

O aplicație făcută de tine - și accentuez asta pentru că este foarte important să fie făcută de tine, nu copy paste, nu chat gpt, nu altceva - te va ajuta să înveți să îți organizezi proiectul, să îți pui ordine în idei, să urmezi un plan de acțiune, să cauți soluții la problemele întâmpinate etc.

Este un motiv pentru care toate meseriile au nevoie de o perioadă de practică, indiferent că-i un post de bucătar, medic sau avocat. Programatorii nu sunt diferiți.

Uite cum a făcut @claudiucjc Youtube Project Practice #challenge

4 Likes

Nu este o definitie aici dar gandeste-te ca sunt oameni care au facut licee de informatica apoi facultate cu profil informatic sau politehnica. In toti acesti ani au studiat algoritmi, limbaje si tehnici de programare care le permit sa ia o problema si sa o rezolve printr-o aplicatie informatica si asta prin formarea in acest timp a unui mod de gandire specific, algoritmic corelat cu notiunile invatate. Ca acesti oameni sunt olimpici, oameni obisnuiti sau autodidacti e alta discutie dar ce conteza e ca tu cumva trebuie sa compensezi acesti ani de studiu cat si stiinta din spatele lor.

Ca sa intelegi mai bine, sa zicem ca inveti un limbaj de programare oricare ar fi acela. Nu te va ajuta la absolut nimic. De ce? Pentru ca in viata reala va trebui sa rezolvi o problema concreta si asta inseamna sa intelegi (folosind acea gandire algoritmica) cum un calculator va putea intelege si executa programul tau pentru a-ti rezolva problema. Ca sa proiectezi un program trebuie sa intelegi problema, sa o spargi in taskuri elementare pe care sa le transpui in program, sa intelegi ce tehnologii si limbaje te pot ajuta si de ce, baze de date daca este cazul, sisteme de operare, elemente de testare a aplicatiei si de implementare (deploy) si asa mai departe. Trebuie sa intelegi cum aplicatia ta se executa ca sa o poti depana atunci cand nu ceva nu functioneaza. Nu uita ca un calculator face ceea ce ii spui sa faca nu ceea ce vrei sa faca :slightly_smiling_face:.

Necesarul de cunostinte matematice depinde oarecum de nivelul la care scrii aplicatia. De exemplu la un anumit nivel scrii o librarie si la altul aplicatia care foloseste acea librarie. Aici sa zicem ca se poate acepta un nivel elementar spre mediu pentru multe zone de activitate.

5 Likes

Man, ia orice job de junior te primeste si incepi de acolo. Fara pretentii (stack, bani) si daca nu e ce trebuie iti cauti cand deja muncesti ceva.
Experienta practica nu poate fi inlocuita de nici un tutorial.

3 Likes

Nu am citit toate raspunsurile, insa parerea mea este ca te-ai aruncat in prea multe limbaje si stack-uri. Alege unul si un stack si incerca sa intelegi conceptel;e de baza. In cele mai mult situatii sun cam la fel peste tot. Pt web de exemplu lucrurile sunt aceleasi indidferent de limbaj sau stack.

pai e acelasi ca in alte domenii

care e secretul pentru un bun tamplar?
probabil (pentru ca nu sunt unul si pentru ca doar presupun ca stiu cate ceva si despre programare)
ca un bun tamplar intelege lemnul (stie despre esente si caracteristicile / comportamentul lor, stie despre umiditatea lui, etc),
intelege niste lucruri despre imbinari si cum functioneaza ele,
intelege lucruri despre prelucare (cum sa il aduca la o suprafata plana, cum masoare si sa taie la dimensiuni si unghiuri, etc),
mai stie despre alte lucruri implicate (adezivi, accesorii, etc),
stie despre finisaje si tratamente,
stie si despre unelte,
sa stie despre organizare / etape de productie / produs finit,
etc.

la fel e si pentru un programator… in primul rand trebuie sa inteleaga cat mai bine cu ce lucreaza, lemnul lui: despte biti si bytes, despre cum functioneaza un procesor, despre straturile implicate in hardware / software, etc.
nu spun ca trebuie sa inveti sa programezi in assemnbler, dar daca n-ai idee despre lucrurile astea… o sa fie greu sa ajungi un programator bun.

si la fel si pentru capatul celalalt… daca nu ai idee cum arata un produs finit, ce cuprinde el si care sunt etapele prin care ajungi acolo… n-o sa fie simplu.

cat despre locul unui incepator… sunt convins ca exista unul.
doar ca la fel ca la tamplarie… n-o sa te angajeze nimeni sa faci mobila fina din lemn de nuc pe bani multi pana nu ai facut si un sertar banal din lemn ieftin.
si n-o sa te angajeze nici macar pentru sertarul ala ieftin daca nu arati ca ai mai facut ceva concret cu cap si coada inainte sau macar cu proba de lucru sa arati ca il poti face.
o revista de tamplarie sau un clip din youtube nu vor fi suficiente (cel putin la inceput, uterior isi au locul lor, dar nu vor inlocui practica).

cam asta cred eu despre “secretul” programatorilor (si al profesionistilor in general)

later:
alegerea limbajului de programare seamana cu alegerea materiei prime la tamplarie:

  • dupa ce ai o intelegere cat de cat a lor (cunosti despre lemn, chiar daca nu fiecae esenta in parte)
  • in functie de scopul produsului final (poti construi o masa din diferite esente de lemn, dar unele sunt potrivite daca e o masa pentru gradina, altele daca e o masa de bucatarie si altele daca e o masa de conferinta sau una de lux pentru sufragerie)
  • in functie de bugetul clientului, de disponibilitate (degeaba vrei o esenta anume daca nu o gasesti in piata in conditii rezonabile de timp / pret), de uneltele pe care le ai si de priceperea tamplarului.

deci java, python, c, php, js, etc… mai tarziu.
si o sa ajungi candva sa alegi si intre fierastrau “d-al nostru” (occidental) sau japonez, dar atunci deja o sa o faci stiind ce vrei si mai ales de ce vrei.

3 Likes

Nu am mai invatat sau tastat cod de vreo 8-9 luni.

Oare e ok sa ma uit la CS50, este unul baban de 24 ore, poate chiar de vreo 2-3 ori, pentru inceput ? Stiu ca e misto din tot, nu m-am uitat decat putin si toata lumea il recomanda. Ma simt cam iesit din forma.

Ce vrei sa castigi de pe urma lui ? Daca ai facut ce ai zis in primul mesaj si ai avut un mentor mi se pare inutil.

Ori faci proiecte din care iti propui sa inveti si sa faci un portofoliu, e.g. iti faci un sistem de udat plantele cu aplicatie pe telefon in functie de tipul plantei cu AI, copiezi youtube, spotify…, ori te angajezi si ca “spalator de vase” la o firma de IT decenta si incerci sa ajungi la QA/programare ca sa ai task-uri reale.

Are 0 valoare sa te uiti la cursuri, zero. Dupa cum a spus si Ionut Staicu, prima data fa un proiect de al tau si pe parcurs iti dai seama de ce nu stii. Daca nu stii de unde sa incepi azi cu ce exista pe internet programarea nu e de tine, e ca si cum ai pune pe cineva care nu are deloc voce sa invete sa cante si sa ii zici ca cu cat se uita la mai multe cursuri de canto pe youtube cu atat va fi mai bun, dar fara sa cante ore in sir zilnic.

3 Likes

eu m-am uitat la parti destul de mari din cursul cs50 hardvard 2023 (era free pe youtube) dar din motive diferite.
informatiile nu imi erau chiar noi, dar modul de livrare a lor in acel curs a fost excelent.
asa ca l-am urmarit pentru a invata cate ceva din comunicare / livrare + pentru entertainment.
dar daca as fi la inceput… m-ar ajuta si informatiile.
dpmdv e de vazut.

Eu ma gandeam ca m-ar ajuta si sa imi mai aduc aminte, pt ca parca era in Python, si sa capat o privire de ansamblu asa, pentru ca se trece prin multe lucruri, si vad care e rolul fiecarui lucru, chiar daca la un nivel de incepator.

Mai mult de incalzire asa ma gandeam, sa reimprospatez bazele.

Am impresia ca v-am facut o impresie cam proasta, sau asa e aici pe forum cu incepatorii sau care fac reconversie.

Intradevar, sa aleg eu dintre catralioanele de cursuri si video, si tot ce e , nu ma pricep. asta nu stiu sa fac. Sa selectez eu tehnologiile care trebuie, de unde sa le iau, sa le pun cap la cap, nu. As prefera daca m-ar ajuta cineva cu experienta, sa imi fac un roadmap ca lumea, apoi sa functionez eu pe pilot automat. Sa imi spuna inveti asta, apoi asta, apoi asta, in ordinea asta. Intre timp faci aplicatiii de tipul asta-asta si asta, apoi de tipul asta, cand ajungi la nu stiu ce de invatat, atunci treci la astea mai complexe. In paralel faci asta,asta,si asta… Ceva de genul asta

M-am uitat azi pe roadmap.sh, si am gasit o varianta simplificata de backend, nu cea full care era absurda, si mi s-a parut acceptabil roadmapul de beginner. Era simpatic.

Mi-as dori mult sa fac clone, youtube, spotify,transfermarkt, etc, un site, dar frontend nu stiu deloc, si nu stiu daca pot sa ma bag si acolo, ca sunt f multe lucruri parca.

M-am uitat apropo pe link-ul lui Ionut, sa nu credeti ca ignor, chiar este o idee buna, cea cu baiatul care a facut Youtube, dar el stia frontend din ce am vazut, eu sunt cam paralel.

Oare pot invata frontend repede astfel incat sa pot da o forma si interfetei unui website ? Ceva destul de simplu. Sau dureaza sa faci lucrul asta bine ?
Stiu ca html si css se invata relativ repede.

Singura chestie e ca trebuie sa am un venit, ceva 2000+ RON.
Ori imi gasesc ceva part-time si in paralel invat si fac aplicatii calumea, cred ca as prefera asa.
Ori imi gasesc ceva full-time, dar tot ar trebui sa mai invat,doar ca nu voi avea asa mult timp

conform google,
roadmap = a plan or strategy intended to achieve a particular goal.
impresia mea e ca tie nu iti e clar unde vrei sa ajungi, caz in care e normal sa nu iti gasesti drumul.

un programator bun ar defini suficient de exact rezultatul urmarit, contextul / conditionarile si datele plecare.
poate n-ar fi rau sa le pui pe hartie si sa vezi daca sunt coerente / valide / posibile.
cu cat sunt mai clare astea (unde esti, unde vrei sa ajungi, cu ce limitari) cu atat poti cere indicatii mai exacte.

Am un amic care de 25 de ani de când îl cunosc tot învață, tot face cursuri, tot studiază… dar n-a făcut niciodată pasul să facă ceva concret. Pari să fii în situația lui.

Eu de exemplu, cu 12 clase, liceu non-info (exact ca @kleampa), fac exact învers, încep să fac înainte să știu și învăț pe parcurs. De fapt asta cred că este cea mai bună metodă de a învăța, facând.

Și un aspect foarte important, probabil foarte puțini din cei de aici au ales să facă meseria asta pentru bani. Toți am început de foarte tineri, am avut tot timpul din lume să devenim ceea ce suntem acum. Succesul a venit de la sine, în cele din urmă, dar fără să-l căutam cu disperare, pentru că în tinerețe nu ai viață socială (dacă ești nerd), te mai întrețin părinții, nu ai copii și nevastă de hrănit etc.

Cred că de asta nimeni nu o să știe să-ți explice cum devii programator, pentru că este un proces lent, extrem de lent și ajungi într-o zi programator fără să-ți dai seama cum ai procedat și nu vei fi capabil să explici cuiva cum să replice drumul pe care l-ai străbătut.

EDIT:

Și încă un pattern dăunător pe care l-am remarcat la mulți dintre cei care au decis brusc să devină programatori: se cramponează de limbaje, au senzația că limbajul de programare este panaceul, știi la perfecție C++/Python/Java/whatever și gata, ești angajabil ca senior.

Nope. Limbajul de programare este “limba” pe care o vorbești cu mașina de calcul. Este suficient să știi la perfecție limba română ca sa te poți angaja ca profesor de istorie sau ca sudor? Nope, trebuie să știi și istorie, respectiv tehnica sudurii.

Așa și la programare, contează și limbajul (altfel nu vei fi capabil să “articulezi” programul), dar mult mai important este să ai expertiză pe domeniul în care vrei să activezi. De aici trebuie să începi, să identifici domeniul din afara programării la care te pricepi cel mai bine și să te specializezi pe direcția aia.

4 Likes