Programator de meserie

Evolutia informaticii a schimbat deja de câteva ori statutul meseriei de programator, iar alte schimbări se arată deja la orizont. Se pare că programatorul român le va simti întâi pe cele în rău.

Adrian Neagu

Un articol care îsi propune să analizeze trecutul, prezentul si posibilul viitor al meseriei de programator este o întreprindere dificilă. Cum să rezumi eficient în câteva linii un subiect despre care s-au scris tomuri groase? O analiză, chiar si fugitivă, a industriei producătoare de software în general pare abordarea cea mai potrivită pentru a desprinde concluzii cu privire la statutul meseriei de programator si evolutia lui.

Un comprimat de istorie

Să începem cu începutul: perioada anilor 60 - 70 în Statele Unite ale Americii. Atunci informatica însemna mai ales calculatoare denumite generic „mainframes" si nu privea direct decât marile companii si institutii ale statului cum ar fi Department of Defense (DoD). Calculatoarele acestea erau inutile fără un software adecvat circuitului informatiei în corporatiile respective. Asa a apărut ceea ce s-a numit mai târziu „Build - Buy dilema". Adică cei ce dirijau aceste organisme aveau în fată două solutii opuse: dezvoltarea „in house" a unei solutii specifice (solutia Build) sau cumpărarea unei solutii la cheie (solutia Buy). Desigur exista si cale de mijloc cum ar fi dezvoltarea unei solutii specifice de către un partener extern, solutie denumită de americani „Outsourcing".

Din cauze diverse, epoca „mainframes" a fost în mod hotărât orientată spre solutia Build. Marile companii angajau mereu mai mult personal pentru administrarea si programarea sistemelor informatice centralizate din acea vreme. Cu alte cuvinte programator era o meserie ce te predispunea la o frumoasă carieră, o adevărată epocă de aur. Tot atunci s-au pus bazele teoretice ale domeniului ce îl numim „software engineering" (SE). Între timp însă tehnologia a evoluat si mai multe crize au scuturat economia mondială. O investigatie contabilă mai atentă a dezvăluit că investitiile făcute în conceperea si întretinerea software-ului nu se amortizează decât în proportie de cca. 70%. Anii 80 au fost începutul acestei „software productivity problem", chestiune ce va străbate ca un fir rosu istoria ulterioară a SE.

Această stare de lucruri nu este străină de aparitia si evolutia rapidă, în aceeasi perioadă, a microinformaticii. Apare si se consolidează o adevărată piată de desfacere care atrage investitori, se manifestă concurentă, într-un cuvânt soft-ul devine un „business" (scuzati numeroasele anglicisme, dar vorbim despre americani). Acesta este contextul în care solutia Build intră într-un con de umbră. Ca urmare a progreselor înregistrate de noile firme producătoare de software, în anumite domenii, cum ar fi birotica, toată lumea s-a orientat decis spre solutia Buy. Pe acest val s-au ridicat firme ca Lotus si mai apoi Microsoft. Tot atunci Autodesk a făcut scoală cu solutiile sale la cheie bazate pe AutoCAD. A se observa că abandonarea solutiei Build echivalează cu înmormântarea solutiilor proprietare si de aici până la o pasiune generalizată pentru sistemele deschise nu a fost decât un mic pas.

Totusi au existat si domenii în care o solutie specifică era absolut necesară, cum ar fi sistemele de conducere a productiei sau cele de gestiune bancară. Acestea sunt domeniile de predilectie ale firmelor de software la comandă. A aparut chiar o piată internatională, clientii americani descoperind repede că firme din tările mai putin dezvoltate economic lucrează la fel de bine, dar mult mai ieftin, cum ar fi cazul deja celebru al Indiei. Pentru o analiză fină a acestui impas al industriei software de peste ocean a se vedea cartea de referintă a lui E. Yourdon ("Decline and Fall of the American Programmer", Prentice Hall, 1992).

Astăzi domeniul software-ului comercial pare să se maturizeze. Anul trecut a fost marcat de un val de fuziuni si achizitii spectaculoase. Se pot constata chiar tendinte spre monopol din partea marilor producători. Doar avansul permanent al tehnologiei hardware face să mai apară încă mici firme ce încearcă să exploateze brese înguste pe piată. Este de asteptat ca în ciuda consolidării pozitiei dominante a unor firme ca Microsoft această dinamicitate mai mare decât în alte sectoare ale industriei să se păstreze si în viitor.

Ce se întâmplă însă în afara marilor societăti? Astăzi trăim al doilea „boom" al informaticii de acasă, a doua tentativă de a impune calculatorul ca un bun de larg consum (prima tentativă fiind cea din anii 80, cea care i-a adus înnobilarea lui Clive Sinclair). Legat de această expansiune ne-am putea astepta să vedem o piată enormă deschizându-se. Uitati-vă numai la colectiile foarte diverse de programe pe care le oferă astăzi în librării editori specializati în cărti de informatică (Micro Application, Sybex): sute de titluri de „software în plic" cu preturi între 15 si 50 de dolari (mai ieftine chiar decât cărtile de la aceiasi editori). Trebuie formulate aici cel putin două rezerve.

Una este aceea că programe supraponderale cum ar fi MS Word 6 nu îsi vor găsi niciodată locul pe această piată. Goana după mai nou si mai complet a producătorilor de software nu are ecou în ochii micului consumator. Oricum el foloseste curent doar un sfert din posibilitătile unui asemenea program si „mai complex" este pentru el cel mai mare defect pe care îl poate avea un program. Criteriile lui de selectie în calitate de cumpărător seamănă uimitor cu sistemul cu puncte de functionalitate, sistem folosit si de DoD.

A doua remarcă importantă este că majoritatea acestor titluri sunt fie produse shareware fie versiuni comerciale care îsi găsesc o a doua tinerete, prea putine programe cu adevărat noi. Or, fără a avea intentia să minimizăm în vreun fel meritele creatorilor de shareware, trebuie spus că marea lor majoritate profesează într-un domeniu conex (de exemplu în învătământ). Acest fapt îi scoate în afara SE-ului clasic (de exemplu ei nu se confruntă cu constrângeri de timp de-a lungul etapelor de dezvoltare a unui produs). Asadar avântul informaticii personale, chiar dacă va lua aspectul unei explozii, nu va crea noi locuri de muncă pentru programatorul profesionist.

Să revenim în grădina clientilor cu greutate pe piată, acolo unde solutia de mijloc, să o numim „externalizare", este în crestere de popularitate. Totusi aceasta externalizare înseamnă tot mai putin software la comandă în detrimentul altor tipuri de servicii: administrare de sistem, formarea personalului, mentenanta echipamentelor, etc.

În concluzie viitorul programatorului nu mai este atât de roz. Nu trebuie să trecem la un pesimism exagerat. Asa cum masina cu aburi nu a eliminat complet muncitorii din fabrici, nici generatoarele de cod nu vor înlocui programatorii.

Viata dulce-amară a programatorului

Cineva ar putea să obiecteze că dizertăm asupra unei meserii fără să o fi definit clar mai înainte. O definitie corectă este dificil de dat datorită unei evolutii permanente, dar măcar putem să înlăturăm anumite ambiguităti. Sensul cel mai general, inspirat din definitia dată de F.Bauer încă în 1969 pentru SE, este următorul: persoana ce lucrează la definirea, dezvoltarea sau întretinerea produselor software. Cu această definitie programatorul nostru ar putea să fie un inginer informatician sau un cercetător matematician sau, pur si simplu, un inginer de marketing. Acestei definitii largi putem să îi opunem sensul comun si foarte strict al cuvântului programator: scriitor de cod executabil de un ordinator. Atentie, a nu se confunda scriitorul de cod cu cel care concepe algoritmi si structuri de date. În viata de zi cu zi, acesta din urmă este adesea un analist de sistem cu multă experientă si multi subordonati care nu a mai scris personal cod de vreo 15 ani, de pe vremea când intrase stagiar la firma unde lucrează în prezent. Finalmente, cu riscul de a sfărâma în bucăti visul unei generatii, trebuie recunoscut că scriitor de cod este o meserie mai degrabă anostă. Gânditi-vă la noptile petrecute pentru a depana un program propriu sau pentru a face o modificare minoră în codul scris de altcineva. Gânditi-vă la caietele de sarcini cu cerinte evident contradictorii, la reducerea cheltuielilor prin renuntarea cumpărării sculelor software cele mai adecvate si la multe alte ocazii de natură să îti agite adrenalina în artere.

Asadar cea mai onorabilă descriere este pe undeva pe la mijloc. Să admitem că programatorul nostru este ceva mai mult decât un simplu scriitor de cod, dar mai putin decât orice persoană angrenată în productia de software. Să retinem si că programatorul are formatie de inginer (chiar dacă este un pic de sentimentalism în această alegere).

Am trecut în revistă cadrul istoric si statutul general, dar nu am vorbit până acum de impactul direct al progreselor acumulate în SE asupra meseriei de programator. Cea mai importantă consecintă, usor previzibilă, este separarea unui evantai de profesii distincte din fostul programator atoatestiutor, asa cum am mai avut ocazia să arătăm în paginile revistei. Cresterea complexitătii sistemelor finite, diversificarea domeniilor aplicatiilor finale au dus la separarea mai multor straturi de programatori. Programatorii de pe un strat folosesc produsele unora de pe un strat inferior, mai apropiat de hardware si pregătesc produse pentru cei de pe un strat mai înalt, mai apropiat de domeniul aplicatiei si de cerintele utilzatorului final. (Pentru o descriere detaliată a modelului „fântânii software" a se vedea cartea profesorului I. Jurcă asupra limbajului C++ în editura EuroBit, 1992 ). Este de asteptat ca în viitor să se divizeze si/sau să se adauge noi straturi în partea superioară, în timp ce necesarul numeric de programatori în straturile inferioare să se restrângă simtitor. Asadar cei care au ales această profesie vor fi obligati, în general, să îsi actualizeze mereu cunostintele pentru a rămâne competenti, consecintă a migrării spre straturile superioare. Este un aspect nu foarte des întâlnit în alte domenii, o particularitate ce constituie într-un anume fel atractia acestei meserii asupra tinerilor.

În coltul nostru de lume

Situatia programatorului la noi în tară este contrastantă cu ce se întâmplă dincolo de „cortina care nu mai există" din mai multe puncte de vedere. În fostul bloc socialist legile universului erau altfel decât în rest lumii. Numărul de programatori care ieseau de pe băncile scolii într-un an era decis cu un mare coeficient de arbitrar, fără legătură cu cererea reală din economie (oare s-a schimbat cu adevărat această situatie?). Astfel a apărut o autosuficientă de tipul „Programez, deci exist", un fel de artă pentru artă ce rimează bine cu conceptiile ce se vehiculau atunci. Apoi a venit „aglomeratia din decembrie" si lucrurile au început să se miste. Cea mai importantă schimbare a fost aparitia unui număr de filiale ale unor societăti europene producătoare de software, filiale ce lucrează în principal pentru export. A apărut astfel oficial meseria de programator după toate canoanele occidentale. Miza a fost aceesi ca în modelul indian: reducerea costurilor de productie. Deosebirea este că guvernul indian a văzut o oportunitate în exportul de software. Ca urmare el a stabilit un cadru legal precis si asigură un spijin concret si un control atent asupra societătilor private si scolilor superioare exportatoare. Fără alte comentarii.

Faptul că s-a renuntat la impunerea de echilibre în economie prin hotărâri de partid nu înseamnă si că mecanismele de piată au început să actioneze imediat în toate domeniile. O situatie care s-a perpetuat, si chiar cu urmări dramatice, este aceea că piata românească de software „este admirabilă dar lipseste cu desăvârsire". De aici o serie întreagă de aberatii legate de pretul dezvoltării de aplicatii. Am întâlnit cazuri în care câteva milioane de lei au fost câstigati pentru un gestionar de fise făcut în trei după amieze cu MS Access sau în care câteva zeci de mii de lei sunt oferiti pentru o lună de muncă la un gestionar de fonduri si stocuri scris în C++. Ca în vestul sălbatic.

Ceea ce este rău este că, în lipsa unei piete interne, munca programatorului român are un pret arbitrar de mic. Să mă explic. Să admitem că nu se poate vinde software în cantităti semnificative decât la export. În contextul actual, penetrarea pe piata externă se poate face numai din cadrul unei filiale românesti a unei firme străine. Ori statul român întelege să pună o taxă zdravănă pe profiturile acestei filiale cât si pe dolarii câstigati de angajatii români ai acesteia. În acest moment societatea mamă are o solutie simplă pentru a rămâne rentabilă: reducerea salariului programatorilor. Si asta este situatia fericită pentru că salariul respectiv rămâne mai mare decât media pentru angajatii la societăti românesti. Există însă o solutie mai radicală pentru societatea străină: îsi mută sau îsi înfiintează direct filiala într-o tară cu legislatia mai avantajoasă. Este vorba de o pierdere foarte periculoasă prin aceea că se va face simtită peste abia câtiva ani. Dar cine are timp la noi să vadă că filialele Intel sau Microsoft de la Budapesta vor stinge anevoie toate lumânările din tortul aniversar pe vremea când se vor deschide timid corespondentele lor la Bucuresti?

Veti spune că lipsa legilor adecvate, cea a dreptului de autor în special, cât si a unei politii specializate sunt marii si singurii vinovati de această situatie. Din păcate este mai mult decât atât. Pirateria software este si un nivel de constiintă, si o stare de spirit, lucruri ce nu pot fi schimbate peste noapte de nici o lege. Este ca si cum cineva ar spera că o lege antiavort ar opri complet si definitiv orice avort. Fondul grav al problemei este că zeci de ani de educatie comunistă au încetătenit un sistem de valori răsturnat. Munca în esentă intelectuală cât si alte valori non-materiale au tendinta de a fi subapreciate. Opinia publică românească dezaprobă, uneori foarte vehement, averile câstigate prin comert. În schimb faptul că oameni de stiintă de valoare se duc să îsi caute satisfactiile materiale si/sau recunoasterea profesională în tările dezvoltate nu supără pe nimeni. Ne înarmăm cu „răbdare si tutun", dar ar fi păcat să fumăm câteva generatii până să vedem o schimbare netă de atitudine la factorii responsabili. Pe ton de glumă, am putea semnala domnului Yourdon că soarta programatorului român i-ar furniza mai multe motive de îngrijorare decât sorta confratelui său american.

Ce va fi?

În încheiere, putem spune că viitorul meseriei de programator va fi marcat de aceesi problemă a productivitătii. Vom asista la răspândirea mediilor CASE mai complete, medii care să sprijine etape timpurii din procesul software (analiza problemei) si care să automatizeze sarcinile rutiniere (generare de cod). Oarecum paradoxal, evolutia tehnologiei hardware nu îsi va încetini ritmul dar, pentru o perioada destul de lungă, nu va mai declansa schimbări spectaculoase de stil în ingineria software, asa cum s-a întâmplat în anii precedenti.

În ce priveste situatia din tară, o încercare de predictie este prematură. Există alte elemente mai importante ce vor dicta evolutia economiei, iar productia de software va urmări aceste schimbări într-o directie sau în alta. Să păstrăm totusi un optimism sănătos si să sperăm că măcar problemele imediate, precum adoptarea legilor specifice, se vor rezolva în timp util.


(C) Copyright Computer Press Agora