O vlogi testnih nalog v življenju razvijalca

Koliko tehničnih razgovorov ste imeli v življenju?

V zadnjih petih letih sem bil na 35 tehničnih razgovorih vseh možnih vrst in specifičnosti – od kazahstanskih startupov za skupni nakup mesa za zimo do nemških in ameriških fintech storitev in bank; s poudarkom na programiranju, dostavi in ​​upravljanju; na daljavo in v pisarni; časovno omejena in neomejena; stresno in sproščeno, v različnih jezikih.

To, skupaj s približno 20 razgovori, ki sem jih opravil sam kot delodajalec – zadostno število, da postanem kralj intervjujev, da ugotovim naslednjo ugotovitev (sprva povsem neočitno) in se v njej uveljavim: Prepričan sem, da v veliki meri zahvaljujoč toliko intervjujem je začelo izgledati kot obrobna navada, svoj stack sem preučil na profesionalni ravni in postal konkurenčen specialist, kljub dejstvu, da sem že 10 let delal v spletnem razvoju.

Ta članek je namenjen programerjem, ki so na začetku svoje poti in še niso izčrpali globine svojega znanja. V njem želim razširiti tezo o ogromnih izobraževalnih koristih testnih nalog in tehničnih vprašanj, zastavljenih v intervjujih – in vse povabiti k svojemu na novo napisanemu telegram bot-u ActualizeBot, kjer po mojem načrtu lahko opraviš tehnični razgovor vsaj vsak dan do konca. In da se ne končajo, lahko delite tudi zanimivo tehnično nalogo, vprašanje ali uporabno/zabavno situacijo, ki ste jo doživeli med intervjujem.

Spodaj vam bom povedal več o botu. Najprej ugotovimo, zakaj je tako pomembno poznati in razumeti odgovore na ta tehnična vprašanja in naloge, tudi če že leta uspešno vodite samostojne projekte.

Zakaj je kakovost našega temeljnega znanja daleč od želenega?

Tehnični razgovori, če še niste postali kralj intervjujev, so resen stres za telo, tako kot iskanje zaposlitve na splošno - ne glede na to, ali ste specialist začetnik, menjalnik ali razvijalec, ki je delal v enem mesto za dolgo časa (in v našem času se lahko "dolgo" šteje za eno leto).

V mnogih intervjujih k temu stresu prispeva človeški dejavnik. Vaš spraševalec morda ni Alena Vladimirskaya, ampak navadna programerka, od katere je težko pričakovati ustrezne naloge in njihovo oceno, ali zagrizeni vodja ekipe, ki bo čakal na trenutek, da vso svojo strogost spusti v njegove oči uprte v vas in se sprašujejo: Kaj je za vas agile!?

Nekega dne, ne da bi dal potreben, a, kot razumete, nepredvidljiv odgovor na to vprašanje, sem ostal brez ponudbe, česar sem bil neverjetno vesel.

S tem, ko se skušamo izogniti temu stresu in nepotrebnemu gibanju nasploh, se distanciramo ne le od glasnega razkrivanja našega nepoznavanja nekaterih osnovnih značilnosti jezika, ampak tudi od tega, da to nepoznavanje vsaj malo zmanjšamo.

Težava je v tem, da je v praksi malo krajev, kjer lahko dobimo to vrsto težav.
Vsak razvijalec, ki je moral delati na več mestih, bo potrdil, da imajo temeljni ali ustvarjalni problemi, predstavljeni v intervjujih, le redko kaj skupnega s tem, s čimer se programer ukvarja v resničnem življenju – brez rekurzij, grafov in asinhronih sistemov za krmiljenje dvigal na planetu z negativnimi gravitacija v drugem kraku galaksije. Na žalost.

V zvezi z mojim izvornim JavaScriptom je dober primer – če se React.JS ne bi pojavil, bi 98 % programerjev JavaScript uspešno še naprej živelo v blaženem neznanju o tem, kaj je bind – več kot 20 let po njegovem pojavu – in bi še naprej biti zmeden, prejemati vprašanja o tem na razgovorih, in samo tisti, ki izumijo vse te zelo abstraktne knjižnice, okvire in module, bi še naprej delali z njim. Danes se je po zaslugi reakcije to število zmanjšalo na nekaj, kar se zdi kot 97 %.

Očitno mnogi razvijalci, ko vidijo "izolacijo od realnosti" teh nalog, ignorirajo ali izgubljajo čas, da se potopijo vanje - in nadaljujejo s svojo vsakodnevno rutino, torej, figurativno rečeno, hodijo skozi minsko polje razvoja za proizvodnjo, ne samo brez detektorja min, pa tudi brez zavedanja, da so na minskem polju.

Kakšne so posledice pomanjkanja temeljnega znanja jezika?

Odgovor na to vprašanje se zdi banalen, vendar je iz neznanega razloga človeška narava, da svojo rešitev vedno potisne v skrajni kot - in to igra žalostno vlogo v življenju nižjih in srednjih programerjev, podaljšuje njihovo pot v višave (in globine). ) znanja jezika za nekaj let let.

Aplikacijske kode, ki uporablja okvire in knjižnice, ki so jih vajeni vsak dan pisati, ni mogoče šteti za zanesljive, če jo napišejo brez zadostnega razumevanja različnih vidikov njene implementacije. Dobra ilustracija tega iz sveta JavaScripta je usoda knjižnice JQuery, ki je bila nekoč motor napredka, danes pa kot samostojno polje znanja, ločeno od preostalega jezika, zaseda svoje naravno mesto v trg - polprofesionalni skripti, na hitro napisani in delujoči, kot je potrebno, kot darilo k isti hitri postavitvi na bootstrap od poceni samostojnih podjetnikov.

Prihodnost projektov, razvitih s tako neodgovornim pristopom, čeprav iz nevednosti, je prozaična in kratkotrajna: velike izgube časa na nebu, neuspehi, finančne izgube in izgube ugleda ter posledično zmanjšanje navdušenja za nadaljevanje. sodelovanje.

Po drugi strani pa se za osebo, ki je izbrala pot programerja, malo lahko primerja z užitkom razumevanja, kaj počne. Zaveda se, da tako kot baron Munchausen na konju skače skozi minsko polje. Ni treba posebej poudarjati, da spodoben delodajalec lahko jasno vidi ljudi, ki brezobzirno hodijo skozi minsko polje, in ljudi, ki so zamrznjeni v neodločnosti, da bi naredili korak v situaciji, ko lahko tečejo in skačejo, ne da bi o čemer koli razmišljali?

ActualizeBot

Ko sem videl prednosti intervjujev in ugotovil, da obiskovanje praznih intervjujev ni povsem etično, sem pomislil, da bi bilo super ustvariti bota, kjer bi lahko začetnik ali razvijalec, ki prehaja na drug jezik, sodeloval pri izobraževalnem usposabljanju, ne da bi se zatekel k pravi intervjuji do te mere, v katerih se mi je to zgodilo. In ko sem se spomnil, kako programerji radi razpravljajo in primerjajo probleme, ki so jih morali rešiti - še posebej, če je šlo za nekaj netrivialnega - sem ugotovil, da vse štima, zavrnil vse dvome in voila.

Bot ima trenutno 3 preproste funkcije:

  • Naročnina na določen jezik/ogrodje za prejemanje novih nalog zanj. Naročite se in ko naloge prispejo, jih prejmete v dnevnem glasilu
  • Objava naloge ali testne naloge – V moji knjigi pravijo, da je deljenje skrbno
  • Odličen generator imen, s katerim lahko izberete optimalen podpis za besedilo naloge, ki jo objavite, vključno z ženskimi slovarji, ne brez feministk

Trenutno so na voljo naslednji jeziki: JavaScript, Java, Python, PHP, MySQL. Izbor je nekoliko omejen zaradi meja mojega razumevanja. Upam, da bom ta seznam dopolnil s pomočjo skupnosti habra.

Bot je zagnan v čisto rokenrol formatu, plačilo za karkoli ni pričakovati.
Do njega lahko pridete s to povezavo: ActualizeBot

Na kratko o tehnični izvedbi

Ta bot je eden od več majhnih projektov, v katere prinašam prvo javno različico svojega odprtokodnega mini okvira za razvoj botov s kompleksno strukturo, ljubkovalno imenovanega Hobot in na voljo v NPM za trde ljudi.

Ogrodje je zgrajeno na podlagi Telegraf.JS in TypeScript, njegovo zero-zero-first različico, opremljeno s primerom uporabe, si lahko ogledate na github in poskusite takoj. Kmalu bom naložil različico 0.0.2, razširjeno in prečesano za osebo od zunaj, in ji bom posvetil poseben članek (prtljažnik). Vesel bom, če se bo za koga izkazalo tako relevantno kot zame.

Torej, koliko intervjujev ste morali obiskati?
Prepričan sem, da imate kaj za povedati!

Vir: www.habr.com

Dodaj komentar