Utilitatea studiilor de specialitate în domeniul nostru

M-ai facut curios si pe mine , de la ce facultati ai gasit persoane ce a migrat catre IT(programare)?
Din experienta, acestia au reusit sa se adapteze sau au abandonat nisa la un momendat?

Pe lângă lumea de pe internet (găsită prin bloguri sau hacker news etc), am interactionat si cu un număr de astfel de oameni, ca să dau anecdate pe bune:

  • Un coleg curent a studiat film ca facultate.
  • Alți doi colegi curenti ai fost angajați în urma unui internship/apprentice-ship, si aveau doar un bootcamp ca pregătire înainte. Unul dintre ei făcuse ceva gen marketing înainte, din câte am înțeles.
  • Un fost coleg a făcut armata pe bune (la tancuri in UK, a fost și prin Afganistan), după care a facut o facultate tehnică, după care s-a făcut programator.
  • Un alt fost coleg s-a lăsat în anul 2/3 de facultate ca sa lucreze full-time
  • Un număr de colegi au studiat fizica, matematică etc. Subiecte tehnice, dar nu computer science per se.

Toți mi se păreau “liferi”, dar e greu de prezis până la urmă. Se lasă multi care au studiat informatica de programare, până la urmă.

În orice caz, nu o majoritate, dar o minoritate importanta. Mult mai mulți , as zice, decat în medicina, drept, economie si alte profesii liberale.

1 Like

Sa inteleg ca afirmatii de genu’ ,: " Cautam un Absolvent al unei al facultati de speciliatate",
“un angajat care sa aibe maxim 23-24 de ani ca incepator sunt ce” ,
“Cautam pe Cineva care sa ne faca urmatori 5 algoritmi” in alt limbaj decat cel stiu de el" sunt critirii ciudate?

Eu am avut coleg stomatolog. Era mai bun la asumarea meritelor decat la cod, dar e bun pt discutie. Si nenumarati colegi care nu au apucat sa termine diversel facultati pe care le incepusera.

1 Like

Eu as zice ca da. Fiecare cerinta e ciudată în felul ei. Cea din mijloc s-ar putea să fie chiar ilegală, în sensul că face discriminare pe baza de vârstă. Ultima este de-a dreptul bizară. În sensul că nu știu ce anume încearcă să demonstreze.
Lăsând gluma la o parte, primul punct este extrem de des întâlnit în descrierile de job-uri. Dar mi se pare în cel mai bun caz o constrângere prea puternică - sunt multi programatori/IT-isti buni fără educație formală pe care un astfel de criteriu ii ignoră. În cel mai rău caz, se limitează la oameni cu educația formală, dar fără înclinație spre domeniu. Am o groază de colegi de facultate cărora nu le-aș fi încredințat să facă un led să clipească la momentul absolvirii. Eu zic ca e un punct de vedere care câștigă în importanta, dacă nu cumva e chiar ortodoxie prin multe părți ale lumii. Uite un răspuns pe [quora](Question on @Quora: How useful is formal education in Computer Science? https://www.quora.com/How-useful-is-formal-education-in-Computer-Science?srid=t2Bo&share=a21ea384) fix pe ideea asta.


Diploma mi se pare utila când (1) este de doctorat si (2) când se face angajare pentru o poziție foarte tehnica, dar tot junior. De exemplu, în inteligenta artificiala, criptografie etc.
În partea cealaltă a spectrului, dacă vrei să angajezi un hacker, nu prea există facultăți pentru asta. Trebuie luat doar după experiența.

1 Like

Si partea de algoritmi si structuri de date necesita o educatie formala, de exemplu ai diverse structuri de date: array-uri, liste inlantuite, arbori binari, dictionary(hashtable), etc, si trebuie sa stii ce complexitate de timp au operatiile de create, retrieve, update, delete, de exemplu intr-un array daca stii index-ul, accesarea pe baza de index e O(1), adica faci o singura operatie, dar cautarea e mai costisitoare, fiindca trebuie sa sortezi array-ul intai, un quicksort are O(n*log n) iar cautarea binara are O(log n), si per total se aduna complexitatile si ai O((n+1) * log n) care e echivalent cu O(n * log n), pe cand un arbore binar de cautare are din start O(log n) la cautare.

Errata:
algoritmul cu quick sort si cautare binara e eficient la compararea a doua colectii, daca faci cu doua for-uri ai O(n^2) daca faci cu quicksort si cautare binara ai O(n * log n) care e mai eficienta, pentru cautare simpla pe array e mai eficienta cautarea secventiala care are O(n) care e mai mica decat O(n * log n)

Era un banc pe tema asta: un anunț de angajare pentru un expert în securitate, iar doritorii erau rugați să posteze CV-ul pe homepage-ul microsoft.com.

4 Likes

Fata de comunicatii sau stiinte europene eu zic ca o facultate de informatica-matematica (sau ceva legat de CS) este mult mai utila din toate punctele de vedere.

Problema e cu matematica, totul este predat de matematicieni in mod formal. Pentru unii este in ordine (in special cei care n-au avut o nota mai mica de 10 tot liceul la matematica), pentru altii totul se transforma in hai sa invatam matematica si totul devine matematica adica grafuri, statistica, teoria numerelor, algebra, geometrie, analiza, economie si hai sa fim seriosi, o carte de analiza sau algebra care nu e super condensata are fiecare cate 600-800 de pagini si iti ia o ora,doua/pagina daca chiar vrei sa inveti matematica.

Practic fiecare tema va necesita un background matematic mai serios (daca in liceu ai fost la info intensiv hai sa zicem ca le-ai intalnit pe majoritatea si te-a ajutat profesorul la fiecare problema mai ciudata). Dar daca nu sau nu iti mai amintesti ciudateniile ai sa vezi ca o sa stai la fiecare exercitiu jumatate de ora pe Google doar citind despre ce naiba se cere degeaba stii structurile de date sau limbajul sau algoritmii. (iar daca nu le stii e ca si cum ai invata tabelul inmultirii fara sa stii toate cifrele)

In viata reala iei pur si simplu o librarie care stie matematica aia si o folosesti daca chiar ai nevoie pentru ceva, la facultate devine rapid foarte enervant cand se cere ceva complex matematic + trebuie sa mai stii si vreun limbaj pe care abia il inveti + probabil se cere intr-un anumit mod.

Iar cea mai mare problema a mea e ca trebuia sa ma milogesc sa imi dea cineva variabile de test la facultate, era total normal sa stii tu ce trebuia sa iti returneze programul in fiecare caz chiar daca in viata ta n-ai auzit de notiunea aia matematica si abia ai reusit sa implementezi o ecuatie diferentiala care face ceva dar nu stii ce.

1 Like

Sunt de acord ca unele facultati de la noi sunt destul de slabe, eu am inteles partea de complexitate a algoritmilor dupa ce am discutat cu diversi tipi care au fost in top la olimpiada de informatica, sau oameni care chiar lucreaza cu asta in practica, dar nu sunt de acord ca in viata reala iei o librarie si gata, e posibil uneori ca o implementare custom a unei structuri de date sau a unui algoritm sa faca diferenta pe piata.

Facultatilea acestea slabe, iti permit sa ai un job part-time sau chiar full time avand sansa o termii, deci uite ca exista o utilitate pentru orice…

Nu ai inteles bine, nu inseamna ca sunt slabe, inseamna ca tu trebuie sa inveti tot ce se cere pe langa informatica fiindca nu prea ai cum invata in acelasi timp toate lucrurile chiar daca ti se cer in acelasi timp. Facultatea e facuta sa te pregateasca pentru mediul academic si acolo n-ai ce cauta fara cunostinte solide de matematica.

Pe scurt daca stii si iti place matematica e usor si merita sa faci o facultate, la fiecare facultate ai un examen de admitere din matematica, daca stii sa il rezolvi de un 8-9 atunci o sa fie usor fiindca trebuie sa inveti doar ce tine de informatica. Dar daca nu stii si nici nu iti place matematica la un asa nivel atunci o sa fie un chin sa scoti un 5 la toate materiile legate de informatica si o sa simti ca nu stii absolut nimic chiar daca inveti fiindca dupa cum am zis nu e ca la fizica sa iei 80% din puncte daca nu faci calculele la final ci problema de matematica e parte din algoritm de obicei si fara sa o intelegi te uiti ca boul la problema.

In plus ti se duce tot cheful cand fiecare program pe care il scrii e de fapt o problema de matematica

1 Like

Ai dreptate, am dat admiterea la matematica la facultate, a fost banal am luat 10, la licenta desi toti colegi mei au dat proba scrisa la subiecte de matematica eu am ales doar informatica am zis sa mai invat ceva, am ales C++, OOP in Java, Retele de calculatoare si Inginerie Software, am luat 9.33, am fost destul de dezamagit, am crezut ca merit mai mult, dar nu mi-am mai chinuit profesori cu contestati, am avut noroc ca mi-au dat 10 pe proiect si atunci am fost incantat de o medie de 9.66, dar cel mai important ca mai am si acuma cunostintele de atunci, mai putin C++, in facultate am scris algoritmi de compresie a datelor cu STL si arbori Haufman partea aia de C++ am cam uitat-o ca nu m-am mai lovit de ea.

2 Likes

Eu am terminat managementul si fac pogramare (Webdevelopment).
Eu zic asa: conteaza sa ai facultatea pentru ca acolo asimilezi (poate nu…depinde) o parte din teoria pe care mai tarziu e greu sa o inveti singur (algoritmi, baza de date etc) insa depinde si ce faci in programare. De ex eu in PHP ma descurc cu cat stiu, si cu ce mai pot studia din online, insa sunt alte limbare in care au nevoie mare de algoritmica pe care cu greu ar face-o cineva care nu a trecut printr-un curs intens.

Deci, depinde de tehnologie, Stiu multi care fac frontend si au terminat alte facultati.

PS: cred ca daca as fi terminat o facultate as fi inteles mai repede unele chestii…in rest fac aceeasi munca ca si colegii mei :slight_smile: perseverenta conteaza.

2 Likes

Eu am fost în liceu la profilul Economie - Drept Administrativ iar la facultate m-am dus la Drept. În timpul liceului m-am mai jucat cu un CIP (un fel de HC) împrumutat de la un prieten, dar cam atât. Am renunțat la facultatea de Drept în anul 2 deoarece aveam un coleg de apartament student la Info care mi-a reamintit de hobby-ul meu din liceu și am început să-mi bag nasul prin cod. Am învățat singur ActionScript, apoi HTML, CSS, PHP și MySQL. Între timp m-am înscris și la o facultate privată la Informatică (privată pentru că la stat n-aș fi intrat nici pe locurile cu plată la câtă matematică mai știam eu, în ciuda faptului că mi-a plăcut matematica). Acolo am mai prins câte ceva despre Pascal, C, bazele algoritmilor și sisteme de operare.

În urma experienței mele, părerea mea e că nimic nu poate înlocui o facultate serioasă de profil dacă vrei să profesezi serios în domeniul IT. Și la privat poți învăța destule dacă vrei (profesorii mei erau în mare parte profesori de la Universitatea de Vest, la stat, care predau cursuri și la facultatea privată unde eram eu), dar nu ești la fel de stimulat…

Lucrez ca web developer de 10 ani și mă descurc foarte bine, cum zicea @essteffan, cu ce am învățat și învăț singur plus resursele de pe net, dar nu reușesc să scap nicum de sentimentul că aș fi putut face mai mult… :pensive:


P.S.: Dacă vrei să înveți singur, sfatul meu e să încerci s-o faci și din cărți fizice, tipărite pe hârtie. Doar tutorialele nu-s de-ajuns pentru că acolo vei citi și vei da copy/paste la codul dat ca exemplu. Citind dintr-o carte, va trebui să citești codul, să-l parcurgi și să-l compilezi/interpretezi în cap. Asta te va ajuta să înțelegi mai bine ce se întâmplă și cum funcționează respectivul cod.

6 Likes

the same shit! Adica acelas sentiment

Si eu am acelas sentiment desi am fost in liceu la intensiv informatica, am facut facultate de informatica, am fost apreciat de profesori, colegi, dar cred ca as fi putut aprofunda mai mult partea de structuri de date si algoritmi, resursele necesare le-am avut cel putin in liceu, profesori foarte buni pe partea asta, ma mai gandesc uneori ca as putea sa fac un master pe partea asta, am o baza serioasa, dar mi-ar placea sa inovez in acest domeniu, si desigur legat de master e important sa ai si un job care sa iti permita sa faci asta.

Nu prea-i viata si cu job si cu master/doctorat, oricat de acomodant ar fi unul fata de celalalt. Studii la nivel de graduate school trebuie tratate ca o slujba full-time. Competitia din Europa de Vest, SUA, China, Japonia etc. asta face - cel mult internship-uri vara sau o slujba de predare pentru vre-un profesor. La noi merge treaba asta pentru ca altfel chiar nu s-ar mai baga nimeni in domeniu. Dar calitatea research-ului sufera, drept urmare.

Un exemplu bun unde poti aplica algoritmi si structurile de date sunt engine-urile de baze de date, mai ales ca acuma sunt la moda bazele de date NoSQL orientate pe documente, baze de date orientate pe graf-uri, real-time databases, databases optimized for devices, etc, un exemplu de astfel de engine NoSQL dupa modelul MongoDB scris in C# ce poate fi inteles de un singur om este LiteDB - https://github.com/mbdavid/litedb , un alt exemplu de engine de baza de date open source NoSQL scris in C# ceva mai complex este RavenDB - https://github.com/ravendb/ravendb, ceea ce interesant la acest engine este ca e ACID, majoritatea engine-urilor NoSQL nu sunt ACID, nu suporta tranzactii, desigur viitorul sunt engine-urile care ruleaza pe Linux deoarece acestea se scaleaza pe orizontala pe mai multe masini fara cost-uri cu sistemul de operare.

Edit:
Am reusit sa compilez cu succes LiteDB pentru Linux, proiectul de teste nu merge fiindca pe Linux sunt alte framework-uri pentru teste unitare, dar momentan IDE-urile de C# pentru Linux nu ofera o experienta prea buna, de exemplu Rider imi afiseaza keyword-uri cu rosu in editor desi se compileaza proiectul iar MonoDevelop mai ingheata din cand in cand.

True. Dar majoritatea celor care lucrează efectiv la aceste sisteme, pentru Google, Amazon, Facebook, Twitter, etc au doctoratul deja în domeniu.

Dar sunt foarte multe proiecte open source de acest gen la care poti sa contribui, ca cele specificate mai sus, unele mai mici, altele mai mari, au issues pe github si poti sa iti incerci norocul cu un pull request pe un bug sau feature din lista.