Se spune că ar exista două zodii de programatori: de zi și de noapte. Tind să fiu de acord cu afirmația și deși în general cred în nuanțe, în cazul programatorilor știu puține exemplare de seară sau de dimineață.
Notă avertisment: acest post este o schemă mîzgălită în viteză și la cerere. Un curs adevărat, exhaustiv și bine fundamentat despre psihologia și sociologia meseriei de programator și despre variațiuni individuale, categorisiri și d-astea sînt convins că există pe undeva pe la vreo universitate și e ținut de un expert care în mod sigur nu a lucrat niciodată împreună cu programatori și fiind expert și cadru didactic, nu are decît eventual o vagă idee despre ce înseamnă de fapt programarea (din pasiune sau obligație) și practicanții ei.
Programatorul de zi
Este omul nepasionat, nimerit în această meserie din greșeală sau din calcule de viață făcute de părinți sau soție: du-te la cursul ăla că e o meserie de viitor și se plătește bine, uite și Tudor ce bine o duce ca programator – n-are treabă, nu ca noi. Soția sau părinții nu au nici cea mai vagă idee cîte zeci de mii de ore de muncă și învățat pasionat au stat la baza ducerii de bine a lui Tudor, la urma urmelor programarea e o meserie, se învață la școală, tu de ce nu ai putea-o face ca el? Este exact integrala care-l definește pe programatorul diurn: n-are nicio treabă cu programarea, alta decît că s-a dus să o învețe la școală fără să știe înainte de asta despre ce e vorba. El poate fi eventual inteligent și asta îi poate ajuta mult la locul de muncă dar va fi ca un brutar, sudor, inspector de finanțe inteligent: inteligența pentru el va fi doar un ajutor, o anexă care-i va asigura cu o probabilitate mai bună un timp mai îndelungat de muncă la un angajator bun. Inteligența pentru un programator de zi este o valoroasă anexă, nu elementul principal creator.
Pentru programatorul de zi, calitatea esențială în desăvîrșirea profesională și socială nu e inteligența – cu ea nu poți ajunge foarte departe – ci impostura, minciuna și lingușeala la posteriorul șefului.
Programatorul de zi perfect, ajuns în vîrful ierarhiei sau care promite să ajungă acolo este cel care posedă în cel mai înalt grad abilități combinaționale în privința colegilor și șefilor săi. Programatorul de zi nu îi urăște pe programatorii de noapte ci îi vede ca pe niște creaturi retardate care nu înțeleg că plăcerea supremă în viață e berea cu pretenarii la un meci. Programatorul de noapte de obicei nu constituie o amenințare la adresa lui pentru că din cauza programării, nocturnul nu are timp să se ocupe cu partea esențială a unei cariere de succes: concurența “colegială”.
Deși unii programatori de zi sînt foarte pricepuți în a părea pasionați și competenți, există momente și detalii care îi demască aproape invariabil. Cel mai sincer moment existențial este cel legat de masa de prînz, momentul apoteotic al întregii zile de muncă. Cu ceva vreme în urmă am observat la cîinele meu următorul comportament. Ne-am făcut obiceiul că la ora 5 ieșeam în parc la joacă. Toată după amiaza era pentru el subsumată momentul de glorie de la ora 5. Cu 10 minute înainte de momentul bucuriei se trezea și începea să dea semne de nerăbdare în creștere pe măsură ce trecea fiecare minut. La 5 fix, sărea și vocifera iar la 5 și un minut începea să privească ușa cu tristețe și disperare resemnată. Am experimentat următoarea schemă: dacă la 4:50 îl apucă agitația, hai să-l scot imediat ce îmi cere, de ce să așteptăm ora 5 fix? În 4-5 zile am ajuns ca agitația să înceapă la ora 3. Pentru programatorul de zi, ziua are momentul apoteotic la prînz. Ieșirea din birou, masa, discuții despre orice altceva decît programarea (dacă are norocul să ia prînzul și cu alți programatori de zi), toate astea sînt lucruri care îl împing instinctiv spre momentul prînzului în mod similar cu parcul de la ora 5 pe cîine. Pentru programatorul de zi nu există nimic mai important decît ieșirea la masă. Lasă-l să plece la prînz la ce oră “i se face foame” și după 4-5 zile o să-l vezi luînd prînzul la ora 9 dimineața – orice dar nu la calculator.
Plăceri și evenimente așteptate cu nerăbdare: meciul cu Inter, sedanul nou de la Opel, concediul la schi, masa de prînz (dar mă repet).
Lucrurile pe care nu le apreciază: tastatura, discuțiile în timpul mesei despre programare.
Calculatorul ideal pentru programatorul de zi: Playstation 3.
Avantaje: un programator de zi (maxim doi) în echipă pot aduce serioase avantaje. Programatorii de noapte scriu cod și uneori nu văd pădurea din cauza copacilor. Cel mai important atu al unui programator de zi este acela că din cauză că nu programează cu plăcere, ar face mai bine orice altceva. El vede mai ușor cînd un lucru poate fi evitat pentru că ăsta e chiar scopul său principal în profesie. În timp ce programatorul de noapte se pune să scrie cod pentru a rezolva problema X, programatorul de zi poate veni cu ideea genială: stați, chestia asta mai bine o cumpărăm de la alții făcută deja bine la un sfert din prețul pe care ni-l ia nouă să o dezvoltăm. Uneori un programator de zi care să ferească echipa de prea multă muncă poate să valoreze greutatea sa în argint placat cu imitație de aur. Un alt avantaj al programatorului de zi este că nu se lasă atras de detalii care să-l abată de la rezolvarea problemei principale. Din cauză cu oricum nu îl pasionează sau interesează programarea în sine, detaliile și ramificările nu merită pentru el tratate. Programatorul de noapte poate face ușor dintr-un detaliu interesant, noul scop principal al muncii sale. Programatorul de zi va fi mai pragmatic și va dori să bifeze sarcina ca îndeplinită, bucuros că spre propășirea sa în carieră, de detalii se ocupă oricum colegii nocturni ceea ce îi va face să nu termine la timp treaba principală și deci să nu fie văzuți periculos de bine de șefi.
Dezavantaje: cere mulți bani, vrea să avanseze, plecă din echipă în secunda în care i se oferă ceva mai bun (ăsta cred că în final e mai degrabă un avantaj).
Programatorul de noapte
Este omul pasionat de programare și construcția logică. A ajuns în această meserie pentru că a aflat că există firme care nu numai că îl lasă să programeze la locul de muncă dar îl mai și plătesc pentru asta. S-a dus sau nu la școală nu ca să învețe programare – el știa deja să facă asta demult – ci aproape ca în cazul programatorului de zi, tot din cauza gurii părinților. Școala nu îl va învăța în mod sigur să programeze mai bine, de fapt el programează oricum mai bine decît aproape toți cei care îi vor fi profesori prin facultate și care nu pot aspira de obicei nici măcar la titlul de programatori de zi, ei nefiind niciodată în viață practicanți ai meseriei despre care îi învață pe alții să o practice. În cel mai fericit caz școala îl va învăța că există mult mai multe lucruri decît credea inițial, că există și programatori de zi cu care vor trebui să lucreze, poate și ceva abilități sociale de bază și în mod sigur îl va învăța că în viață uneori trebuie să faci lucruri foarte urîte sau umilitoare, că valoarea reală și valoarea aparentă a unui om sînt două lucruri complet diferite și că aparența și suprafața primează aproape întotdeauna în evaluări.
Cum a ajuns el programator de noapte? Prin mecanismul de care vorbeam mai sus al cățelului nerăbdător la evenimentul plăcut care va urma, de fapt prin inversul acestuia. Scrierea codul este pasionantă și plăcută pentru un programator de noapte. Cînd o face, acesta uită de timp și pe neobservate se face noapte apoi dimineață. Oprirea din programat se face treptat tot mai tîrziu și din nevoi fiziologice. Lăsat de capul său, programatorul de noapte va programa pînă nu mai poate ceea ce de obicei se întîmplă la orele dimineții. Un avantaj al mamiferelor programatoare nocturne este și acela că telefonul noaptea nu distruge la fiecare 30 de minute vraja.
Pentru programatorul de noapte mașina – dacă și-o cumpără – la insistențele soției – nu e nimic special, în niciun caz unul din scopurile pentru care se duce la lucru. De cele mai multe ori tot soția o alege pentru că spre deosebire de colegii din schimbul de zi, nu se prea pricepe la mașini și la fotbal.
Programatorul de noapte este obligatoriu inteligent, altfel nu ar fi mistuit de logica aplicată constructiv. Asta nu înseamnă neapărat că e și deștept sau înțelept, ba din contră, de cele mai multe ori inteligența și aplecarea asupra detaliilor îl împiedică să își dedice resursele unor scopuri sau viziuni mai sintetice sau generale. Inteligența pentru programatorul de noapte este izvorul codului pe care îl scrie, din ea se hrănește și din ea risipește litere, cifre și semne pe ecran.
Programatorul de noapte nu are timp să-și dea seama care ar fi calitatea principală pentru cariera sa, el programează. Asta îl împiedică să dea în cap concurenței și aproape garantat va rămîne la munca de jos. Un adevărat programator de noapte poate avansa doar dacă are un șef complet neobișnuit în construcția ordinară a unei organizații: șeful care înțelege și apreciază munca de programator (asta e aproape o contradicție în termeni – dacă ar înțelege și aprecia nu ar mai avea multe șanse să ajungă șef). Într-o organizație cu mai mulți programatori, nu căutați niciodată programatorii buni printre manageri, șefi sau șefuleți. Programatorii de noapte nu au abilitățile sociale necesare pentru a accede la aceste poziții. Cînd programezi cu pasiune nu ai timp să observi că o colegă mai sus plasată în ierarhia organizației e gravidă deci e momentul optim să-i iei locul sau că un coleg care tocmai divorțează de soție nu prea își face treaba bine deci ar fi cazul ca șefii lui să fie mai bine informați.
Programatorul de noapte îi privește pe colegii săi diurni scurt și fără interes, nu are timp să cunoască și să caracterizeze, odată lipită eticheta de programator de zi pe un coleg, programatorul de noapte caută să reducă și să simplifice relaționarea cu subiectul diurn la cuvinte scurte și expresii de bază: apă, aer, priză, net.
Programatorii de noapte mănîncă atunci cînd le e foame și dacă pot, o fac la calculator. Dacă trebuie sau exigențele sociale o cer, se duc cu restul lumii la masă dar creează un forum de discuții separat pe teme legate de calculatoare. Atunci cînd schimbă subiectul, vorbesc eventual despre hardware sau jocuri sau în cel mai rău caz despre gadgeturi legate de IT.
Plăceri și evenimente așteptate: Visual Studio 2011, Ubuntu 11.4, Android 3, firmware nou la tabletă.
Lucruri pe care nu le apreciază: musafirii cu care trebuie stat de vorbă, concediile la munte fără calculator, sporturile de orice fel la televizor sau nu.
Calculatorul ideal pentru programatorul de noapte: unul stabil, rapid, nu contează cum arată, de preferință cu acces liber la interior (cei mai de noapte programatori nu sînt interesați deloc de efemerul obiect numit calculator).
Avantaje: lucrează mult și bine dacă ai grijă să nu intre prea mult în detalii neesențiale. Nu trebuie să-i trimiți la cursuri pe banii firmei, nu observă, uită sau se jenează să-și renegocieze salariul (nu cer mult oricum), nu se bagă în față la avansări așa că șefii își pot avansa liniștiți prietenii sau rudele, nu au timp să caute un loc mai bun de muncă și oricum nu le-ar plăcea să cunoască și să socializeze cu oameni noi. Sînt forța de muncă ideal de exploatat.
Dezavantaje: trebuie avută grijă să nu derapeze în amănunte care pentru ei pot ușor deveni esențiale în detrimentul scopul principal. Sînt capricioși, disprețuiesc laudele dacă vin de la oameni incompetenți sau care nu înțeleg nimic din ceea ce fac ei, pun rapid etichetă individului care folosește acest instrument și îi revocă imediat certificatul de încredere. Nu știu să avanseze – dacă organizația are nevoie de un astfel de om în poziții manageriale trebuie să-l caute și să-l pună acolo oarecum în ciuda individului. Avînd în vedere și faptul că în mediul concurențial sînt o grămadă de programatori de zi abili social și avizi de poziție, programatorii de noapte în poziții mai înalte din organizații sînt fie rarități sau accidente, fie – nu exclud că teoretic ar putea exista așa ceva – organizații cu management luminat.
Concluzie: acest post se termină fără nicio concluzie explicită.
Citi oameni au o profesie care nu le face nici o placere? Eu cred ca multi. Programatorii de noapte ar trebui sa fie fericiti ca pot sa faca ceea ce le place. Eu personal vad jobul doar ca un mijloc de a finanta alte chestii care imi plac. Bineinteles ca mi-ar place sa lucrez ceva care sa-mi si placa dar nu cred ca e posibil.
Interesanta clasificarea binara. As intreba cum se face cea mai buna echipa: cati de noapte si cati de zi? Si mai am o intrebare: e clar ca cel zi nu poate deveni de noapte… dar invers?
Programator de noapte e un titlu nu o funcție deci nu ar trebui să se piardă. Cred că pe un programator de noapte, chiar și retras la ferma sa de vaci din Kentucky sau Bihor, cînd imunitatea îi scade, microbul îl va ataca din nou.
Cîți programatori de zi în echipă? Maxim 2 ca să nu moară de singurătate, indiferent de dimensiunea echipei :)
Renton: statisticile zic ca mai putin de 5% din oameni fac ceea ce le place in plan profesional. Ei nu sunt neaparat programatori (de noapte), iar pentru multe din caracteristicile trasate de mrx au analogii si pentru pasionatii din alte profesii, din cei 5%. Si, da, nocturnii ar trebui sa fie fericiti, si cred ca si sunt pentru ca sunt atat de norocosi.
Nu cred ca toti diurnii sunt interesati de a ajunge sefi. Sunt si programatori de zi tranzitorii, pentru care programarea e doar o faza, poate vrea sa se faca farmacist sau sa organizeze petreceri pentru grupari de … elita, in Franta.
Dar in general, crezi ca programarea in sine e o meserie in care pasiunea aduce avantaje net superioare celor aduse de pasiunea intr-o alta meserie? diferenta dintre un programator nocturn si unul diurn e mai mare decat cea dintre un dentist pasionat (care viseaza dinti, face si drege si vorbeste non-stop despre asta) si unul care a tocit cursurile in facultate si a ajuns dentist pentru ca se fac multi bani? Clar ca in ambele exemple primul e mai bun dar cum poti cuantifica diferenta, daca e posibil? Care amanunt al inginerie software face diferenta asta fata de celelalte inginerii? Eu cred ca in toate domeniile e la fel…
Hai să zicem că ești un dentist pasionat. De la vîrsta de 12 ani te pasionează dentismul. Cum poți să practici? Nu te ajută cu nimic pasiunea asta decît foarte tîrziu. Dacă de la 12 ani ești pasionat de programare, o poți face plenar. Poți face programare la modul extrem și pe un 386 aruncat la gunoi. Poți sta nopțile, poți să practici mii și mii de ore din pasiune. Poți face asta în alte meserii? E clar ca la 25 de ani să zicem, după ce termini facultatea, programator pasionat și cu istoricul de care zic în spate vs dentist pasionat, diferența față de colegul diurn e incomparabilă în cele 2 domenii. Dincolo de asta mai este ceva ce scapă cuantificării, e subiectiv dar eu cred că e adevărat. Poți fi dentist pasionat dar nu cred că dentismul poate fi o pasiune de intensitatea programării. Nu am văzut niciodată sudori, brutari, mecanici, profesori… pasionați în așa măsură încît să nu observe cum trec 8 ore de lucru. Cred că intensitatea asta o poți eventual găsi mai ales în arte, nu în meșteșuguri.
Am inceput ca programator de noapte si la propriu si la figurat si am ajuns programator de zi. Pasiunea moare din multe motive: virsta, familie, lipsa de apreciere, nesiguranta, blazare etc. Cei mai placuti ani ai vietii mele ii asociez cu programatul noaptea. Acum fac chestii care nu ma pasioneaza din cauza ca firma o cere. Ce ma pasioaneaza nu e prioritate pentru cei ce ma platesc. Evident ca as fi mult mai productiv la ce ma pasioneaza. Si asa ajunge meseria de programator sa fie dor un mijloc de a-ti plati chiria. Problema e ca ma oboseshte foarte tare sa fac ce nu-mi place (ok, imi place partial pentru ca e totusi programare).
Programatorul cel mai de noapte din echipa mea a fost fortat sa plece acum o luna pe motiv ca nu era productiv. Si cred ca nu era. Apreciat sigur nu era. Si a intrat in competitie cu un baiat care stia ce vrea si care vrea sa fie sef. Poate e mai bine pentru toata lumea ca a plecat.