Despre cuvintele magice: “nu se poate”

Urmează un text care va avea câteva aluzii și exemple din programare. Dacă tu crezi că nu ești pregătit pentru așa ceva, dacă crezi că nu-l vei înțelege și că o să vorbesc treburi prea inginerești atunci postarea asta e fix pentru tine. 

E ușor să-l iei pe nu în brațe. “Nu” e un răspuns decent, simplu, și poate fi îndulcit – “nu pot” (sugerând că tu nu poți, dar altcineva poate că ar putea) sau oarecum finalul “nu se poate”, care sugerează că nu numai tu dar nimeni altcineva nu ar putea să realizeze chestia în cauză.

Văd exemplul ăsta în proiectele în care lucrez, unde uneori interacționez cu programatori care îmi spun că ceva nu se poate face. Și știu că se poate face, știu și cum, doar că primul răspuns e că nu se poate face. Pentru cei care știu matematică, cea mai faină soluție pentru o problemă e că “nu se poate”, demonstrabil. Doar că în matematică totul se argumentează, iar să argumentezi că ceva e imposibil are o valoare extraordinară.

Nu e cazul în programare. În programare, “nu se poate” ar trebui îndată urmat de “de ce?” și omul care ți-a aruncat pe “nu se poate” tracasat până când ajunge la o soluție. Spațiul problemelor irezolvabile e mult mai mic și foarte des evident – mai mult, se pot rezolva multe situații irezolvabile aruncând mai mulți bani și mai multe resurse la problemă. Așa că eu mă străduiesc pe cât posibil ca răspunsul la problemele cu care mă confrunt zi de zi să nu fie niciodată “nu se poate”.

E un răspuns facil, pe care îl aruncă mai ales juniorii. Ei de obicei capotează la primul “de ce”, pentru că problemele pe care ei le cred imposibile sunt cel mai des implementate într-un framework sau altul, și atunci o să facă greșeala să spună: “ah, dar dacă folosim framework-ul ăla…”1)despre greșeala asta voi vorbi în altă postare. Ideea e că dacă cineva a rezolvat problema aceea înseamnă că e rezolvabilă, că cel mult “nu pot” e aplicabil, iar “nu pot” când altul poate, în materie de programare, este mai degrabă “nu vreau să investesc timp și energie”.

O să vă dau un exemplu inspirat dintr-o discuție pe care am avut-o acum câțiva ani, în care, în încercarea de a conversa cu un dispozitiv din rețea, un amic îmi explica că nu se poate din C#. “HttpWebRequest crapă cu excepție”, îmi zice el, și eu îl întreb, totuși, cum reușesc alții să vorbească cu dispozitivul ăla. Omul mi-a dat din umeri, după care l-am întrebat ce se întâmplă dacă deschide el socket-ul către portul respectiv și scrie în el comanda HTTP ce se întâmplă? Răspunsul m-a uimit: “ce-i ăla socket?”.

Și aici vine partea care mă doare pe mine. “Nu se poate” e un răspuns care vine cel mai des din lene, din lipsă de implicare și lipsă de dorință de implicare. În cazul lui, proiectul nu era un proiect de muncă, așa că a abandonat și probabil și în ziua de azi a rămas cu întrebarea. Dar oamenii nu pot face asta când li s-a spus de la muncă că trebuie rezolve problema, deci ceva trebuie făcut. Nu poți să mergi la un client care plătește milioane de euro anual să îi spui că nouă ne e imposibil să vorbim cu un dispozitiv în rețea, și că nu știm ce e ăla un socket. Așa apar întrebările disperate și răspunsurile stupide pe Stack Overflow și nu numai.

Cam asta e povestea cu “nu se poate”. Cel mai des se poate, dar ne e lene și nu avem chef să ne adaptăm. Inteligența e văzută ca și capacitatea de adaptare la condiții noi, iar “nu se poate” este fix opusul atunci când nu ai o demonstrație matematică în spatele afirmației.

NOTES   [ + ]

1. despre greșeala asta voi vorbi în altă postare

Comments

Despre cuvintele magice: “nu se poate” — 16 Comments

  1. Asta e o problemă în mai toate profesiile şi la toate nivelurile. Meseriile tehnice dau însă avantaje celor care refuză, avantaje ce ţin de faptul că interlocutorul s-ar putea să nu înţeleagă 100% „ce se poate face”.

    • Am observat că “nu se poate” e un răspuns care nu e foarte des asociat cu abilitățile tehnice (nu există un kung-fu al programării, 99% din muncă e foarte concretă, punctuală și ușor de înțeles pentru oricine) ci mai degrabă un refuz care pornește din zona de soft skills. Că nu au chef, că nu se simt capabili să facă așa ceva, că așa ceva e făcut de altcineva, prostii de genul ăsta.

      Cred și eu că în meseriile tehnice e mai ușor de demascat impostura, că există rezultate măsurabile, concrete, și mijloace destul de clare de a ajunge la o soluție.

    • E mult prea ușor să îl arunci pe “nu se poate”. Te scapă instantaneu de problemă, și deseori suntem tentați să acceptăm soluția asta

  2. De multe ori chestia asta vine din lipsa de motivatie, cand sunt recompense mari la mijloc mereu se gaseste cineva care “sa poata”.

  3. sunt doua aspecte
    1. acest “nu se poate” pe care l-am primit si eu in atatea domenii, pe mine m-a facut sa inteleg mai bine lucrurile pana am reusit sa le fac eu sa mearga.
    2. la randul meu am aruncat si eu cu “nu se poate” clientilor in cazul cererilor exotice.
    asta ca sa imi salvez timpul pe care l-as fi pierdut inutil

    • Stai puţin, că asta e o replică pe care o arunc şi eu uneori potenţialilor colaboratori: În banii şi timpul ăsta nu se poate sau, cel puţin, „nu se poate face bine” (şi atunci nu prea merită făcut, pentru că te pune pe tine într-o situaţie nasoală).

  4. Adevarul e ca nu mai stiu cine m-a invatat ca “Nu se poate” nu exista in programare, dar ii multumesc. Excludem evident problemele imposibile din punct de vedere matematic.

    Si acum ca totul este posibil au mai ramas variantele: se poate dar il termin in 6 luni, se poate dar imi trebuie buget dublu, se poate dar mai am nevoie de 6 oameni, se poate dar o sa dureze 400 de luni sa rulezi aplicatia pe un telefon, etc.

    Poate esti tu noob si iti zice lumea “nu se poate” sperand ca nu mai e nevoie sa-ti explice toata polologia? 🙂

  5. Nu cred că e programator care să nu înțeleagă perfect acest post…

    Am avut și eu acest păcat al “nu se poate”-ului pe la începuturi, după câteva experiențe mai neplăcute: cazuri în care am spus că da, ar fi posibil, cu multe “dacă”-uri, și m-am trezit că șefii de proiect înțelegeau un sigur că da! și trebuia să depun eforturi foarte mari pentru a rezolva probleme dificile (nu că nu aș aprecia provocările, dar am mai multe responsabilități și nu îmi pot permite să stau prea mult timp pe o singură problemă).

    După aproape 5 ani de experiență, am ajuns la o concluzie similară cu a ta. În IT nu există “nu se poate”, există doar probleme care ar dura prea mult, care ar necesita prea multe resurse sau pentru care nu avem încă toate cunoștințele necesare.

    Așa că tuturor cererilor le răspund cu un “nu este posibil încă”, după care le explic frumos constrângerile: timpul, necesitatea de a face câteva teste înainte, programul încărcat, etc. Am descoperit că primesc răspunsuri mult mai pozitive. Oamenii apreciază faptul că le iei în serios problema și nu le arunci un leneș “nu” și chiar dacă insistă, iau în serios observațiile mele și se asigură că am ce e necesar pentru a-mi face treaba.

    • Aia e o treabă foarte importantă – să le arăți clienților că le iei în serios ideile, și că te străduiești să le răspunzi întrebărilor.

  6. Aproape totul se poate in programare, dar uneori nu se poate in modul in care il vrea clientul. Si, daca domnul client este atehnici iti mai strici si doua trei zile sa ii explici si el tot “nu se poate” o sa auda.
    Asa ca uneori i-l servesti direct.

    pe mine ma deranjeaza mai mult sefii care raspund cu “evident ca se poate” fara sa ma intrebe inainte

Comentariul tău