De ce sunt programatorii diferiţi?

Într-o societate în care se pune mai mult pe soft-skills ei au nevoie de hard-skills – iar gama de hard-skills necesare este prea variată. Hard-skills sunt cunoştinţele tehnice efective, reale, bine ancorate în realitate – nu poţi să inventezi sau să fabulezi în IT. Nu poţi să faci asta decît ca sales-man – de aceea programatorii şi economiştii intră atît de tare în conflict. Soft skills, prin opoziţie, sunt acele calităţi pe care le poţi ‘drege’ pe parcurs, capacitatea de a conversa, sau chiar capacitatea de a înţelege nişte lucruri în cele din urmă logice şi simple. Oamenii cu soft skills sunt mult mai uşor de înlocuit decît oamenii cu hard-skills pentru că hard-skills nu sunt evidente, nu pot fi inventate, nu se poate improviza, nu le cîştigi prin reflecţie sau ajutat de instincte ci prin muncă brută, grea. Asta nu înseamnă că nu există loc pentru creativitate – ba din contră!

De-aici mi-a venit în minte o listă de lucruri care ‘se cred’ despre programatori, dar oamenii obişnuiţi se înşeală.

  • Programarea nu presupune creativitate, ci calcul. Nimic mai neadevărat. Dacă vă imaginaţi că programarea înseamnă a sta în faţa calculatorului pentru a seconda capacitatea de calcul a maşinii vă înşelaţi. Maşina e pusă acolo să calculeze. Programarea nu presupune nici un fel de calcul mental, nu presupune rutină – ba din contră. Nu rutina este norma, ci excepţionalul, excepţia, cazurile speciale
  • Programatorii sunt nişte oameni limitaţi care nu ştiu decît calculatoare. Mai degrabă invers. Un programator bun trebuie să aibă un cîmp ‘vizual’ mult mai larg decît al unui alt gen de persoană pentru că de obicei lucrează în cîmpuri diferite – poate lucra în economie, medicină, servicii bancare… şi asta într-un interval de 5 ani – cîţi ar putea să treacă prin cele trei medii în viata reală? Un programator o face – fără să-şi rupă gîtul după fiecare schimbare.
  • Programatorii nu au viaţă socială. Un adevăr aparent – nu cunosc foarte mulţi programatori fără viaţă socială, şi cei care nu au viaţă socială de obicei nu au nici o şansă în branşă. În realitate, comunitatea programatorilor este foarte largă, şi mult mai unită – e o comunitate în care primeşti foarte repede şi uşor ajutor – dacă meriţi. Comunitatea programatorilor e mai degrabă o meritocraţie – mult diferită de ceea ce ştiţi şi o intuiţi pentru că meritocraţia este singurul sistem social ideal realizabil! 🙂
  • Programarea nu lasă loc la imaginaţie. Nimic mai greşit! Programarea este incredibil de solicitantă pentru imaginaţie – un om fără imaginaţie nu are nici o şansă în domeniul ăsta, pentru că nu are nici o şansă să aibă o viziune mai largă.

Acum voi avea reversul celălalt – foarte mulţi care sunt mîndri că sunt programatori. În general cel care se bate cu pumnul în piept că e bun programator se înşeală amarnic. Mai mult, programatorul care foloseşte cuvîntul programator se înşeală amarnic (eu am făcut-o doar pentru a duce mesajul mai departe). Orice termen ataşat programatorului (programator, informatician, calculatorist, butonist) este de natură să diminueze poziţia sa. Pentru că nu există cuvînt care să explice complexitatea slujbei de programator ar fi cel mai bine să nu se folosească nici un substitut.

Să nu credeţi că m-a lovit acum mîndria de programator. Nu sunt mîndru de faptul că sunt programator, ci sunt mai ales mîndru că sunt un om complex, inteligent, care poate rezolva probleme de un grad de dificultate superior cu ajutorul calculatorului 😉

PS: Pentru clarificare: participarea la IOI nu te face ‘programator’. O facultate de profil nu te face ‘programator’. De fapt, nimic nu te face ‘programator’… Eşti… sau nu.

PPS: Şi, ah, programatorii ştiu ceva ce ceilalţi nu ştiu. Se numeşte C și nu e vitamină.

Comments

De ce sunt programatorii diferiţi? — 33 Comments

  1. Programatorii ştiu ceva ce ceilalţi nu ştiu. Se numeşte LISP. :p

    Ce se mai aude pe la master? Mă interesează ce materii faci, păreri despre profesori, păreri despre colegi etc.

  2. Um. Ce a influenţat C mai exact? C, ca şi limbaj este cât se poate de rudimentar. A fost chiar un pas înapoi. A fost contemporan cu limbaje mult mai evoluate, dar s-a impus pentru simplul fapt că UNIX (el însuşi scris în C) venea cu un compilator de C gratuit. Asta pe vremea când te costa o mână şi un picior ca să scrii programe în Smalltalk (de exemplu).

  3. LISP mi-e util aproape zilnic, deşi nu am mai programat în LISP de ani de zile. C nu mi-e util deloc. Pentru mine „util” nu înseamnă că nu ştiu ce alt limbaj are acolade pentru blocuri. Şi JavaScript are acolade pentru blocuri şi cu toate astea se aseamănă cu LISP incomparabil mai mult decât cu C.

  4. Ok. Observaţii:

    1. Sintaxa nu are relevanţă. Contează „feeling-ul” pe care îl ai programând în limbajul respectiv. Este mai LISP-like (JS, Python, Ruby) sau este mai C-like (C++, …), sau nici una nici alta (PHP, influenţat doar ca sintaxă de C; Java, influenţat ca sintaxă de C/C++, dar ca şi feeling influenţat mai degrabă de Ada şi Smalltalk; C# influenţat mai mult de Java, Delphi şi influenţat din ce în ce mai mult de LISP).

    2. Eu vorbeam din perspectiva unui programator, nu a unui utilizator. Sunt perfect conştient că C-ul este la ora actuală cel mai potrivit limbaj pentru a scrie sisteme de operare, drivere, compilatoare, interpretoare, servere şi aplicaţii embedded. Then again, nu cunosc prea multă lume care să scrie aşa ceva. Ştiu mult mai multă lume care *utilizează* aşa ceva, dintr-un alt context. Deci, ca înlocuitor de Assembley este excelent.

    Nu mi-ai povestit care mai este mişcarea pe la master. 🙂

  5. 1) Nu sintaxa are relevanţă, ci conceptele de bază. Limbaje gen PHP, Python, Ruby poate că sunt mai LISP-like – dar cînd vine vorba de performanţă trebuie să înţelegi maşina. LISP nu te ajută neapărat să faci treaba asta. În C poţi să reinventezi roţi, lucru foarte important pentru că roţile din IT au 3, 4 sau 6 colţuri. Din punct de vedere filosofic, C îţi permite o cunoaştere mai adîncă a maşinii cu care vorbeşti – nu zic că trebuie să programezi în C, ci doar că fără să ştii C nu ai ce căuta în meseria asta. Oricît de mult LISP ai cunoaşte 😉
    2) Eu cunosc foarte mulţi oameni care programează embedded, în C++.
    Aşa e, nu ţi-am povestit cum e mişcaera pe la master (pentru că nu am mai dat pe-acolo din lipsă de vreme).

  6. Poţi să inveţi Assembly şi să cunoşti mult mai bine maşina. Cunoşti maşina binişor şi dacă ştii maşinile alea cu 3 adrese şi cu o adresă care se predau pe la Arhitectura Calculatoarelor. Cei plictisiţi pot învăţa Brainfuck. 😀 Dacă faci un curs de Arhitectura Calculatoarelor + un curs de Sisteme de Operare poţi să ajungi doxă scriind doar pseudocod. Dacă vrei să şi vezi lucruri mişcându-se, atunci C e într-adevăr o unealtă bună. Şi asta nu atât datorită faptului că limbajul are ceva special şi revoluţionar, cât datorită faptului că nu are. Şi eu am citit cu plăcere o mare parte din „Computer Systems” de Bryant/O’Hallaron. Codul e cam 50% ASM, 50% C.

  7. 🙂
    Dacă tu crezi că C e doar structura şi felul în care se scrie codul… think again 🙂 Şi nu continuăm discuţia, pentru că nu îşi are locul aici.

  8. Spuneai că… “Promit că o să fac thread separat LISP vs. C altă dată.”! Poţi să începi cu aceste comment-uri 😉

  9. “De ce sunt programatorii diferiţi?” … pai pentru ca unii stiu mai mult, altii mai putin sau pt ca stiu chestii diferite.

  10. @Raul: Where?
    @Iulia: Cred că întrebarea era de ce sunt programatorii diferiţi de restul lumii, nu ce de sunt diferiţi între ei. 🙂

  11. Oare programatorii sunt chiar diferiti? … Adica daca nu ai programa, ai fi altfel? … cred ca asta se aplica pentru oamenii care sunt influentati de mediu din jurul lor …

    Eu unul stiu ca nu as fi altfel … nu as incepe a scrie cu stanga, nu voi deveni blond sau nu as gandi altfel. Daca maine nu o sa am cum sa mai lucrez ceea ce-mi place, asta nu inseamna ca ma voi schimba, ci ca ma voi adapta.

    Nu’s de acord cu aprope nimic din ce e mai sus … intrucat se poate aplica oricui, nu doar programatorilor.

    Si cand ma gandesc, ce sunt, nu ma gandesc ca sunt programator … dar pur si simplu programez [chestii].

    A programa == a-ti ocupa timpul cu ceva [util || frumos].

  12. linistiti-va sunteti la fel ca toti ceilalti, nu aveti nici mai multe nici mai putine buline. nici mai multi nici mai putini pitici. Doar ca activati intr-un domeniu destul de ermetic pentru multi, fapt care a creat prejudecata ca ati fi ciudati (nu, nu sunteti ciudati. Si mai e ceva. Se spune ca voi castigati foarte mult Asta naste invidie. Prin urmare trebuie sa isi justifice si ei cumva de ce unii castiga mai mult decat ei. “Astia-s altfel domne’. S-au nascut cu piulite in creier. Stau tot timpul pe calculator si nici macar nu au viata. ” Am incheiat citatul de care ma dezic.

  13. @zimiopoveste: eu, fiind fan LISP, ţin să-ţi atrag atenţia că ai uitat să închizi o paranteză. 😀

  14. @Mikaia: în mod sigur suntem percepuţi diferit – cam cum erau văzuţi inginerii acum 100 de ani. E natural pentru că nu e una din chestiile despre care poate comenta oricine ‘pe margine’ ca fotbalul, politica sau economia. Cît despre ideea de a programa fără a avea numele – exact despre asta vorbesc şi eu 🙂 Programatorul care se numeşte pe sine programator fie încearcă să comunice cu neofiţi, fie nu-şi înţelege propria poziţie 🙂
    @zimiopoveste: Şi foarte bine te dezici – de-asta am încercat să dau un pic de argumente contra lucrurilor care se spun instinctiv despre specia programatorilor.

  15. Real geeks.

    Eu sunt “Software Engineer” nu programator. Ingineresc toata ziua. Na e bine asa?

    De ce geeks? Vezi LISP vs. C.

    De ce geeks? Vezi motive pt care “programatorii sunt diferiti.” HEI!!!! Dar prostituatele sunt si ele diferite si au cea mai veche meserie din lume. Si maturatorii de strada sunt diferiti, si medicii sunt diferiti… si toti sunt diferiti. De ce programatorilor le pasa ca sunt diferiti? Ca-s geeks. 🙂

    Cat despre cat de minunat e sa fii “programator”? Scuteste-ma. Is garla idioti pupincuristi (deci deasupra mea) care scriu cod din cauza carora imi ia mie triplu sa fac o chestie relativ simpla. Dar nici macar asta nu e o diferenta de celelalte domenii… Cat despre meritocratie… Da, cunosc unu care si-a asumat toate meritele pentru un soft scris de mine. Si ii e bine. Foarte merituous si iarasi, nimic diferit de alte domenii.

  16. Si ca sa nu ma dezic, pt ca fara doar si poate activez in domeniul programarii…

    C si LISP nici nu exista… exista numa JAVA… mwuhahahaha
    Si orice ati lucra voi acolo e net inferior la ceea ce facem noi, the Java Software Engineers… mwuhahahaha

    mwuhahahahaha

  17. Şi totuşi nu mi-ai adus argumente, Raul. Nu de alta, dar e incredibil de uşor să te prostituezi – that’s a soft skill, not a hard skill..
    Şi oh, programatorii Java sau C# fac asta zilnic :))

  18. Ai uitat sa inchei cu mwuhahahahahaha

    Error finding server… is ocupat prostituandu-ma in feluri cum doar un programator Java poate, spre deosebire de unul C sau LISP depravat de asemenea placeri 🙂

    Argumente la ce btw? :)) Doar programatorii au nevoie de argumente la apeluri de functii.

  19. Auzi… dar a fi doctor si a fi obisnuit cu disectii pe vii sau pe cadavre… e un soft skill sau un hard skill?

  20. hard skill. Dar doctorul nu iese din ştiinţa lui – eu ca programator voi interacţiona (poate) cu medicina.
    Nu zic că doctorul care te operează e limitat.
    Pe de altă parte doctorul nu lucrează în echipă. Nu trebuie să schimbe domeniul in care lucrează.
    Nu ne punem aici să facem concurs de ‘meseria aia e mai importantă’. Doar explicam de ce o anumită comunitate a evoluat atît de diferit faţă de altele 🙂

  21. public class JavaRulz {
    public static void main(String args[]) {
    System.out.println(“Java RULZ!!!”);
    }
    }

  22. WordPress e vinovat: mi-a înlăturat indentarea!
    Îmi cer scuze pentru cei care s-au simţit ofensaţi de stilul neadaptat!

  23. Da,nuenevoiedeindentare,da’nuinteleginimic! Ecasicumaicitiunsingurcuvantdelacaplacoada!

    Off the record… ne scade jumate din notă dacă dăm programele scrise aşa!

  24. Cica doi programatori.
    – Bai, ia uite ce frumos ninge!
    – Unde ma??
    – Pai da si tu clik!