un blog de Radu Dumitru

►► canalele mele de YouTube: youtube.com/RaduDumitru (personal) și youtube.com/NwraduBlog (tech) ◄◄

Nici în străinătate nu se învață programarea în școli

17 Apr 2018  ·

GÂNDURI  ·

23 comentarii

La noi se spune des că școala îi învață pe prea puțini elevi programare, deși este o meserie bănoasă și căutate, nepregătindu-i astfel pentru ceva real în viață.

Obișnuiam să zic același lucru. Eu n-am făcut programare în școală și liceu, cu excepția unui semestru de Turbo Pascal predat de obicei la tablă, cu vreo 2-3 ore ținute și în fața calculatorului. Contactul cu C++ în facultate a fost scurt, la nivel de bază.

Îi invidiam atunci pe colegii mei ce veneau din licee unde se predase temeinic informatica. Majoritatea lucrau deja pe la diverse firme, în timp ce pe mine mă aștepta, la finalul celor 5 ani, etapa de căutare cu CV-ul în mână a unui post de muncă, neștiind concret la ce aș putea fi bun. Aceiași colegi sunt, acum, bine plătiți pe la diverse companii din țară sau străinătate sau antreprenori, muncind pe cont propriu.

Se pare, însă, că nu te poate învăța cineva programarea, ci trebuie să o înveți chiar tu. Mitul că școala te-ar putea învăța așa ceva, dar soarta ți-a fost potrivnică trebuie să dispară.

Cei de la Stack Overflow fac în fiecare an un sondaj de amploare în rândul programatorilor. Anul acesta peste 100.000 din toată lumea au completat chestionarul respectiv. Sunt multe întrebări, dar mă axez doar pe cele despre cum au învățat programare.

86,7% spun că au învățat singuri un nou limbaj de programare. Următorul răspuns, ca pondere, este că au urmat un curs online pentru a învăța un limbaj de programare, dar procentul este de 48%, practic la jumătate.

Întrebați cum au învățat singuri un nou limbaj de programare, oamenii au răspuns că din documentația oficială, din întrebări și răspunsuri de pe net sau chiar Stack Overflow, din cărți sau e-books, din help-ul uneltei și alte asemenea metode. Doar 19,7% au spus că dintr-un material de curs predat în școală.

Acest gen de rezultat merge și mai departe. O parte dintre programatori nu au terminat niciodată școala, iar o parte din cei ce-au terminat-o nu s-au specializat în programare sau computere, deci probabil nu au studiat astfel de lucruri.

În 2017, mai puțin de un sfert din respondenți au declarat că educația formală a fost foarte importantă sau importantă pentru cariera lor de programatori.

Iată și rezultatele din 2016, când 69% s-au declarat self-taught, sub un sfert au învățat din cursuri de la școală sau universitate.

Prin urmare, școala nu te va învăța niciodată programare, ci trebuie să o înveți tu. Chestia are pare și foarte logică: sunt zeci de limbaje de programare, domeniul evoluează permanent, la fel și cerințele și sursa banilor, așa că este foarte dificil ca ce înveți în școală să-ți fie suficient ulterior în viață în acest domeniu.

Ce poate face școala? Poate da un impuls în acel domeniu. Da, inclusiv un curs despre Turbo Pascal sau C este suficient pentru că trebuie să te învețe doar chestiile de bază precum ce-i o variabilă, concepte logice de tipul if-then-else, recursivitate, ordinea operațiunilor șamd. Și nici măcar nu-i nevoie de școală pentru asta, ci oricine cu mintea potrivită pentru astfel de lucruri le poate învăța rapid din prima carte care-i iese în cale.

Sigur, contează și societatea. Contează ca părinții să aibă bani pentru a-i lua copilului măcar un laptop, contează o școală care să-ți dezvolte mintea, contează să crești suficient de ferit de probleme încât să ai timp să-ți urmărești hobby-uri precum programarea.

Școala îți dă, dar nu-ți bagă în traistă. Cred că societatea noastră așteaptă prea mult de la alții, personaje anonime și colective, soluții salvatoare pentru diverse probleme, fie că vorbim de cunoștințe pentru o meserie bună, de curățenia în jurul blocului sau de vandalizarea spațiilor publice.

Studiul complet este pe Stack Overflow, iar pentru alte analize și alți ani intrați aici.

    23 comentarii

  1. Este o diferență mare între “cum/unde a învățat un programator un nou limbaj de programare” și “cum/unde ai învățat primul limbaj de programare”. Și, cum ai spus mai sus, întrebarea esențială este unde ai învățat bazele programării.

    Altfel se poate spune același lucru despre aproape orice subiect de studiu, mai ales unul de tip inginerie, cu aplicație practică.

      (Citează)

    • Da, dar prea mulți cred că școala trebuie să te învețe de la A la Z un limbaj și să fii bun de angajat cu el. Nici nu se gândesc că sunt atâtea limbaje și domeniul progresează așa rapid încât asta ar fi imposibil.

        (Citează)

  2. scoala te poate invata programare si de multe ori chiar te invata.
    in functie de scoala.. invataturile sunt de baza (ex: in liceu) sau aprofundate (la facultate / master).

    confuzia pe care o vad aici este intre “programare” si “limbaj de programare”.
    limbaj.. e destul de explicativ: te ajuta sa vb aceeasi limba cu calculatorul si e similar cu a invata o limba straina (una simpla cu putine cuvinte, cu o gramatice destul de stricta totusi).
    programarea, in limbaj uman, ar fi gandirea.
    daca poti sa gandesti si cunosti limba romana poti sa o si vb, respectiv sa “programezi” un text de blog sau alt fel de text.
    daca mai ai si o cultura si o experienta cu romana / romania.. atunci poti sa faci deja metafore sau alte constructii specifice.
    cam asa e si cu programarea: ai nevoie de niste principii care sa iti structureze gandirea (separat de limbaj), de un limbaj ca sa poti sa transmiti calculatorului ce ai gandit si de niste metafore / optimizari specifice limbajului pentru fineturi.

      (Citează)

    • ps. programare poti sa inveti si din carti din anii ’70 si daca o faci bine vei putea fi foarte actual.
      in cartile alea gasesti fondul, pe cand cartile sau tutorialele care te invata cum sa colorezi un buton fara sa iti spuna ce e ala un buton sau cum functioneaza sunt despre forma.

      daca ai un fond.. poti oricand sa ii dai diverse forme.
      dar daca ai doar forma.. e mai greu

        (Citează)

    • si exista si o explicatie obiectiva pentru care foarte multi invata un limbaj de programare singuri: scoala nu a fost pregatita pe vremea lor sa ii invete (din diverse motive) si au fost aruncati in “campul muncii” si au fost nevoiti sa invete singuri.

      similar cum scoala noastra invata limba rusa multa vreme si apoi au trecut la engleza / franceza / alte “limbaje”.
      fie nu avea oameni suficienti si pregatiti pentru aceste noi directii, fie nu avea materiale ajutatoare sau alte lipsuri de genul.
      dar cand ne-am lovit de televizor / internet am invatat singuri.
      daca ne gandim la cati oameni lucreaza in spania sau italia vs. cate cursuri de italiana sau spaniola au fost predate in scoli.. unde crezi ca au invat respectivii limba?
      e ceva rau in asta?
      i-ar fi ajutat cu ceva daca scoala ii scotea experti in italiana? (poate pe cativa, pe cei care acum lucreaza chestii normale in spania probabil ca nu).

      ma opresc din comentat ca am scris mai mult decat articolul si asta de obicei nu e un semn bun :)

        (Citează)

    • Problema este când oamenii nu înțeleg că școala trebuie să te învețe să gândești și apoi te specializezi tu pentru carieră.

        (Citează)

    • “Problema este când oamenii nu înțeleg că școala trebuie să te învețe să gândești și apoi te specializezi tu pentru carieră. ”

      Dar daca inveti niste algoritmi relativ simpli folosind elementele de baza ale unui limbaj (C++, Pascal sau C#), chiar asta inveti: inveti sa gandesti folosind acea paradigma. Care e totusi departe de ce gasesti la matematica sau fizica.

      E un start bun si, inca ceva important: afli destul de devreme daca meseria aia e pentru tine sau nu. Ma refer la varsta liceului (14-18 ani). Asta pentru ca eu nu am intalnit in viata mea om care sa se apuce sa programeze si care sa nu se dumireasca in 6-8 luni daca meseria asta e pentru el sau nu. E clar cu “”da” sau “nu”, nu e cu “poate”. Cine zice “poate” doar se pacaleste singur, raspunsul e sigur “nu”.

      Si spun asta ca un om care a terminat politehnica acum multi ani si care a invatat singur programare. Si care isi ajuta astazi copilul de liceu la proiectele de programare de la scoala.

        (Citează)

  3. vorba ia, daca nu prea te pricepi la nimic, te faci politician sau taximetrist. sau blogger.

      (Citează)

    • Ce vrei să spui?

        (Citează)

    • Cred ca se refera la faptul ca n-ai cum sa stii cum se invata programarea daca nu esti tu insuti programator. In sensul ca iti dai cu parerea despre ceva care tu nu stapanesti. Probabil ca urmeaza un articol gen “medicina nu se invata in spitale” ca ai vazut tu intr-un film. :)

        (Citează)

    • Păi nu e mai simplu de zis așa?

      Eu sunt dintre cei care a învățat singur programare, că-mi plăcea să fac diverse progrămele începând cu Qbasic. Nu mi-a plăcut însă dincolo de un punct, nu cred că aș fi lucrat în domeniu oricum.

      În școală, însă, singura materie făcută cum trebuie a fost cea legată de SQL și baze de date și asta pentru că am avut o profesoară bună la laborator (proful de curs era inutil). Tot la nivel de bază s-a făcut, dar nu aveau cum altfel.

        (Citează)

    • Qbasic era bun la vremea lui, la inceputul anilor 90.

      In principiu, nu prea ai cum sa inveti programare fara mult studiu individual, ca dealtfel orice limba straina sau condusul unei masini.

      Pe de alta parte, nici materia predata in facultati nu este actualizata, se predau limbaje sau tehnologii aproape abandonate.

      Desigur exista si profesori care predau tehnologia la zi:
      https://profs.info.uaic.ro/~busaco/

        (Citează)

  4. De obicei articolele de pe aici sunt exceptionale, dar asta, in particular, e de nivelul “stirilor” A3 – o dezinformare totala, asa, pt. oamenii care viseaza sa lucreze ca programatori, desi momentan sunt ospatari.
    Daca intram pe Stackoverflow, si ne uitam pe “Education”, peste 60% au facut licenta sau master in domeniu (cred ca era spre 68%, la care se mai adauga si cei care sunt momentan studenti acolo, deci mergem cam spre 3/4). La ce ai decupat tu frumos chart-ul se refera pe langa asta, cand la job iti cere un framework nou, cea ce e si normal. In cei 10 ani de experienta, a trebuit sa lucrez probabil cam cu 50+ framework-uri, tool-uri, etc. Le inveti, le mai uiti, mergi mai departe.
    Eu tin si interviurile tehnice la firma unde lucrez. Inca astept CV-ul sau omul care nu a terminat ceva de profil si sa ma convinga sa-l propun spre angajare. Nu zic ca nu exista – cunosc cam 3-4 oameni care sunt si buni, poate din…1000?

      (Citează)

    • Si eu cred ca acea gandire de programator invata la scoala, desi am prieteni care nu au terminat facultatea (desi au inceput-o) si sunt absolut geniali mai ales in chestii low-level (assembler, IDA pro, ollydbg). Dar persoanele acestea au inceput facultatea, au apucat sa inteleaga niste principii, apoi au abandonat-o ca li s-a parut ca o fac degeaba. Daca tu stii deja sa faci un sistem de operare sau un compilator acasa, te cam duci degeaba la facultate.

      Mai am un amic ce a terminat medicina si s-a reprofilat pe programare, acum lucreaza in COBOL.

      Ai dreptate cu chart-ul, multi de acolo se joaca putin acasa cu niste tehnologii si se cred programatori.

        (Citează)

    • @Tano: multe materii te învață gândirea de programator: matematica, chimia, fizica. Toate științele exacte, bazate pe logică și demonstrații precise, contribuie.

        (Citează)

    • La firma unde activez sunt cel putin 6-7 persoane (din vreo 50) care nu au terminat ceva de profil (eu de ex n-am terminat automatica si am 12+ ani in domeniu). Am vreo 2 colegi care au terminat ASE (economie), vreo 2 academia militara, unul din ei agronomie (si e foarte bun pe kernel programming).

        (Citează)

    • @Arpi: licența “în domeniul IT” nu înseamnă musai programare, nu?

      Problema este cu cei care cred că școala trebuie să-i învețe tot ce e necesar pentru a lucra ca programatori. Asta nu se întâmplă nicăieri. Aș spune deci că nu este o dezinformare totală pt oamenii care visează să lucreze ca programatori, ci din contră, o dovadă că trebuie să facă singuri eforturi în acest scop. Școala nu-i va învăța o meserie și nici nu le va găsi de muncă.

        (Citează)

    • “In cei 10 ani de experienta, a trebuit sa lucrez probabil cam cu 50+ framework-uri, tool-uri, etc.”

      Ca un programator batran ce sunt, nu pot sa constat decat ca lumea a luat-o razna: 50 de framework-uri in 10 ani. Cred ca de aia am si inceput sa ma gandesc din ce in ce mai des la pensie sau la reprofilare.

        (Citează)

  5. Eu am făcut programare din Liceu de la Turbo Pascal la C++ si Fox Pro iar acum lucrez pe Java învățat dintr-o carte de la facultatea de Info, pe vremea aia nu existau tutoriale pe net.

    Sincer in liceu eram foarte bun pe partea de algoritmica dar pe unde am lucrat a fost in general un mix de baze de date + programare web, deci trebuie sa te adaptezi.

    In lumea Java a fost haos pana când Oracle l-a preluat însa nu a ajuns la nivelul Microsoft care da tonul si își impune niște framework-uri.
    In lumea JavaScript este haos total, la 2 ani apare un alt framework, este cam greu sa tii pasul, sunt câteva meme-uri interesante pe acest subiect.

    Legat de articolul cu Amazon România, ce nu se spune acolo este ca nu toti angajații lucrează ca Programatori sau QA, multi sunt absolvent de litere, traduc si editează niște cataloage.

    Treaba cu facultatea de profil este importanta ca te scutește de impozit dar cu schimbările de anul asta cred ca s-au eliminat.

      (Citează)

  6. Intrebările din sondajul ăla nu-s alese cum trebuie. La prima întrebare, “la facultate” nu apare ca opțiune.

    și eu din ce am mai auzit de la firme mari de soft, tot așa știu, că nu prea sînt angajați la firme din astea care să nu aibă facultate. Că nu au învățat acolo decît o [relativ mică] parte din chestiile specifice de la job, de ex că au învațat C și acum lucrează în C# și nuștiuce framework, aici îți dau dreptate – în școală/facultate înveți bazele, nu specializarea.

      (Citează)

  7. Cred ca stiu cel putin vreo 4 gurus (arhit.) in java la firma la care lucrez care is college dropouts. Eu fiind unul dintre ei. :),
    In US nu da nimeni 2 rahati pe degreeul tau ci mai exact pe ceea ce stii. Interviul practic face tot. In ziua de azi scoala este complet inutila daca esti pasionat de programare.
    Ce ii drept aci scoala e foarte scumpa, nu oricine isi permite.

      (Citează)

  8. exemplul personal…bine, mie nu imi place sa invat singur. Imi fuge mereu creierul de aiurea.

    la liceu am intrat in legatura cu programarea. Toata lumea injura pascalul, cul si fox proul de atunci. Bine, nici eu nu as face acum fox pro. E total depasit, nu e relational si chiar consider ca anu ala a fost unu pierdut.
    Dar, Pascalul. Da, nu poti sa faci treaba cu el. E doar un sistem sa faci algoritmi. Are un punct excelent: nu e flexibil. Trebuie sa pui variabilele sus. Sa declari functiile si procedurile inainte sa le folosesti. De ce e bun? Te invata structura.
    Toti ar vrea sa invete C# sau Java din prima. Fara sa aiba nici macar o baza. Dar deh, “la ce e buna matematica, la ce e buna aia, da ailalta?”.

    In momentul in care ai baza te doare la salam cand schimbi frameworkul. Daca schimbi limbajul de programare ai o mica problema, dar nu tragica. Pe astea, din pacate, esti obligat sa le inveti singur.

      (Citează)

  9. De mult timp asteptam un articol din asta. Scoala iti da cate un pic din fiecare si te invata cate una sau alta. Matematica aia complicata nu e ca vrea scoala sa te faca berbec, inveti faptul ca esti pus in fata unor situatii (ca in viata reala de adult) unde daca vrei sau nu vrei trebuie sa faci fata si sa te adaptezi. Te invata cate un pic din fiecare in asa fel incat copilul sa isi dea seama ce inclinatii are si ce vrea sa faca. Putini inteleg asta si prefera sa se gandeasca “vai doamne dar la ce imi trebuie mie asta”.

      (Citează)

    Alătură-te discuției, lasă un mesaj

    E-mail-ul nu va fi publicat. Fără înjurături și cuvinte grele, că vorbim prietenește aici. Gândiți-vă de două ori înainte de a publica. Nu o luați pe arătură doar pentru că aveți un monitor în față și nu o persoană reală.

    Apăsați pe Citează pentru a cita întreg comentariul cuiva sau selectați întâi anumite cuvinte și apăsați apoi pe Citează pentru a le prelua doar pe acelea. Link-urile către alte site-uri, dar care au legătură cu subiectul discuției, sunt ok.


    Prin trimiterea comentariului acceptați politica de confidențialitate a site-ului.



    Vreți un avatar în comentarii? Mergeți pe gravatar.com (un serviciu Wordpress) și asociați o imagine cu adresa de email cu care comentați.

    Dacă ați bifat să fiți anunțați prin email de noi comentarii sau posturi, veți primi inițial un email de confirmare. Dacă nu validați acolo alegerea, nu se va activa sistemul și după un timp nu veți mai primi nici alte emailuri

    Comentariile nu se pot edita ulterior, așa că verificați ce ați scris. Dacă vreți să mai adăugați ceva, lăsați un nou comentariu.

sus