O să-ți povestesc azi de ce nu pun eu întrebări pe StackOverflow decât foarte rar.

În 99% din cazuri nu pun întrebări deloc, nu pentru că sunt eu vre-un expert care nu are niciodată nevoie de ajutor, nici pe departe. Nu e nimeni atât de bun încât să scrie tot codul de la sine fără să facă o căutare pe Google. Absolut nimeni, ține bine minte asta, pentru că te va ajuta să nu te mai subestimezi.

Lucrez la job-ul actual cu oameni care au 15-20 de ani experiență și care au exact același modus operandi ca și mine sau alți developeri cu mult mai puțina experiență decât ei.

Bun și spuneam că în 99% din cazuri nu pun întrebări pe Stack Overflow și iată care este și primul motiv:

1. Prefer documentația

Prefer să caut de cele mai multe ori documentația și să citesc acolo pentru că mă ajută să înțeleg mai multe despre problema pe care o am de rezolvat și nu numai, mă ajută să înțeleg mai multe și despre codul pe care îl scriu.

Sunt foarte multe răspunsuri la diferite întrebări pe Stack Overflow, care sunt corecte și concrete, dar din păcate autorii nu au venit și cu prea multe explicații în legătură cu abodarea avută. Dacă o să copiezi codul de acolo, constați că merge, n-o să-ți bați prea tare capul la momentul respectiv cu “de ce merge”.

Există posibilitatea să te mai întâlnești cu situația aia și să nu-ți mai aduci aminte care a fost soluția, te duci înapoi la postul de Stack Overflow să iei din nou codul. Nu e practic.

Poate fi și cazul în care pur și simplu știi ce trebuia să facă codul respectiv, dar nu-ți mai aduc aminte clasele pe care le apelai, metodele pe care le apelai șamd. Foarte posibil și asta și atunci normal că n-o să stai să memorezi cod, dar cred că dacă vei înțelege ce-ai făcut acolo de la început, vei ține minte în mod natural.

2. Probleme prea complexe

Știu că am tot repetat asta aici, dar aș vrea ca oamenii să nu mai creadă că programatorii stau degeaba la job sau că rezolvă probleme de genul: într-o colectie de n numere, extrage câte respectă nu știu ce condiție, sau alte chestii școlărești de genul ăsta.

Problemele pe care le vei avea de rezolvat sunt cu mult mai complexe și necesită nu numai cunoștințe despre cum funcționează limbajul sau tehnologia cu care lucrezi în detaliu ci și capacitatea de a lucra concentrat perioade mai lungi de timp.

Genul de probleme pentru care trebuie să detectezi întâi sursa și mai apoi să găsești o rezolvare.

Iar a cărei rezolvare s-ar putea să implice refactorizări masive de cod care vor impacta o multitudine din modulele sau componentele aplicației.

Pentru genul ăsta de probleme, populația de pe Stack Overflow sau alte comunități de genul nu te poate ajuta, pentru că nici nu vei ști unde este defapt problema, ci doar că aplicația nu face ce ar trebui să facă într-un caz anume.

Lucrurile care sunt rezolvabile cu Stack Overflow sunt lucruri punctuale mai simple. Iar pentru astea de obicei prefer să citesc documentația.

De multe ori mi s-a întâmplat chiar să găsesc aceeași problemă pe care o întâmpinam și eu legat de o librărie anume sau de vre-un framework, chiar pe pagina de “issues” de pe GitHub a librăriei respective. Caz în care răspunsurile primite de la autori sau contributori vor fi mult mai corecte și la subiect decât cele primite pe Stack Overflow.

3. Răspunsuri greșite sau învechite

Așa cum vă spun eu mereu, tehnologiile astea evoluează foarte rapid și e posibil ca uneori să primești un răspuns care nu mai este valabil în versiunile mai noi. Sau mai ales dacă nu ai creat tu thread-ul și doar cauți un răspuns în thread-uri mai vechi, acordă atenție totuși la data la care au fost date răspunsurile, pentru că e posibil să nu mai fie de actualitate dacă sunt foarte vechi.

Și mai sunt și cazurile în care răspunsul sau răspunsurile sunt pur și simplu greșite. Dacă ai un singur răspuns și nu mai are niciun alt up-vote, ai mari șanse sa fie greșit. Sunt mulți care răspund mai mult pentru reputație decât sa te ajute pe tine.

Cam astea sunt 3 motive pentru care eu nu pun niciodată întrebări. Nu zic că nu ar trebui sa faci asta niciodată, genul asta de platforme sunt super utile și ne ușurează viața, doar zic să ții cont de unele lucruri când o faci.

Când e Stack Overflow cel mai util

De asemenea sunt unele situații în care probabil ție ți-ar lua foarte mult să-ți dai seama cum să rezolvi o problemă, cum ar fi cazul în care ai un SQL query foarte complicat de făcut.

În cazul ăsta, deschizând un topic pe Stack Overflow și dând toate detaliile necesare, legate de problema pe care o ai, tabelele, structura lor cât și ce trebuie să obții, cineva te poate ajuta să scrii query-ul respectiv mult mai repede decât dacă ai face tu singur research.

Ți-ar fi mai greu să pui cap la cap pe bucăți task-ul, dar așa, pentru că poți oferi tot contextul pe care îl ai la dispoziție cât si ‘expected output’, nu rămâne decât să găsești pe cineva care să te ajute cu ‘know how’ – ul și gata.

De asemenea, oamenii te pot ajuta atunci când ai de făcut ceva nou, mai mult decât atunci când ai de rezolvat o problema sau un bug.

E greu uneori până și să explici cuiva verbal problema într-o sesiune de pair programming, dar într-un post pe vre-un forum.

Mi s-a întâmplat de multe ori ca cineva să aibă nevoie de ajutor cu o problemă complicată și să-mi ia ceva până să înțeleg care e problema. Aici depinde mult și de modul de gândire al fiecăruia. Eu sunt o persoană care are nevoie mereu sa testeze și să vadă pe propria piele și cu proprii ochi pentru a putea oferi o soluție pentru o problemă anume.

Nu copia cod fără să-l înțelegi

Stack Overflow te va ajuta mult la început când nu ești atât de familiar cu citirea și înțelegerea de documentație și vrei să rezolvi probleme mai mult sau mai puțin triviale. Dar am mai spus și mereu o să spun asta, încearcă să nu copiezi cod de acolo pur și simplu ci să și înțelegi ce adaugi la codul tău.

Să înțelegi cum funcționează, ce face, dacă mai poate fi optimizat etc.

Dacă vreo bucățică din asta de cod ajunge într-un code review și te va întreba cineva despre ea, iar tu nu vei ști să explici ce se întâmplă acolo, nu va fi foarte bine.

Încearcă tot timpul să înțelegi codul pe care îl adaugi, chiar dacă îl copiezi de undeva. E plină lumea de aplicații indescifrabile, compuse din bucățele de cod adunate de peste tot. Nu mai face și tu încă una.