Category Archives: programare

Cum sa fii un bun sef?

Cum Romania duce lipsa de sefi/manageri competenti si care sa stie sa puna binele echipei,comunitatii,samd inainte binelui personal m-am gindit sa scriu o scurta lista cu calitatile si comportamentele pe care in teorie orice om ar trebui sa le astepte de la un sef (leader,manager,etc):

1. Simtul realitatii: Un sef bun stie sa aiba grija de asteptarile angajatilor,subordonatilor dar in acelasi timp sa fie onest si conectat la fapte reale. Pe perioade scurte se pot obtine avantaje din minciuni si manipulari dar acestea se deconteaza prin  calitatea scazuta a implicarii oamenilor,prin deteriorarea relatiilor,etc.

2. Viziune si sens. Un sef bun ajuta la stabilirea unei viziuni si face ca munca oamenilor sa aiba un sens (personal si social).

3. Un sef bun stie sa asculte pe altii si sa ia decizii impartiale pe baza opiniilor divers exprimate. Un sef bun vorbeste mai putin decit asculta.

4. Prevedere.  Un sef bun trebuie sa prevada problemele viitoare si sa ia masuri sa le preintimpine.

5.  Responsabilitate. Un sef bun isi asuma esecurile echipei de unul singur si impartaseste succesul cu echipa. Un sef bun nu-si asuma meritele altora si isi asuma consecintele rezultate din asumarea punctului 4.

5. Un sef bun are grija sa existe o atmosfera de lucru buna,pozitiva si bazata pe respect intre oameni.

Astept si alte sugestii!

Despre progres,OOP,vodoo si prostitutie

De mic am fost crescut sau m-am crescut cu iluzia ca progresul si dezvoltarea sunt bune neconditionat,inevitabile si cel mai mare dar facut de zeii cu neuronii excitati. Cind am inteles ca cea mai probabila definitie a lui “a fi bine” sta probabil in intersectia termenilor “a exista azi” cu “a exista fericit si maine” mi-am reconsiderat parerea rationala despre progres desi pe plan emotional tind inca sa fiu ultragiat de conservatori si in general de oamenii fara dorinta de a intelege viitorul si progresul.Cu virsta am inteles deci ca DESI “mai binele”,solutia mai “perfecta”,mai optima va invinge in final – acest “in final”poate fi suficient de indepartat incit o atitudine conservatoare este pentru multi oameni logica si mai profitabila pe termen scurt. Mai mult,viitorul si progresul pot ascunde pericole necunoscute.

Programatorii, pentru ca despre programatori si programare vreau totusi sa vorbesc aici sunt un caz interesant de studiu in ceea ce priveste atitudinea fata de progres.
Cea mai la moda si mai “buna” metoda de a face programe de vreo 10-15 ani se numeste OOP (sau un infam POO pentru vorbitorii de romgleza ) . In ciuda sutelor de limbaje noi de programare,a zecilor de mii de articole publicate despre alternative si imbunatatiri aduse programarii se poate paria destul de safe ca OOP-ul va mai ramine favoritul maselor de programatori inca o perioada. In ultimii ani a aparut o elita a programatorilor OOP,programatorii care stiu Design Patterns. Aceste patternuri sunt fara indoiala fetisul suprem al maselor si baronilor angajatori de programatori.
Ca sa nu am vorbe o sa precizez ca fiind programator sunt si eu bineinteles bine adapat din nectarul zeilor oop-ului si consider ca patternurile sunt placute, interesante si utile.

Dar.. si aici e darul meu cel mai mare,sentimentul meu profund despre OOP este ca e folosit mult prea mult pe post de “ciocanul bun la toate” (un antipattern pentru cunoscatori). Acest sentiment ca programarea actuala poate fi in mod serios imbunatatita s-a accentual in ultimii 6-7 ani adica de cind am inceput sa platesc alti programatori din postura de mic si precaut intreprinzator. Abia de curind am inceput o investitie mai mare pe cont propriu si pe riscul meu dar una din problemele cu care m-am confundat in acesti 6-7 ani au fost tocmai costurile prea ridicate cu programarea si programatorii. Cind lucrezi pentru clienti si ei platesc suficient e mai usor sa tolerezi imperfectiunile metodei de lucru dar cind vezi cum se duc proprii bani pe niste programatori “seniori” sau mai putini seniori ce au invatat in felul lor controsionat arta programarii papusilor vodoo, lucrurile se simt diferit.

Este adevarat ca programarea este un pic grea datorita unei complexitati esentiale a problemelor pe care le rezolva dar parerea mea este ca metodele folosite multiplica uneori cu un factor ce poate fi si de zeci de ori complexitate esentiala a problemei. Am avut uneori de implementat algoritmi mai complicati si spre supriza mea complexitatea problemei devenea abordabila doar in momentul cind schimbam modul de reprezentare a datelor desi conceptual algoritmul in mintea mea era acelasi de la inceput. Poate ca unii dintre cititori vor intelege de ce am adus asta ca argument,restul sunt rugati sa treaca mai departe sau se gindeasca de cite ori au avut de a face cu bug-uri prostesti, cu proiecte care si-au depasit termenele sau cu programe care pur si simplu “spurca” in moduri inadmisibile datele clientilor stirnind furia si inchiderea portofelului acestora.
Chiar si numai faptul ca trebuie sa angajezi superi-eroi programatori ca sa rezolve probleme de business simple pe care le inteleg si paznicii clientilor dar si dificultatea in a stabili termene precise de realizare, inflexibilitatea si costul mare cind vrei sa schimbi aplicatia in functie de cerintele clientului, bug-uri “nesimtite” si de neimaginat sunt simptome ca modul a face “software development” cu OOP are cel putin un miros ciudat daca nu cumva e stricat bine de tot.

Sigur ca e usor sa zici toate lucrurile astea fara a veni cu solutii. Intr-un mod cam eroic (poate) am inceput un proiect care sa vina cu niste raspunsuri dar o sa vorbesc despre asta altadata.

Ce ma preocupa acum e reactia programatorilor in fata progresului. Uneori am simtit ca programatorii, constient sau nu joaca “by default”  cartea “job safe”. Asta inseamna ca daca codul pute mai tare cu atit firma va avea nevoie de ei ca sa mentina codul cel magic in viata. Din cauza asta programatorii C++,Java de exemplu par sa se opuna destul de sistematic folosirii sistemelor de tip RAD sau desconsidera si ridiculizeaza limbajele folosibile si de incepatori (PHP,Visual Basic)

Programatorii percep instinctiv ca democratizarea/simplificarea programarii nu este in interesul lor si vor incepe jocul politic de decredibilizare a tehnologiei sau a celor care o folosesc. Partea amuzanta este ca ei vor folosi argumente adevarate pentru a sustine puncte de vedere tendentioase. Totul ar fi bine daca firmele care le platesc salariile nu ar avea de suferit din proasta evaluare a unor astfel de nuante.
Oricum,progresul e inevitabil,legile fizicii ii ajuta pe cei care le inteleg si le folosesc.Parerea mea este ca cei care se masturbeaza intelectual cu OOP cind ar trebui sa foloseasca altceva sau si mai rau prefera sa se prostitueze pe modelul “job safe” facind o munca de mintuiala si fara implicare, vor avea de suferit pe termen lung.

Spre mirarea mea, de multe ori cind exprim astfel de opinii descopar din partea programatorilor surpriza, neincredere,indignare  ascunsa sau faptul ca nu s-au gindit vreodata la asemea chestii ce tin de pragmatica programarii. In apararea programatorilor nu pot decit sa spun ca evaluarea tehnlogiilor si ideilor progresiste este cu adevarat grea si deja programatorii se confrunta cu riscul de a nu avea o viata sociala de calitate… Nu e bine ca istetii de programatori sa ramina neiubiti si fara copii,nu-i asa:) ?

Cum va fi viitorul? Nu stie nimeni sigur dar probabil va fi de partea celor care se gindesc la el…

P.S. Cineva inspirat a zis despre OOP urmatoarele: You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.