-
Nu te lasa pacalit, aceasta postare chiar este despre programare, arhitectura sistemelor, dar si despre un sistem de incalzire.
Daca nu-ti dai seama cum poti vorbi despre programare fara sa folosesti programare, atunci ar trebui sa citesti cartea “The Passionate Programmer” de Chad Fowler, este o carte foarte buna. Povestirile legate de jazz din acea carte m-au inspirat sa scriu aceasta postare.
Povestea incepe intr-un apartament nou dintr-o cladire veche. Sau cel putin, e nou pentru mine.
Cladirea are o centrala proprie, foarte veche si extrem de ineficienta. Dupa o lunga analiza, am decis sa-mi instalez propria centrala de apartament si sa ma deconectez de la sistemul de incalzire al cladirii.
Pana aici nimic deosebit, multa lume face asta, parte pentru confort, parte pentru optimizarea cheltuielilor.
Acestea fiind spuse, aveam un proiect si aveam nevoie de un dev. Sau, cu alte cuvinte, aveam un sistem de incalzire de facut si aveam nevoie de cineva care sa-l construiasca.
Am intrebat in jur de un dev “bun”.
Ca in orice alt domeniu, sunt multi oameni care vin cu solutii proaste. Sunt unii care fac oferte foarte bune, dar nu sunt capabili sa termine lucrarea, sau scriu cod urat care nu este scalabil, sau, si mai rau, imposibil de mentinut.
Avand in vedere ca tot ce stiu despre centrale si sisteme de incalzire este cam ce stie oricine dupa ce a cautat subiectul pe google pentru aproximativ doua ore, am vrut pe cineva in care sa am incredere, asa ca am cautat dev-ul pasionat!
Am avut cateva recomandari. Primul mi-a spus ca trebuie sa-mi pun tevile aproape de travan. Dupa ce l-am convins ca nu vreau ca apartamentul meu sa arate ca o fabrica plina de tevi mi-a spus ca in mod sigur trebuie sa inlocuiasca (cel putin) un calorifer pentru ca nu poate trage o teava prin spatele lui. Aproape ca puteam sa-mi bag toata palma in spatele caloriferului asa ca am concluzionat ca cel care vine trebuie sa fie capabil sa treaca testul de a trage o teava prin spatele caloriferului.
Era evident ca nu era un dev bun. Un bun dev trebuie sa poata lucra cu cerintele, un proiect trebuie sa respecte cat mai multe din cerintele clientului, iar daca nu poate atunci sunt cateva explicatii: nu poate pentru ca nu stie cum sau nu vrea pentru ca stie ca este greu si nu vrea sa se complice. In unele cazuri asta nu este o tragedie, poate este mai ieftin si mai rapid, iar in cazul lui ar fi fost. Din pacate pentru el, eu eram interesat de calitate.
Si apoi a aparut programatorul pasionat. Nu a spus la niciun moment ca este ceva ce nu poate face, era mereu vorba doar de un cost si, poate, de o consecinta. Can lucrezi cu un dev mai, totul legat de ei e mai scump, nu doar munca lor: vor vrea servere mai bune, unelte mai bune si uneori mai mult timp pentru lucruri precum testare si mententanta. Cu alte cuvinte, uneori pretul este mai mare, nu doar pe loc, ci si pe termen lung. Un proiect de calitate necesita timp si bani.
Acesta este rezultatul proiectului meu:
In caz ca nu ai mai vazut un sistem de incalzire pentru un apartament, poate ar trebui sa stii ca, in afara de tevi, nimic altceva nu este neaparat necesar.
Este doar pasiune!
De exemplu: pompa din dreapta jos, este acolo doar ca sa forteze apa sa se miste mai repede prin instalatie. Gandeste-te la ceva de tipul Redis, care va avea un efect benefic asupra sistemului, dar majoritatea sistemelor vor lucra foarte bine fara el. Evident, la un moment dat ar putea chiar avea nevoie de mententanta sau poate creea si probleme, ca aceasta problema din Magento 2: https://github.com/magento/magento2/issues/10002. Orice sistem vine cu pretul lui.
Vasul de expansiune din stanga jos nu era necesar (in sensul in care centrala are deja unul integrat), dar nu este o idee rea sa ai unul in plus. Este ca si cum ai resurse suplimentare (spatiu de stocare suplimentar, ram sau CPU) pe care nu le folosesti, de fapt, in mod constant. Un server nu ar trebui in general sa depaseasca un anumit load, acela este vasul de expansiune al serverului pe care trebuie sa-l iei in considerare.
Filtrul de apa este ca un firewall, ai nevoie de el, este protectia ta, poate marea majoritate a timplui va fi inutil, dar atunci cand vei avea probleme pe instalatie iti va parea bine ca il ai, pentru ca el le va filtra.
Partea buna cu un dev pasionat este ca si alti devi ii inteleg si ii apreciaza munca. Asta este foarte important, indiferent de industria “dev-ului”.
Singurul care a avut ceva de comentat a fost tehnicianul care facea ISCIR-ul. Puteai sa-ti dai seama foarte usor ca nu e pasionat, a vrut sa spuna ceva de rau doar ca sa ma impresioneze pe mine cu expertiza lui.
Din pacate pentru el, a facut niste comentarii foarte ridicole dupa care mi-a facut o oferta de mentenanta. El era consultantul, nu a facut proiectul si nu a vrut sa munceasca la el, dar in mod sigur vrea sa faca un ban din el fara sa depuna niciun fel de efort.
Cred ca o concluzie este ca intre developeri, calitatea si pasiunea transcend industria.
-
IT-ul este probabil unul dintre cele mai dinamice domenii de pe piata de locuri de munca, iar oamenii reprezinta o resursa foarte importanta si totodata limitata.
Si totusi oamenii vin si pleaca destul de des, iar cei mai multi se plang de lipsa motivatiei.
Totul se va termina acum cu acest ghid simplu pentru motivarea programatorilor si nu numai!
Programatorii au nevoie de probleme “challenging”, tot timpul spun ca vor lucruri mai noi si mai challenging, nu?
Da-i un challenge adevarat! Pune-l sa obtina specificatii de la un client care nu stie ce vrea, lasa-l sa se chinuie, eventual lasa-l singur, sa simta adrenalina unei provocari adevarate!
Trebuie retinut ca un programator nu este decat un Project Manager reprimat, da-i sansa sa se exprime!
Dar nu trebuie sa te opresti aici, nu exista provocare mai mare decat sa lucrezi la mai multe lucruri in acelasi timp. O idee buna ca sa maresti complexitatea este sa-i dai ocazia sa lucreze la mai multe proiecte in paralel. Da-i ocazia sa aiba mintea ocupata cu lucruri cat mai diferite, diversitatea este mereu buna, nu?
Un secret pentru a exploata diversitatea la potential maxim este sa aiba atributii diferite pe diferite proiecte, poate un proiect care implica management sa alterneze cu unul de mentenanta. Este pacat sa nu aiba parte de suficienta diversitate!
Scrie prea mult cod? Trebuie sa faci ceva in sensul asta! Atunci cand un programator sta concentrat si lucreaza la ceva nu este nimic altceva decat un strigat disperat dupa atentie. Trebuie sa faci ceva ca sa intrerupi cercul acesta vicios, este de datoria ta ca manager sa-l salvezi!
Trebuie sa gasesti un mod sa-l intrerupi: incearca cu cateva sedinte, ajuta mereu. Daca pare dornic sa iasa din sedinta, este doar un semn ca isi doreste sa intre in urmatoarea sedinta!
In timp o sa observi ca oamenii cu cat sunt mai buni la scris cod, cu atat isi doresc mai tare sa nu mai aiba timp sa faca asta. Totusi, nu iti va spune asta, sau, chiar daca iti spune, este doar pentru ca el nu stie ce-si doreste cu adevarat.
Iar pana la urma, daca ii place atat de mult sa scrie cod, poate ar trebui sa-l duci la nivelul urmator si sa-l pui sa si-l testeze singur. Pana la urma, daca el l-a scris, cine altcineva sa stie mai bine cum sa-l testeze?
Mai este un lucru de mentionat legat de cod in contextul unui challenge. Cand vine un programator la interviu, ce spune el de fiecare data este “vreau sa invat lucruri noi”. Cum aplici aceasta dorinta? Simplu, trebuie doar sa-l pui sa faca ceva ce nu stie! Asa ii prezinti ceva ce este nou si challenging in acelasi timp. Este programator PHP? Nu-i nimic, da-i un proiect de Java! Este programator de Java? Nimic mai simplu, da-i un proiect Objective-C! Poate uneori este greu sa gasesti noi tehnologii pe care nu le cunoaste si pe care nu a incercat deja sa le invete, dar fericirea unui programator nu este un lucru usor de obtinut!
Sa nu cazi in greseala da a acorda salarii corelate cu postul, nu-ti face griji, salariul este confidential, nu vorbeste nimeni despre el. In special atunci cand recomanda un prieten, in mod sigur nu o sa se intereseze de salariul care i-a fost oferit acestuia, doar este confidential, ar fi lipsa de etica profesionala sa se intereseze, nu ar trebui sa-ti faci griji in acest sens.
Si, ca tot am mentionat interviuri, poate uneori te gandesti ca procesul de angajare trebuie sa produca rezultate coerente. Nimic mai gresit, de ce este nevoie cu adevarat? Asa cum am spus si mai devreme: Diversitate! Am citit un articol acum ceva vreme despre firme chinezesti care angajeaza femei frumoase pentru a stimula mediul. Mereu trebuie sa gasesti moduri noi de a integra ultimele tendinte, dar daca tu ai doar posturi tehnice deschise, trebuie sa te descurci cu ce ai. Poate te gandesti ca a angaja pe criterii estetice poate fi problematic uneori, mai ales cand sunt posturi tehnice. In acest caz trebuie sa-ti dai seama ca motivarea trebuie gandita si la scara larga. Da, poate unele echipe o sa se adapteze mai greu la acesti noi membri ai echipei, dar daca persoana respectiva o sa se faca remarcata in orice fel, inseamna ca ai facut o treaba buna!
Sa nu uitam de traininguri si conferinte. Cand ai vorbit ultima oara cu un programator si a zis ca nu-si doreste un training sau sa mearga la conferinte de specialitate?
Motivatia trebuie mentinuta, ca orice alta dorinta. Exista doua componente: dorinta pentru ceva si, nu in ultimul rand, lipsa acelui ceva dorit. Daca iti doresti ceva este pentru ca nu il ai inca, nu-i asa?
Daca nu ai inteles deja, solutia este simpla: nu-l lasa sa aiba acel ceva dorit. Vrea un training? Organizeza trainingul, apoi ai grija sa trimiti persoanele care sunt cel mai putin interesate la el. El o sa vada ca se poate, chiar daca nu pentru el.
Poate asta o sa fie uneori un challenge si pentru management, dar cu multa atentie este realizabil! Pastreaza dorinta vie!
Un alt sfat legat de traininguri: pentru a pastra dorinta vie este util sa-l trimiti la traininguri de care nu este interesat, dar de care este interesat altcineva. Asa o sa ai mereu angajati interesati de traininguri si care fac traininguri, dar care sunt motivati in continuare!
Atunci cand munceste nu trebuie sa vada utilitatea muncii lui, este foarte important. Daca o sa o vada, cum o sa mai fie motivat sa continue? E ca si cum urci un munte, de ce sa-l mai motiveze urcarea daca a vazut cat este de sus? Trebuie sa ai grija sa nu-si dea seama unde a ajuns: este bine sa nu aiba acces la statistici ca nu cumva sa aiba un sentiment de finalitate, de tinta atinsa, de tel realizat, cum ar mai putea fi un challenge atunci?
Si nu uita sa nu-i arati incredere, trebuie sa o construiasca singur. Trebuie sa-i dai o tinta si apoi sa o mentii doar o tinta. Intr-adevar, o tinta atinsa provoaca placere si satisfactia muncii, dar oare tu asta iti doresti sa-i oferi? Gandeste-te la asta putin, de fiecare data cand il lauzi pentru munca realizata o sa mai fie motivat? De ce sa incerci sa-l stimulezi sa se autodepasasca cand poti sa-l stimulezi sa atinga o tinta pe care nu o poate atinge. Nu-i arata ca ai incredere in el, lasa-l sa se chinuie, sa simta challenge-ul.
O vorba spune: “drumul cunoscut e cel mai scurt”. Totusi, unii incearca sa automatizeze lucrurile rudimentare. Practic incearca sa scape tocmai de drumul cunoscut. Efectiv, daca il opresti din automatizarea proceselor il ajuti sa ramana ocupat, il ajuti sa aiba o minte ocupata, iar o minte ocupata este o minte activa!
Si, in al doilea rand, cu aceasta abordare il ajuti sa-si mentina locul de munca. Poate el nu-si da seama, dar daca o sa-si piarda utilitatea cand o sa ramana tocmai fara task-urile pe care, pana la urma, le si cunostea atat de bine, pentru ca le-a facut de atatea ori… Programator sau nu, nu trebuie sa-l lasi sa fie inlocuit de un robot!
In al treilea rand este satisfactia drumului cunoscut – nu-l lasa sa deturneze de la el, oricum, la cat este de cunoscut, ar trebui sa fie destul de scurt.
Nu in ultimul rand trebuie sa-l inveti importanta managementului. Trebuie sa vada ca il poti ajuta, ca tu esti cheia catre succesul lui. Ca sa ii arati acest lucru, trebuie mai ales sa ai incredere in tine. Incearca sa organizezi o petrecere fara sa-l chemi. Nimic nu spune mai mult “puteam sa fiu si eu acolo” decat faptul ca nu ai fost acolo.
Un alt mod este sa-ti organizezi o calatorie de afaceri intr-o locatie exotica. Nu-ti face griji, nu este important sa ai efectiv ce sa faci acolo. Cat timp esti acolo, nu uita sa te distrezi, este foarte important sa stie si el asta. Cand o sa fie obositor trebuie sa-ti aduci aminte ca nu faci asta pentru tine, faci asta pentru el si imaginatia lui!
Poate unele sugestii nu functioneaza la toata lumea, dar trebuie sa incerci sa combini cat mai multe pentru a avea parte de un succes real si programatori cu adevar motivati!
Nu incerca sa identifici aceasta lume utopica, pentru ca orice asemanare cu realitatea cotidiana este pur intamplatoare.
-
Aceasta este o retrospectiva a ultimului an.
In caz ca inca se mai intreba cineva, nu, PHP 6 nu a aparut si nici nu va aparea prea curand, probabil.
De ce este relevant? De cand am inceput acest blog am avut la final de an un post legat de PHP 6 si faptul ca acesta nu a fost lansat. In 2008 era o intrebare populara, dar nimeni nu mai crede asta acum, asa ca voi incheia acest subiect acum. Sa revenim la anul care s-a incheiat.
Aproape de jumatatea anului a fost lansata versiunea PHP 5.5, aceasta aducand in plus functionalitati cum ar fi: finally , generators si multe alte inbunatatiri.
Ca in 5.4, nu sunt functionalitati definitorii pentru limbaj. In aceasta noua versiune chiar sunt lucruri care pot fi inlocuite cu usurinta, dar daca sunt prezente, sunt bine venite.
Chiar daca PHP da dovada de multa dinamica in ultima vreme, cred ca in acest an cuvintele cheie au fost HTML5 si JavaScript.
HTML5 are parte de multe imbunatatiri, iar componente mai vechi incep sa creasca in popularitate. Firmele incep sa investeasca in jocuri care functioneaza in browser folosing WebGL. Chiar si jocuri mai vechi sunt portate catre platforma, folosind tehnologii cum ar fi asm.js.
Si, pentru ca am vorbit de jocuri, mi se pare foarte interesant cum doar acum 5-7 ani jocurile bazate pe JavaScript erau destul de simpliste, iar acum sunt comparabile cu cele de pe PC sau console.
Cred ca revolutia web, pe care multi o asteptau, incepe sa prinda avant. In sfarsit Web-ul este o platforma in adevaratul sens al cuvantului si JavaScript un limbaj cu adevarat apreciat.
Succesul se datoreaza tuturor partilor, nu mai este vorba doar de ECMA sau doar de producatorii de browsere, acum este o adevarat dinamica. Revolutia Web este in plina desfasurare!
Cand vine vorba de backend, lumina reflectoarelor a fost asupra Node.js. Acesta incepe sa devina un jucator important. Au aparut frameworkuri noi si nu mai este o platforma folosita predominant de hackeri dornici sa exploreze tehnologii noi, ci si de companii mari, cum ar fi PayPal, LinkedIn si Yahoo, oferind un vot de incredere pentru acesta. Cred ca Node.js incepe sa-si gaseasca locul si o nisa de piata, iar eu, un fan JavaScript, nu pot sa fiu decat incantat.
Un avantaj al Node.js este ca nu trebuie sa ai grija mai multor versiuni de JavaScript, asa cum este necesar in browser. Asta permite folosirea ultimelor facilitati ECMA in mod liber, un mediu in care poti dezvolta JavaScript fara dureri de cap.
Tehnologic vorbind, a fost un an foarte interesant pentru web development.
In final, va doresc tuturor un 2014 extraordinar de bun!
-
In filmele unde sunt prezenti si hackeri, apare cod sursa care curge in rauri pe ecran. Pare important, pare sa fie un geniu in calculatoare care se pregateste sa revolutioneze ceva.
Te-ai intrebat ce este codul acela epic din filme? John Graham-Cumming a facut o colectie de filme si codul sursa folosit in acestea: http://moviecode.tumblr.com/.
-
Motivat de articolul lui Rober Martin – Hoards Of Novices, am decis sa scriu si eu un articol pe un subiect similar.
Nu vreau sa scriu despre nevoia angajatorilor de a angaja juniori, ci despre de ce acesti juniori nu se ridica la nivelul asteptarilor, iar pentru final, despre ce am putea face pentru o mai buna pregatire.
Piata software este intr-o continua expansiune. Software-ul este modul in care comandam calculatorului ce sa faca. Astazi, dispozitivele din jur au procesoare, software si aplicatii, de la telefoane, ceasuri, televizoare si pana la masini de spalat si frigidere. Toate aceste dispozitive au nevoie de programe si programatori ca sa dezolte aplicatii pentru ele.
Cu aceste premize ajungem la criza software. S-a ajuns la concluzia ca avem nevoie de software mai repede pentru a rezolva aceasta criza. Acesta a fost un subiect important in anii ’60, dar cu timplul lumea nu i-a mai dat importanta.
Pentru a rezolva aceasta problema au aparut limbaje de nivel inalt si framework-uri. Limbajele de nivel inalt fac dezoltarea si intretinerea unei aplicatii mult mai simpla. In acest mod programatorii se indeparteaza foarte mult de “metal”, de hardware-ul efectiv, lucrand cu notiuni mult mai usor de manipulat.
Intr-o lume a limbajelor de nivel inalt (Java, C#, PHP, Python, JavaScript etc.) este mult mai usor si mai rapid sa compui o aplicatie.
Si totusi, desi modul de dezoltare al aplicatilor devine mai simplu, calitatea programatorilor este si ea in scadere.
O societate de consum
Avem nevoie de scoala pentru o slujba mai buna.
Pentru ca nevoia de studii reprezinta astazi o nevoie generala, scoala in sine se dilueaza. Principiile educationale in mare parte nu au suferit schimbari fundamentale de cand educatia a devenit disponibila tuturor. Rezultatul procesului de invatare este examenul, pentru ca asa se determina nivelul cunostintelor. Si mai presus, un rezultat mediocru ne permite sa avansam, fara sa demonstreze ca baza evaluata este prezenta.
Trecerea la nivelul urmator se face print-o examinare partiala, nu trebuie sa stapanesti 100% din notiuni, ci doar 50-60%. Nu este neaparat clar daca in celalate 40-50% se afla notiuni importante.
Aceasta problema a educatiei este mai mult sau mai putin o problema generala si sunt putini cei care chiar incearca abordari diferite.
In general, eu nu consider scoala un sistem definitoriu de stabilire a cunostinelor, mai ales astazi, cand avem acces la un volum atat de mare de alternative.
Cand studentii termina scoala, ei nu au toate notiunile pentru a lucra efectiv in industrie, ceea ce nu este atat de anormal. Scoala trebuie sa ofere doar o baza generala. De exemplu, in invatamantul superior pot sa-mi amintesc cel putin 8-9 limbaje de programare invatate. Efectiv au fost mai multe, dar nu am tinut o evidenta detaliata. Este clar ca nu ai cum sa cunosti atatea limbaje de programare la nivelul la care sa produci. Pe de alta parte, ai o idee de abordare, care te poate ajuta sa stabilesti o directie in care vrei sa aprofundezi.
Aceasta este cheia, sa aprofundezi! Pentru asta fiecare are abordarea lui, aici poti sa-ti alegi singur calea, fie cursuri, carti, proiecte practice sau toate la un loc. Prin aprofundare ajungi la nivelul la care angajatorii nu doar te accepta, dar te vaneaza!
De multe ori, pasiunea inlocuieste total studiile. Am cunoscut mai multe persoane care, desi nu au studiat informatica, sunt acum profesionisti in ea.
Partea buna este ca multa lume aprofundeaza de placere si sfatuiesc pe oricine citeste aceste randuri sa caute placerea in ce fac. Aceasta este cea mai buna motivatie.
Educatie alternativa intr-o societate de consum
Pentru ca metoda traditionala de invatamant nu este tocmai suficienta, sa vorbim de cateva metodele alternative:
- carti
- cursuri
- tutoriale
- articole/bloguri
Carti
Cartile in mod traditional sunt cea mai buna sursa de informatii (cel putin pana la aparitia Internetului). Dar calitatea nu este garantata!Acum 8-9 ani am incercat sa cumpar o carte pentru JavaScript. Selectia nu era foarte mare asa ca am incercat sa analizez fiecare carte in parte.
La final am fost dezamagit de alegerea facuta pentru ca in loc sa ma invete JavaScript, cartea ma invata cum sa fac efecte speciale pe pagini (foarte populare in perioada respectiva).
In cazul meu particular, am gasit raspunsul mult mai tarziu intr-o prezentare a lui Douglas Crockford. Acesta spunea ca majoritatea cartilor de JavaScript sunt de acest fel si a recomandat o singura carte in afara de cartea scrisa de el, JavaScript: The Definitive Guide.
Cauza este simpla, lumea este mult mai atrasa de carti care promit sa te invete un limbaj sau tehnologie intr-un numar limitat de lectii sau zile. Vrem totul acum, dar studiul are nevoie de timp, trebuie sa intelegi notiunile, nu doar sa le treci in revista intr-un mod rapid.
In general, ca sa determini calitatea unei carti ar trebui sa cauti review-uri. In ziua de astazi este foarte usor, eu prefer Amazon.com dar nu numai. Asa poti determina daca este ce cauti.
Uneori si o perspectiva rapida este utila, mai ales daca nu ai alt mod de abordare pentru subiect, dar in general orice subiect abordat rapid nu-ti ofera o perspectiva generala, ci doar o introducere usoara.
Cursuri
Sunt multe cursuri, atat in clasa cat si on-line. La fel ca si in cazul cartilor, este greu sa determini calitatea cursului.
Cursurile promit multe, dar de multe ori nu trateaza in detaliu subiectele, iar la final chiar daca ai impresia ca ai invatat multe, cand vine vorba de aplicat realizezi ca orice variatie de la materialele cursului te pune in dificultate.
Ca si in cazul cartilor, referintele sunt foarte importante! Din pacate pentru cursuri nu sunt la fel de multe ca pentru carti.
Incearca sa vezi subiectele abordate si detaliul de abordare. Sau uneori poti gasi mai repede referinte pentru profesor decat pentru curs.
Tutoriale
In special pe Internet sunt foarte multe tutoriale care promit sa te invete un domeniu, dar nu reusesc sa te invete cum sa realizezi exemplul lor. La final nu poti realiza decat mici variatiuni de la exemplul initial. De multe ori, cel care face tutorialul are cele mai bune intentii, dar este greu sa faci un transfer de informatii.
Pentru cele care sunt gratuite este foarte simplu sa determini daca abordarea este potrivita sau nu pentru nevoile privitorului. Incearca sa privesti cateva episoade si vezi daca la final ai inteles cum functioneaza componenta respectiva. Daca poti doar replica, atunci poate mai ai de cautat.
Partea buna este ca sunt foarte multe si ai de unde alege in general. De exemplu, la un limbaj de programare poti vedea in referinta oficiala cam ce ar trebui sa inveti, apoi in tutorial vezi daca ai inteles punctele din referinta si ai o idee ce fac.
La variantele comerciale este mult mai greu, pentru ca de multe ori ai doar un preview introductiv, insuficient pentru a-ti forma o parere. In aceste cazuri ar trebui sa cauti review-uri.
Bloguri si articole
Partea buna aici este ca investitia in timp este relativ mica. E simplu sa-ti formezi o parere la final.
Dezavantajul este ca unele articole nu se actualizeaza o data cu tehnologia. Trebuie sa te asiguri ca exemplele functioneaza pe versiunea folosita de tine. Din experienta proprie pot spune ca acest lucru este greu si necesita mult timp. De exemplu, unele articole care inca mai atrag cititori pe acest blog sunt scrise acum cativa ani si, daca nu mai folosesc tehnologiile respective, nu mai sunt tentat sa le tin la curent.
Cum sa invatam mai bine
Cauta referinte pentru materialele care presupun o investitie de timp si/sau bani: carti, cursuri sau tutoriale.
Atunci cand te hotarasti sa abordezi un subiect, incearca sa vezi ce materiale recomanda altii. Internetul este plin de materiale de diferite grade de dificultate.
Cand te simti stapan pe un subiect, testeaza-ti cunostintele. Construieste o aplicatie, urmareste subiectul pe platforme de Q/A sau, de ce nu, scrie un tutorial pentru altii. Intelegi mult mai bine un subiect cand il descrii altora.
Exerseaza! Este foarte important sa folosesti ce inveti sau vei uita mai repede decat crezi. Contribuie la proiecte open-source, incearca sa-ti faci proiecte personale sau incearca sa adaptezi proiectele altora la nevoile tale. Github este o unealta forte buna pentru a gasi si publica proiecte.
Este putin mai greu la inceput sa intelegi codul altuia, dar in industrie este imperativ ca sa poti colabora cu altii.
Invata lucruri noi tot timpul. Tehnologia se schimba, la fel cum se schimba si perspectiva asupra ei. De exemplu, AJAX a aparut la sfarsitul anilor “90, dar perspectiva asupra cum acesta se poate folosi s-a schimbat dramatic in anii urmatori, chiar daca tehnologia nu s-a schimbat mult timp. La fel a fost si cu JavaScript, desi a apatur la inceputul anilor “90, abia dupa anii 2000 a inceput sa fie considerata o unealta utila, inainte era folosita in special pentru efecte speciale.
Mult timp, PHP a fost considerat un limbaj util doar pentru proiecte mici. Astazi, este limbajul preferat de giganti ai internetului cum ar fi Facebook si Yahoo!. O data cu popularitatea si abordarea asupra lui a fost schimbata pentru o performanta si scalabilitate mai buna.
Concluzie
Sistemul educational nu ofera performanta de care angajatorii au nevoie. Asta creeaza o discordanta intre asteptarilor angajatorilor si cele ale absolventilor, iar asta nu este doar o problema a informaticii.
Din pacate si materialele alternative uneori promit lucruri nerealiste, unii studiaza tehnologii si limbaje de programare luni de zile, iar altii promit rezultate dupa doar cateva zile sau chiar ore.
Din fericire, traim intr-o lume a informatiei si putem gasi nu doar materiale ci si pareri despre acestea.
Printr-o mai buna pregatire, sansele de angajare cresc considerabil, rezultand intr-o satisfactie mai mare de ambele parti.