Despre rolul sarcinilor de testare în viața unui dezvoltator

Câte interviuri tehnice ai avut în viața ta?

În ultimii cinci ani, am participat la 35 de interviuri tehnice de orice tip și specific imaginabil - de la startup-uri kazahe pentru achiziționarea colectivă de carne pentru iarnă până la servicii și bănci fintech germane și americane; cu accent pe programare, livrare și management; la distanță și la birou; limitat și nelimitat în timp; stresant și relaxat, în diferite limbi.

Acest lucru, împreună cu ~20 de interviuri pe care le-am desfășurat în calitate de angajator - un număr suficient pentru a deveni regele interviurilor pentru a face următoarea observație (inițial complet neevidentă) și a mă impune în ea: sunt convins că în mare parte datorită atâtor interviuri, începe să pară obișnuință marginală, mi-am studiat stack-ul la nivel profesional și am devenit specialist în competiție, în ciuda faptului că lucrasem deja în dezvoltare web de 10 ani.

Acest articol se adresează programatorilor care sunt la începutul călătoriei lor și nu și-au epuizat încă profunzimea cunoștințelor. În ea, vreau să extind teza despre beneficiile educaționale colosale ale sarcinilor de testare și întrebărilor tehnice puse în interviuri - și invit pe toată lumea la noul meu robot de telegramă scris ActualizeBot, unde, conform planului meu, poți lua un interviu tehnic cel puțin în fiecare zi până la final. Și pentru ca acestea să nu se termine, puteți împărtăși și o sarcină tehnică interesantă, o întrebare sau o situație utilă/distractivă trăită în timpul unui interviu.

Vă voi spune mai multe despre bot mai jos, mai întâi să ne dăm seama de ce este atât de important să cunoașteți și să înțelegeți răspunsurile la aceste întrebări și sarcini tehnice, chiar dacă ați derulat cu succes proiecte independente de ani de zile.

De ce calitatea cunoștințelor noastre fundamentale lasă mult de dorit?

Interviurile tehnice, dacă nu ați devenit încă regele interviurilor, reprezintă un stres serios pentru organism, la fel și căutarea unui loc de muncă în general - indiferent dacă sunteți un specialist începător, un comutator sau un dezvoltator care a lucrat într-unul. loc pentru o lungă perioadă de timp (și în timpul nostru „lung” poate fi considerat un an).

În multe interviuri, există un factor uman care agravează acest stres. Intervievatorul dvs. poate să nu fie Alena Vladimirskaya, ci un programator obișnuit, așa cum ați găsit, de la care este dificil să vă așteptați la sarcini adecvate și la evaluarea lor, sau un lider de echipă hardcore care va aștepta momentul pentru a-și reduce toată severitatea în ochii lui pe tine, punând întrebarea: Ce este pentru tine agil!?

Într-o zi, fără să dau răspunsul necesar, dar, după cum înțelegeți, imprevizibil la această întrebare, am rămas fără o ofertă, de care m-am bucurat incredibil.

Încercând să evităm acest stres și mișcările inutile în general, ne distanțăm nu numai de expunerea cu voce tare a ignoranței noastre a unor trăsături de bază ale limbajului, ci și de reducerea măcar puțin a acestei ignoranțe.

Problema este că în practică există puține locuri unde putem obține această clasă de probleme.
Orice dezvoltator care a fost nevoit să lucreze în mai multe locuri va confirma că problemele fundamentale sau creative prezentate în interviuri au rareori vreo legătură cu ceea ce se ocupă un programator în viața reală - fără recursiuni, grafice și sisteme de control a liftului asincron de pe planetă cu negative. gravitația într-un alt braț al galaxiei. Din pacate.

În legătură cu JavaScript-ul meu nativ, există un exemplu bun - dacă React.JS nu ar fi apărut, 98% dintre programatorii JavaScript ar continua cu succes să trăiască în ignoranța fericită a ceea ce este bind - la mai bine de 20 de ani de la apariția sa - și ar continua să rămână perplex, primind întrebări despre asta la interviuri și numai cei care inventează toate aceste biblioteci, cadre și module extrem de abstracte ar continua să lucreze cu el. Astăzi, datorită reacției, acest număr a fost redus la ceea ce se simte ca 97%.

Evident, văzând „izolarea de realitate” a acestor sarcini, mulți dezvoltatori le ignoră sau pierd timpul scufundându-se în ele - și continuă să-și desfășoare rutina zilnică, adică, la figurat vorbind, să meargă prin câmpul minat al dezvoltării pentru producție nu numai fără detector de mine, dar și fără să știe că se află într-un câmp minat.

Care sunt consecințele lipsei de cunoaștere fundamentală a unei limbi?

Răspunsul la această întrebare pare banal, dar din anumite motive este natura umană să-și împingă întotdeauna soluția în colțul îndepărtat - iar acest lucru joacă un rol trist în viața programatorilor juniori și medii, prelungindu-le drumul către înălțimi (și adâncimi). ) de cunoștințe de limbă cu câțiva ani de ani.

Codul aplicației care utilizează cadre și biblioteci pe care sunt obișnuiți să le scrie în fiecare zi nu poate fi considerat de încredere dacă îl scriu fără o înțelegere suficientă a diferitelor aspecte ale implementării sale. O bună ilustrare a acestui lucru din lumea JavaScript este soarta bibliotecii JQuery, care a fost cândva motorul progresului și astăzi, fiind un domeniu de cunoaștere auto-închis, divorțat de restul limbii, își ia locul firesc în piața - scripturi semi-profesionale scrise în grabă și funcționând după cum este necesar, ca un cadou pentru același aspect rapid pe bootstrap de la freelanceri ieftini.

Viitorul proiectelor dezvoltate cu o abordare atât de iresponsabilă, deși din ignoranță, este prozaic și de scurtă durată: pierderi semnificative de timp din senin, eșecuri, pierderi financiare și de reputație și, ca urmare, scăderea entuziasmului pentru continuarea. cooperare.

Pe de altă parte, pentru o persoană care a ales calea unui programator, puțin se poate compara cu plăcerea de a înțelege ceea ce face. Înțelegând că el, ca și baronul Munchausen, călare călare pe un câmp minat. Inutil să spun că un angajator decent poate vedea în mod clar oameni care merg nechibzuiți printr-un câmp minat și oameni încremenți în nehotărâre de a face un pas într-o situație în care pot să alerge și să sară fără să se gândească la nimic?

ActualizeBot

După ce am văzut beneficiile interviurilor și, de asemenea, realizând că a merge la interviuri goale nu este în întregime etic, m-am gândit că ar fi grozav să creez un bot în care un începător sau un dezvoltator care se transferă într-o altă limbă să se angajeze într-o formare educațională fără a recurge la interviuri reale în acea măsură, în care mi s-a întâmplat. Și amintindu-mi cum le place programatorilor să discute și să compare problemele pe care trebuiau să le rezolve - mai ales dacă era ceva nebanal - mi-am dat seama că totul se potrivește, am respins toate îndoielile și voila.

Botul are în prezent 3 funcții simple:

  • Abonarea la o anumită limbă/cadru pentru a primi sarcini noi pentru aceasta. Vă abonați și pe măsură ce sarcinile ajung, le primiți în newsletter-ul zilnic
  • Publicarea unei sarcini sau a unei sarcini de testare - În cartea mea se spune că împărtășirea este grija
  • Un excelent generator de nume cu care puteți alege semnătura optimă pentru textul sarcinii pe care o publicați, inclusiv dicționare feminine, nu fără feministe

În prezent, următoarele limbi sunt disponibile pentru a alege: JavaScript, Java, Python, PHP, MySQL. Selecția este oarecum limitată din cauza limitelor înțelegerii mele. Sper să mă adaug la această listă cu ajutorul comunității habra.

Botul este lansat într-un format pur rock and roll pentru nimic care nu este de așteptat.
Puteți accesa el folosind acest link: ActualizeBot

Pe scurt despre implementarea tehnică

Acest bot este unul dintre câteva proiecte mici în care aduc prima versiune publică a miniframework-ului meu open source pentru dezvoltarea de roboți cu o structură complexă, numită cu dragoste Hobot și disponibilă în NPM pentru oamenii hardcore.

Frame-ul este construit pe baza Telegraf.JS și TypeScript, versiunea sa zero-zero-first, echipată cu un exemplu de utilizare, poate fi vizualizată la github si incearca imediat. În curând voi încărca versiunea 0.0.2, extinsă și pieptănată pentru o persoană din exterior și îi voi dedica un articol separat (portbagajul). Mă voi bucura dacă se va dovedi a fi la fel de relevant pentru cineva ca și pentru mine.

Deci, la câte interviuri a trebuit să participi?
Sunt sigur că ai ceva de spus!

Sursa: www.habr.com

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster