Let's Do It Romania - 24 Septembrie 2011



   

Pilde şi poveţe

   

Mircea Sârbu


Asist de mulţi ani la o controversă legată de meseria de programator, strâns legată de o alta privind de învăţământul de specialitate. Într-un fel, cele două chestiuni sunt greu de separat şi provin de fapt dintr-o situaţie fără precedent: o anumită ramură a tehnologiei -- în cazul nostru informatica -- a ajuns la un ritm atât de alert de dezvoltare încât sistemul educaţional nu mai poate să ţină pasul. Se pot aduce multe (şi adesea justificate) acuze la adresa şcolii -- care este un sistem instituţional enorm şi, în consecinţă, cu o inerţie ce stă la baza unor răspunsuri întârziate sau chiar inadecvate.

Problema celor care se pregătesc pentru o carieră în industria informatică este stringentă şi se leagă de piaţa muncii. Acum şi aici se caută specialişti în domeniile x şi y, în vreme ce şcoala vrea să mă înveţe cu totul altceva. Rezultatul imediat este creşterea numărului de autodidacţi şi, mai cu seamă, specializarea excesivă în detrimentul fundamentelor. Este adevărat că şi industria contribuie adesea la această tendinţă, cerinţele fiind adesea exprimate în termeni imperativi şi punctuali: vreau specialişti în domeniile x şi y. Acum!

Aşadar, ce i-aş putea răspunde unui tânăr care spune pe un forum web că vrea să se facă programator şi întreabă nonşalant ce ar trebui să înveţe? Păi... întâi ceva algoritmică, ceva sisteme de operare, ceva reţelistică, ceva baze de date... Ah, nu, n-ai înţeles: ce limbaj şi ce mediu de dezvoltare -- asta era de fapt întrebarea. Ok, dar ce garanţie ai că mâine tot ce ai învăţat azi nu va fi desuet şi cu totul altele vor fi cerinţele? O astfel de discuţie nu poate conduce niciodată la un rezultat. Experienţa mea este că însă că -- din păcate, sau din fericire -- în această meserie lucrurile se schimbă adesea peste noapte şi nimic nu te protejează mai bine decât fundamentele. Acele cunoştinţe care au şansa să dureze şi care îţi vor oferi mereu punctul de sprijin ca să o iei de la început, în altă direcţie.

Poate că traseul meu prin lumea informatică are o oarecare valoare ilustrativă. Am început în medii extrem de centralizate, am cunoscut şocul descentralizării odată cu răspândirea PC-urilor şi durerile re-centralizării odată cu impunerea reţelelor şi apoi a internetului. Practic, singura tehnologie relativ stabilă în tot acest interval a fost cea a bazelor de date relaţionale, dar şi aici au apărut mutaţii. N-aş mai putea număra limbajele, mediile de dezvoltare, framework-urile şi paradigmele pe care le-am schimbat pe tot parcursul. În ultimii ani am dezvoltat aplicaţii în regim de intranet, care implicau baze de date centrale, un strat intermediar de logică aplicativă şi un server HTTP care să transforme browser-ul în interfaţa universală pentru clienţi. Chiar dacă mă încântă acest tip de abordare, ea implică un număr mare de tehnologii şi cel puţin cinci limbaje de programare de diverse facturi, plus câteva de marcare, câteva protocoale şi diverse alte fineţuri. Şi totuşi, această abordare are unele limitări inerente, deoarece natura întrebare/răspuns a protocolului http impune mereu recompunerea şi reîncărcarea paginii HTML. Situaţiile tipice sunt două: când în funcţie de o alegere a utilizatorului natura restului formularului se schimbă sau când pe parcursul completării unui formular este necesară o selecţie din baza de date. Ambele situaţii impun complicaţii severe pentru a asigura utilizatorului un confort cât de cât acceptabil.

Parte interesantă însă se leagă de JavaScript -- o tehnologie pentru care trebuie să admit că aveam o oarecare adversitate. În prima instanţă am folosit-o pentru nişte validări formale, dar apoi s-a dovedit utilă în mai multe situaţii. Însă cei câţiva ani de jurnalism mi-au dezvoltat un anume fler pentru tendinţe şi astfel am devenit atent la o nouă tehnologie care a fost botezată Ajax -- adică Asynchronous JavaScript and XML. Posibilitatea de a accesa în background serverul (şi, implicit, baza de date) era cu adevărat tentantă, aşa că într-un week-end am investigat posibilităţile şi am reuşit să rezolv ambele deficienţe. Însă... posibilităţile care se deschid prin această tehnică sunt atât de largi încât totul se schimbă şi totul trebuie abordat altfel.

Revenind: ce ar trebui să înveţe aspirantul la meseria de programator? Păi... întâi ceva algoritmică, ceva sisteme de operare, ceva reţelistică, ceva baze de date...


 

(Publicat în PC Magazine - aprilie 2006)

 

Copyright © 2006 Agora Media

Creative Commons License
This work is licensed under a Creative Commons License.