Over de rol van testtaken in het leven van een ontwikkelaar

Hoeveel technische interviews heb je in je leven gehad?

De afgelopen vijf jaar heb ik 35 technische interviews bijgewoond van elk denkbaar type en specificiteit - van Kazachse startups voor de collectieve aankoop van vlees voor de winter tot Duitse en Amerikaanse fintech-diensten en banken; met een focus op programmering, levering en beheer; op afstand en op kantoor; beperkt en onbeperkt in de tijd; stressvol en ontspannen, in verschillende talen.

Dit, gekoppeld aan de ongeveer twintig sollicitatiegesprekken die ik zelf als werkgever heb gevoerd – een voldoende aantal om de koning van de sollicitatiegesprekken te worden en de volgende observatie te maken (aanvankelijk totaal niet voor de hand liggend) en mezelf daarin te vestigen: ik ben ervan overtuigd dat dankzij zoveel interviews begint het op een marginale gewoonte te lijken, ik heb mijn stapel op professioneel niveau bestudeerd en ben een concurrentiespecialist geworden, ondanks het feit dat ik al 20 jaar in webontwikkeling had gewerkt.

Dit artikel is bedoeld voor programmeurs die aan het begin van hun reis staan ​​en de diepte van hun kennis nog niet hebben uitgeput. Daarin wil ik dieper ingaan op het proefschrift over de enorme educatieve voordelen van testtaken en technische vragen die in interviews worden gesteld - en iedereen uitnodigen voor mijn nieuw geschreven telegrambot ActualiseerBot, waar je volgens mijn plan minstens elke dag een technisch interview kunt afleggen tot het einde ervan. En zodat ze niet eindigen, kun je tijdens een sollicitatiegesprek ook een interessante technische taak, vraag of een nuttige/leuke situatie delen die je hebt ervaren.

Ik zal je hieronder meer vertellen over de bot. Laten we eerst uitzoeken waarom het zo belangrijk is om de antwoorden op deze technische vragen en taken te kennen en te begrijpen, zelfs als je al jaren met succes freelance-projecten uitvoert.

Waarom laat de kwaliteit van onze fundamentele kennis veel te wensen over?

Technische interviews zijn, als je nog niet de koning van de interviews bent geworden, een serieuze stress voor het lichaam, net als het zoeken naar een baan in het algemeen - of je nu een beginnende specialist bent, een switcher of een ontwikkelaar die in een baan heeft gewerkt plaats voor een lange tijd (en in onze tijd kan “lang” als een jaar worden beschouwd).

In veel interviews is er een menselijke factor die deze stress verergert. Je interviewer is misschien niet Alena Vladimirskaya, maar een gewone programmeur zoals je hebt gevonden, van wie het moeilijk is om adequate taken en de evaluatie ervan te verwachten, of een hardcore teamleider die wacht op het moment om al zijn ernst in te brengen. zijn ogen op jou gericht en stellen de vraag: Wat is voor jou agile!?

Op een dag, zonder het noodzakelijke, maar, zoals je begrijpt, onvoorspelbare antwoord op deze vraag te geven, bleef ik achter zonder een aanbod, waar ik ongelooflijk blij mee was.

Door te proberen deze stress en onnodige bewegingen in het algemeen te vermijden, distantiëren we ons niet alleen van de luide ontmaskering van onze onwetendheid over enkele basiskenmerken van de taal, maar ook van het op zijn minst een beetje verminderen van deze onwetendheid.

Het probleem is dat er in de praktijk maar weinig plaatsen zijn waar we dit soort problemen kunnen tegenkomen.
Elke ontwikkelaar die op verschillende plaatsen heeft moeten werken, zal bevestigen dat de fundamentele of creatieve problemen die in interviews naar voren komen zelden iets te maken hebben met waar een programmeur in het echte leven mee te maken heeft - geen recursies, grafieken en asynchrone liftcontrolesystemen op de planeet met negatieve zwaartekracht in een andere arm van de Melkweg. Helaas.

Met betrekking tot mijn native JavaScript is er een goed voorbeeld: als React.JS niet was verschenen, zou 98% van de JavaScript-programmeurs met succes blijven leven in gelukzalige onwetendheid over wat bind is - meer dan 20 jaar na de verschijning ervan - en zouden doorgaan om perplex te staan, er vragen over te krijgen tijdens interviews, en alleen degenen die al deze zeer abstracte bibliotheken, raamwerken en modules uitvinden, zouden ermee blijven werken. Dankzij de reacties is dit aantal vandaag de dag teruggebracht tot wat lijkt op 97%.

Het is duidelijk dat veel ontwikkelaars, gezien de “isolatie van de realiteit” van deze taken, ze negeren of tijd verspillen door zich erin te verdiepen - en doorgaan met hun dagelijkse routine, dat wil zeggen, figuurlijk gesproken, door het mijnenveld van de ontwikkeling van de productie lopen, niet alleen zonder mijndetector, maar ook zonder te weten dat ze zich in een mijnenveld bevinden.

Wat zijn de gevolgen van een gebrek aan fundamentele kennis van een taal?

Het antwoord op deze vraag lijkt banaal, maar om de een of andere reden ligt het in de menselijke natuur om de oplossing altijd in de verste hoek te duwen - en dit speelt een trieste rol in de levens van junior- en middenprogrammeurs, omdat ze hun pad naar de hoogten (en diepten) verlengen. ) van taalkennis met een paar jaar.

De applicatiecode die gebruik maakt van frameworks en bibliotheken die ze dagelijks schrijven, kan niet als betrouwbaar worden beschouwd als ze deze schrijven zonder voldoende inzicht in de verschillende aspecten van de uitvoering ervan. Een goede illustratie hiervan uit de wereld van JavaScript is het lot van de JQuery-bibliotheek, die ooit de motor van de vooruitgang was en vandaag de dag, als een op zichzelf staand kennisveld, gescheiden van de rest van de taal, zijn natuurlijke plaats inneemt in de wereld van JavaScript. de markt - semi-professionele scripts die haastig zijn geschreven en werken als dat nodig is als een geschenk voor dezelfde snelle lay-out op bootstrap van goedkope freelancers.

De toekomst van projecten die met een dergelijke onverantwoordelijke aanpak zijn ontwikkeld, zij het uit onwetendheid, is prozaïsch en van korte duur: aanzienlijk tijdverlies uit het niets, mislukkingen, financiële en reputatieschade en, als gevolg daarvan, een afname van het enthousiasme voor voortgezette projecten. samenwerking.

Aan de andere kant, voor iemand die het pad van een programmeur heeft gekozen, kan weinig vergeleken worden met het plezier van het begrijpen van wat hij doet. Begrijpend dat hij, net als baron Munchausen, te paard door een mijnenveld steigert. Onnodig te zeggen dat een fatsoenlijke werkgever duidelijk mensen roekeloos door een mijnenveld kan zien lopen en mensen die bevroren zijn in besluiteloosheid om een ​​stap te zetten in een situatie waarin ze kunnen rennen en springen zonder ergens aan te denken?

ActualiseerBot

Nadat ik de voordelen van interviews had gezien, en ook besefte dat het niet geheel ethisch is om blanco interviews te houden, dacht ik dat het geweldig zou zijn om een ​​bot te creëren waar een beginner of een ontwikkelaar die naar een andere taal overstapt, een educatieve training zou kunnen volgen zonder zijn toevlucht te hoeven nemen tot echte interviews in die mate, waarin het mij overkwam. En toen ik me herinnerde hoe programmeurs ervan houden om problemen die ze moesten oplossen te bespreken en te vergelijken - vooral als het iets niet-triviaal was - besefte ik dat alles klopte, alle twijfels verwierp en voila.

De bot heeft momenteel 3 eenvoudige functies:

  • Abonnement op een bepaalde taal/framework om er nieuwe taken voor te ontvangen. U schrijft zich in en zodra er opdrachten binnenkomen, ontvangt u deze in de dagelijkse nieuwsbrief
  • Een taak of testtaak publiceren - In mijn boek zeggen ze dat delen caring is
  • Een uitstekende naamgenerator waarmee u de optimale handtekening kunt kiezen voor de tekst van de taak die u publiceert, inclusief vrouwelijke woordenboeken, niet zonder feministen

Momenteel zijn de volgende talen beschikbaar om uit te kiezen: JavaScript, Java, Python, PHP, MySQL. De selectie is enigszins beperkt vanwege de grenzen van mijn begrip. Ik hoop met de hulp van de habra-gemeenschap deze lijst aan te vullen.

De bot wordt gelanceerd in een puur rock-'n-roll-formaat; er wordt nergens een betaling voor verwacht.
Je kunt er naartoe gaan via deze link: ActualiseerBot

Kort over de technische implementatie

Deze bot is een van de vele kleine projecten waarbij ik de eerste openbare versie breng van mijn open source miniframework voor het ontwikkelen van bots met een complexe structuur, liefkozend Hobot genoemd en beschikbaar in NPM voor hardcore mensen.

Het raamwerk is gebouwd op basis van Telegraf.JS en TypeScript, de zero-zero-first-versie, uitgerust met een gebruiksvoorbeeld, kan worden bekeken op githabe en probeer het meteen. Binnenkort zal ik versie 0.0.2 uploaden, uitgebreid en uitgekamd voor een persoon van buitenaf, en er een apart artikel aan wijden (de kofferbak). Ik zal blij zijn als het voor iemand net zo relevant blijkt te zijn als voor mij.

Hoeveel interviews moest je bijwonen?
Ik weet zeker dat je iets te vertellen hebt!

Bron: www.habr.com

Voeg een reactie