joi, 15 noiembrie 2007

Ce inseamna sa fii programator?

Cu mai mulţi ani în urmă să fii programator bun însemna să scrii programe care funcţionează utilizând trucuri care reduc timpul de execuţie şi micşorează spaţiul de memorie utilizat. Timpul programatorilor era ieftin iar resursele de calcul scumpe. Era vremea când algoritmii de sortare erau încă subiect de comunicări ştiinţifice iar învăţăceii în ale programării aflau cum să scoată expresiile constante în afara ciclurilor, cum să reutilizeze spaţiul ocupat de variabile etc. Limbajul C utiliza cuvântul cheie register, indicând compilatorului să menţină variabila respectivă într-un registru pentru a reduce timpul de execuţie. În aceeaşi perioadă instrumentul principal pentru testarea şi depanarea programelor era instrucţiunea print, iar limbajul de asamblare era frecvent utilizat pentru îmbunătăţirea performanţelor programelor. Inventivitatea era poate cea mai importantă calitate a unui programator. Erau multe de făcut cu resurse puţine. Programarea era o activitate undeva la limita dintre artă şi meşteşug. Programatorii formau o castă cu un număr mic de membri. Existau job-uri suficiente pentru ei dar nu în exces. Nu existau preocupări pentru dezvoltarea unor instrumente care să îmbunătăţească productivitatea programatorilor sau să le facă munca mai uşoară (job security). Cine să aibă nevoie de ele, cine să plătească pentru ele?
În timp, pe bază de cerere şi ofertă, pentru că utilizarea tehnicii de calcul a ajuns să se extindă mult şi mai ales foarte rapid a crescut costul timpului programatorilor. Şi asta în timp ce costul resurselor de calcul a scăzut. Soluţia - industrializarea procesului de scriere a programelor devenind rentabilă utilizarea de programe pentru crearea programelor. Nu se mai caută expresii constante pentru a le scoate în afara ciclurilor, se caută elemente comune unor aplicaţii dintr-o clasă pe baza cărora se construiesc aplicaţii generice configurabile pentru situaţiile particulare. Au apărut termeni noi - portabilitate, compatibilitate, interoperabilitate, standardizare. Apariţia web-ului a accelerat acest proces. Prea mulţi meşteşugari ar fi trebuit să reinventeze iar şi iar aceeaşi roată care să se potrivească peste tot.
Şi aşa s-a schimbat definiţia unui programator bun. El înţelege diagrame UML, respectă metodologii, ştie să opereze cu medii sofisticate de dezvoltare a programelor, reutilizează componente, stăpâneşte, pentru limbajul în care scrie, biblioteci cu sute de funcţii. Are la dispoziţie o mulţime de ajutoare: editoare inteligente, compilatoare care optimizează codul în funcţie de arhitectura procesorului pentru care generează cod, generatoare de programe, profilatoare de programe, depanatoare, validatoare etc. Nu prea mai este un dezvoltator de algoritmi, este mai mult un combinator. Disciplina şi memoria devin mai importante decât inventivitatea. Numărul celor care au ocazia să "inventeze" ceva este relativ mic. Unii rezolvă probleme cu nume noi ca: scalabilitate, stabilitate, fiabilitate, securitate etc. Şi se numesc arhitecţi nu programatori. Alţii se ocupă de ceea ce ţine de industrializarea activităţii de programare. Şi se numesc creatori de tehnologii. Şi mai sunt şi alţii care inventează aplicaţii noi sau caută domenii în care tehnica de calcul nu a ajuns. Şi se numesc specialişti în marketing.
De multe ori programare înseamnă configurarea de aplicaţii, interfaţarea unor aplicaţii, operaţii de tip "completare de formulare". Doar existenţa sistemelor embedded şi a altor sisteme caracterizate de resurse limitate faţă de imaginaţia celor care inventează aplicaţii noi, mai conservă necesitatea unor programe scrise linie cu linie şi nu asamblate din alte programe. Numărul celor care lucrează în acest domeniu este încă mic. Dacă o să fie nevoie de mai mulţi o să crească întâi eficienţa dezvoltatorilor de aplicaţii. De exemplu prin perfecţionarea instrumentelor cu ajutorul cărora se dezvoltă programe pentru astfel de sisteme.
Programarea a devenit o meserie ca oricare alta, se învaţă, se practică, nu necesită calităţi intelectuale deosebite.
Ar fi interesant de ştiut care o să fie definiţia unui programator bun peste zece ani? La ce să se aştepte un absolvent care acum se pregăteşte pentru această meserie? Dar cineva care nu se pensionează în zece ani? Va însemna activitatea de programare mai mult decât crearea semiautomată a unor fişiere de configurare? Cum ne salvăm de plictiseală?
A existat o vreme în care copiii erau pasionaţi de locomotive şi vapoare, mai târziu au fost pasionaţi de maşini, avioane şi nave cosmice acum par toţi să fie pasionaţi de calculatoare (cel puţin aşa spun părinţii). Trece şi asta. O să urmeze altceva. Misterios şi dificil.

Niciun comentariu: