ro.alexn.org

Vrei să fii programator?

Magie. Pentru copiii doritori, programarea pare a fi arta de a amuza mulțimea prin iluzii, trucuri și efecte de scenă, deși după puțină practică devine clar că se apropie mai mult de ritualurile de exploatare a forțelor supranaturale, dar cu efecte practice. Nu este nimic mai înălțător decât idea de a-ți făuri propriile jocuri prin incantații magice.

2015 hc2000

După ce crești și noutatea se diminuează, ajungi să lucrezi și la chestii ce nu-ți plac, iar fenomenul se schimbă. Nu se întâmplă mereu, dar de multe ori lucrezi la câte o problemă interesantă, îți vine câte o idee, vreo soluție salvatoare, sau pur și simplu îți vezi aplicația cum merge, întâi în mâinile tale și apoi și-n mâinile altora, asta după multe zile, săptămâni sau luni de trudă și apoi se întâmplă … îți dai seama că ai reușit, iar secreția de dopamină din creier atinge cote periculoase, explozia de plăcere la gândul propriei creații fiind nemaipomenită.

Poate cel mai important efect secundar, adică capacitatea de a-ți adapta mediul în care trăiești, de a rezolva problemele altora, chiar ale societății la modul general, prin software. Ai prieteni cu afecțiuni cronice și vrei să-i ajuți? Vrei să inventariezi actele de corupție ale demnitarilor? Vrei să faci educația mai accesibilă celor din mediul rural? Vrei să ajuți la fezabilitatea surselor de energie reînnoibilă? Vrei să simulezi un univers paralel? Vrei să prezici viitorul? Vrei o dronă cu care să-ți spionezi vecinii în fiecare zi la ora 6? Totul devine posibil, singura limită reală fiind propria imaginație.

Însă ca orice drog, sensibilitatea receptorilor scade în timp și vrei mai mult și mai mult, culminând într-o stare perpetuă de foame ce nu poate fi stăvilită decât printr-un succes răsunător, sau printr-o depresie, într-o cursă care-i evident contra cronometru.

Poți fi programator?

Regret, dar șansele sunt împotriva ta, probabil n-o să poți și chiar dacă poți, poate că n-o să vrei. Cine-ți spune contrariul te minte, pentru că vezi tu, industria software este plină pe de-o parte de idealiști cronici, asta până devin cinici, așa ca mine, cinismul fiind un defect profesional des întâlnit după multe decepții. Pe de altă parte industria este plină și de capitaliști cu-n interes direct în reducerea costurilor, de unde și toate discuțiile despre educația STEM și despre vizele H1-B din SUA.

Mulți oameni înțeleg prin programare folosirea unui limbaj de comunicare cu calculatorul prin instrucțiuni deterministe. Însă asta este ca și când ai spune că pictura este echivalentă cu folosirea de pensule și evident că există o diferență uriașă între pictori precum da Vinci, Rembrandt, Monet și meseriașul ce-ți văruiește apartamentul. De altfel este o idee populară că învățarea mai multor limbaje de programare te fac mai bun. Idee venită de la indivizi gen Bruce Tate, ce scriu bloguri sau cărți și nimic altceva. Adică am lucrat la mod real cu vreo 6 limbaje de programare și m-am jucat în timpul liber cu tot pe atâtea, iar dintr-o duzină de limbaje de programare mi-au influențat gândirea în mod pozitiv fix două. Și noi, informaticienii, avem cam aceleași impresii cu ale oamenilor ce nu ne înțeleg profesia, iar dacă programarea este folosirea unui limbaj de programare, atunci două limbaje de programare sunt mai bune ca unul, iar trei sunt mai bune două, păi nu?

2015 random

Programarea este la mod fundamental rezolvarea de probleme prin intermediul informaticii, iar candidatul ideal are în primul rând abilități de rezolvare a problemelor de orice fel. Asta înseamnă o capacitate de descoperire a problemelor ce merită a fi rezolvate, de analiză a problemelor găsite, puterea de a gândi în abstract, de a diferenția complexitatea accidentală de complexitatea esențială (link), de spargere a problemelor mari în probleme mai mici și mai simple și capacitatea de concentrare extremă, adesea în detrimetrul vieții și a igienii personale.

Mulți profesori de analiză matematică de liceu afirmă că elevii se împart în două categorii - elevii ce înțeleg notația cu epsilon din definiții și elevii ce nu înțeleg. Cam așa este și cu informatica, elevii împărțindu-se în elevi ce înțeleg conceptul de variabilă și elevi ce nu înțeleg. Și evident că ai nevoie de o inteligență bine peste medie, ca un minim necesar. Dar și mai mult, în practică profesia asta implică aptitudini de inginer, arhitect, designer, matematician, hacker și artist, toate în același timp.

Dar la fel ca în cazul obezilor ce nu pot slăbi, noi cei care n-am fost niciodată grași sau noi cei care ne-am priceput din start la programare, putem pretinde că nu-i nevoie decât de efort, nenorocind psihic generații întregi.

Chiar vrei?

Da, sigur, e super tare. Dar există și niște dezavantaje. Sigur că putem vorbi de cele 10,000 de ore necesare, de copilăriile nenorocite de timpul petrecut în fața calculatorului, de viața personală dominată de obsesii ce includ cod.

Însă de la capitalismul brut ce domină industria, marcată de o selecție naturală și o instabilitate nemaintâlnită, la discriminările bazate pe vârstă (că suntem ca niște vaci bune de muls doar cât suntem până-n 40 de ani), la zilele lungi de lucru cu timpul suplimentar neplătit, totul cuplat cu nenumăratele decepții de care suferi de-a lungul carierei din diverse motive (gen startup-uri eșuate sau rupere de suflet în mediul corporatist), ajungi încet dar sigur la realizarea că profesia asta este o rețetă sigură pentru depresie. Și e bine s-o vezi venind, pentru că burnout-ul (link) este un fenomen real, iar non-programatorii din viața ta nici măcar n-or să te înțeleagă.

Adică dacă ai inteligența peste medie necesară profesiei, atunci ai opțiuni, iar profesia de programator nu-i tocmai cea mai lucrativă.

Și mai adevărat este însă că nimic din ce ți-aș putea spune nu te-ar putea face să renunți. Că ne simțim destinați s-o facem, ca o forță a gravitației de care nu putem scăpa. Nu-i așa?