O úlohe testovacích úloh v živote vývojára

Koľko technických pohovorov ste v živote absolvovali?

Za posledných päť rokov som absolvoval 35 technických pohovorov každého predstaviteľného typu a špecifík – od kazašských startupov na kolektívny nákup mäsa na zimu až po nemecké a americké fintech služby a banky; so zameraním na programovanie, poskytovanie a riadenie; na diaľku a v kancelárii; časovo obmedzené a neobmedzené; stresujúce a uvoľnené, v rôznych jazykoch.

To spolu s približne 20 pohovormi, ktoré som sám viedol ako zamestnávateľ - dostatočný počet na to, aby som sa stal kráľom pohovorov na to, aby som urobil nasledujúci postreh (spočiatku úplne nezrejmý) a utvrdil sa v ňom: Som presvedčený, že z veľkej časti vďaka toľkým rozhovorom to už začína vyzerať ako okrajový zvyk, vyštudoval som svoj stack na profesionálnej úrovni a stal som sa konkurenčným špecialistom, napriek tomu, že som už 10 rokov pracoval vo web developmente.

Tento článok je určený programátorom, ktorí sú na začiatku svojej cesty a ešte nevyčerpali hĺbku svojich vedomostí. V ňom chcem rozšíriť tézu o kolosálnych vzdelávacích výhodách testovacích úloh a technických otázok kladených v rozhovoroch - a pozvať všetkých na môj novo napísaný telegram bot ActualizeBot, kde podľa môjho plánu môžete absolvovať technický pohovor minimálne každý deň, kým sa neskončia. A aby nekončili, môžete sa podeliť aj o zaujímavú technickú úlohu, otázku alebo užitočnú/zábavnú situáciu, ktorú ste zažili na pohovore.

Nižšie vám poviem viac o robotovi, poďme najprv zistiť, prečo je také dôležité poznať a pochopiť odpovede na tieto technické otázky a úlohy, aj keď už roky úspešne vediete projekty na voľnej nohe.

Prečo kvalita našich základných vedomostí zanecháva veľa požiadaviek?

Technické pohovory, ak ste sa ešte nestali kráľom pohovorov, sú pre telo vážnym stresom, rovnako ako hľadanie práce vo všeobecnosti – či už ste začínajúci špecialista, switcher, alebo vývojár, ktorý v jednom pracoval miesto na dlhú dobu (a v našej dobe „dlhé“ možno považovať za rok).

V mnohých rozhovoroch tento stres znásobuje ľudský faktor. Vašou anketárkou nemusí byť Alena Vladimirskaya, ale obyčajný programátor, od ktorého je ťažké očakávať adekvátne úlohy a ich hodnotenie, alebo tvrdý tímový šéf, ktorý počká na moment, kedy zrazí všetku svoju tvrdosť. jeho oči na vás, pýtajúc sa: Čo je pre vás agilné!?

Jedného dňa, bez toho, aby som dal potrebnú, ale, ako chápete, nepredvídateľnú odpoveď na túto otázku, som zostal bez ponuky, z ktorej som bol neuveriteľne šťastný.

Tým, že sa snažíme tomuto stresu a celkovo zbytočným pohybom vyhýbať, dištancujeme sa nielen od hlasitého odhaľovania našej neznalosti niektorých základných znakov jazyka, ale aj od toho, aby sme túto neznalosť aspoň trochu obmedzili.

Problém je v tom, že v praxi je málo miest, kde môžeme získať túto triedu problémov.
Každý vývojár, ktorý musel pracovať na viacerých miestach, potvrdí, že zásadné alebo kreatívne problémy nastolené v rozhovoroch majú málokedy niečo spoločné s tým, s čím sa programátor zaoberá v reálnom živote – žiadne rekurzie, grafy a asynchrónne systémy riadenia výťahov na planéte s negatívnym gravitácie v inom ramene galaxie. Bohužiaľ.

V súvislosti s mojím natívnym JavaScriptom je dobrý príklad – ak by sa neobjavil React.JS, 98 % programátorov JavaScriptu by úspešne naďalej žilo v blaženej nevedomosti o tom, čo je bind – viac ako 20 rokov po jeho objavení – a pokračovalo by byť zmätený, dostávať otázky o ňom na pohovoroch a iba tí, ktorí vymysleli všetky tieto vysoko abstraktné knižnice, rámce a moduly, by s ním pokračovali v práci. Dnes sa vďaka reakcii toto číslo znížilo na pocitových 97 %.

Je zrejmé, že mnohí vývojári, ktorí vidia „izoláciu od reality“ týchto úloh, ich ignorujú alebo strácajú čas ponorením sa do nich – a pokračujú vo svojej každodennej rutine, teda, obrazne povedané, kráčajú po mínovom poli vývoja nielen pre výrobu. bez detektora mín, ale aj bez toho, aby vedeli, že sú v mínovom poli.

Aké sú dôsledky nedostatku základných znalostí jazyka?

Odpoveď na túto otázku sa zdá byť banálna, ale z nejakého dôvodu je ľudskou povahou vždy odsúvať svoje riešenie do ďalekého kúta – a to hrá smutnú rolu v životoch mladších a stredných programátorov a predlžuje ich cestu k výšinám (a hĺbkam). ) jazykových znalostí o pár rokov.

Aplikačný kód využívajúci frameworky a knižnice, ktoré sú zvyknutí písať každý deň, nemožno považovať za spoľahlivý, ak ho píšu bez dostatočného pochopenia rôznych aspektov jeho implementácie. Dobrou ilustráciou zo sveta JavaScriptu je osud knižnice JQuery, ktorá bola kedysi motorom pokroku a dnes, keďže je do seba uzavretým poľom vedomostí, oddeleným od zvyšku jazyka, zaujíma svoje prirodzené miesto v trh - poloprofesionálne skripty narýchlo napísané a fungujúce podľa potreby ako darček k rovnako rýchlemu rozloženia na bootstrape od lacných nezávislých pracovníkov.

Budúcnosť projektov vyvinutých s takýmto nezodpovedným prístupom, aj keď z nevedomosti, je prozaická a krátkodobá: výrazné straty času z ničoho nič, neúspechy, finančné a reputačné straty a v dôsledku toho aj pokles nadšenia pre pokračovanie spolupráce.

Na druhej strane, pre človeka, ktorý sa vybral na dráhu programátora, sa len máločo môže porovnávať s potešením pochopiť, čo robí. Pochopenie, že on, rovnako ako barón Munchausen, sa prediera mínovým poľom na koni. Netreba dodávať, že slušný zamestnávateľ jasne vidí ľudí, ktorí bezohľadne kráčajú po mínovom poli a ľudí, ktorí sú zamrznutí v nerozhodnosti urobiť krok v situácii, keď môžu behať a skákať bez toho, aby na čokoľvek mysleli?

ActualizeBot

Keďže som videl výhody rozhovorov a tiež som si uvedomil, že ísť na prázdne pohovory nie je úplne etické, pomyslel som si, že by bolo skvelé vytvoriť robota, v ktorom by sa začiatočník alebo vývojár, ktorý prechádza do iného jazyka, mohol zapojiť do vzdelávacieho školenia bez toho, aby sa skutočné rozhovory do tej miery, v ktorých sa mi to stalo. A keď som si spomenul, ako programátori radi diskutujú a porovnávajú problémy, ktoré museli vyriešiť – najmä ak to bolo niečo netriviálne – uvedomil som si, že všetko sedí, odmietol som všetky pochybnosti a voila.

Robot má v súčasnosti 3 jednoduché funkcie:

  • Predplatenie konkrétneho jazyka/rámca s cieľom získať preň nové úlohy. Prihlásite sa na odber a keď vám prídu úlohy, dostanete ich v dennom bulletine
  • Publikovanie úlohy alebo testovacej úlohy – V mojej knihe sa hovorí, že zdieľanie je starostlivé
  • Vynikajúci generátor mien, pomocou ktorého si môžete vybrať optimálny podpis pre text úlohy, ktorú publikujete, vrátane ženských slovníkov, nie bez feministiek

V súčasnosti sú na výber tieto jazyky: JavaScript, Java, Python, PHP, MySQL. Výber je trochu obmedzený kvôli limitom môjho chápania. Dúfam, že tento zoznam pridám s pomocou komunity habra.

Bot je spustený v čisto rokenrolovom formáte; neočakáva sa platba za čokoľvek.
Môžete naň prejsť pomocou tohto odkazu: ActualizeBot

Stručne o technickej realizácii

Tento robot je jedným z niekoľkých malých projektov, kde prinášam prvú verejnú verziu môjho open source minirámca na vývoj robotov so zložitou štruktúrou, láskyplne pomenovaných Hobot a dostupných v NPM pre hardcore ľudí.

Framework je postavený na báze Telegraf.JS a TypeScript, jeho nula-nula-prvá verzia, vybavená príkladom použitia, si môžete pozrieť na github a hneď to skúste. Onedlho nahrám verziu 0.0.2, rozšírenú a prečesanú pre človeka zvonku a budem jej venovať samostatný článok (chobot). Budem rád, ak to bude pre niekoho relevantné ako pre mňa.

Takže, koľko pohovorov ste museli absolvovať?
Som si istý, že máte čo povedať!

Zdroj: hab.com

Pridať komentár