Sul ruolo delle attività di test nella vita di uno sviluppatore

Quanti colloqui tecnici hai avuto nella tua vita?

Negli ultimi cinque anni ho partecipato a 35 colloqui tecnici di ogni tipo e specificità immaginabile: dalle startup kazake per l'acquisto collettivo di carne per l'inverno ai servizi e alle banche fintech tedesche e americane; con un focus sulla programmazione, consegna e gestione; remoto e in ufficio; limitato e illimitato nel tempo; stressante e rilassato, in diverse lingue.

Questo, unito ai circa 20 colloqui che ho condotto io stesso come datore di lavoro - un numero sufficiente per diventare il re dei colloqui per fare la seguente osservazione (inizialmente del tutto non ovvia) e affermarmi in essa: sono convinto che in gran parte grazie a tanti colloqui comincia a sembrare un'abitudine marginale, ho studiato il mio stack a livello professionale e sono diventato uno specialista della concorrenza, nonostante lavorassi già da 10 anni nello sviluppo web.

Questo articolo è rivolto ai programmatori che sono all'inizio del loro viaggio e non hanno ancora esaurito la profondità delle loro conoscenze. In esso, voglio approfondire la tesi sui colossali vantaggi educativi dei compiti di test e delle domande tecniche poste nelle interviste - e invitare tutti al mio bot di Telegram appena scritto ActualizeBot, dove, secondo il mio programma, potrai sostenere un colloquio tecnico almeno ogni giorno fino alla fine. E affinché non finiscano, puoi anche condividere un compito tecnico interessante, una domanda o una situazione utile/divertente vissuta durante un colloquio.

Ti dirò di più sul bot di seguito, vediamo innanzitutto perché è così importante conoscere e comprendere le risposte a queste domande e attività tecniche, anche se gestisci con successo progetti freelance da anni.

Perché la qualità delle nostre conoscenze fondamentali lascia molto a desiderare?

I colloqui tecnici, se non sei ancora diventato il re dei colloqui, sono un serio stress per il corpo, così come la ricerca di un lavoro in generale, che tu sia uno specialista alle prime armi, un commutatore o uno sviluppatore che ha lavorato in uno luogo per molto tempo (e ai nostri tempi “lungo” può essere considerato un anno).

In molte interviste, c’è un fattore umano che aggrava questo stress. La tua intervistatrice potrebbe non essere Alena Vladimirskaya, ma una normale programmatrice, come hai scoperto, da cui è difficile aspettarsi compiti adeguati e la loro valutazione, o un team leader hardcore che aspetterà il momento per abbattere tutta la sua severità in i suoi occhi su di te, ponendoti la domanda: Cos'è per te l'agile!?

Un giorno, senza dare la risposta necessaria, ma, come capisci, imprevedibile a questa domanda, sono rimasto senza un'offerta, di cui ero incredibilmente felice.

Cercando di evitare questo stress e movimenti non necessari in generale, ci allontaniamo non solo dalla forte esposizione della nostra ignoranza su alcune caratteristiche fondamentali della lingua, ma anche dal ridurre almeno un po' questa ignoranza.

Il problema è che in pratica ci sono pochi posti dove possiamo affrontare questo tipo di problemi.
Qualsiasi sviluppatore che abbia dovuto lavorare in diversi posti confermerà che i problemi fondamentali o creativi posti nelle interviste raramente hanno qualcosa a che fare con ciò di cui si occupa un programmatore nella vita reale: nessuna ricorsione, grafici e sistemi di controllo asincroni di ascensori sul pianeta con negativi gravità in un altro braccio della galassia. Purtroppo.

In relazione al mio JavaScript nativo, c'è un buon esempio: se React.JS non fosse apparso, il 98% dei programmatori JavaScript continuerebbe con successo a vivere nella beata ignoranza di cosa sia bind - più di 20 anni dopo la sua comparsa - e continuerebbe rimanere perplessi, ricevere domande al riguardo durante le interviste, e solo coloro che inventano tutte queste librerie, framework e moduli altamente astratti continuerebbero a lavorarci. Oggi, grazie alla reazione, questo numero è stato ridotto a quello che sembra il 97%.

Ovviamente, vedendo "l'isolamento dalla realtà" di questi compiti, molti sviluppatori li ignorano o perdono tempo immergendosi in essi - e continuano a svolgere la loro routine quotidiana, cioè, in senso figurato, a camminare nel campo minato dello sviluppo per la produzione non solo senza rilevatore di mine, ma anche senza sapere di trovarsi in un campo minato.

Quali sono le conseguenze della mancanza delle conoscenze fondamentali di una lingua?

La risposta a questa domanda sembra banale, ma per qualche motivo è nella natura umana spingere sempre la sua soluzione nell'angolo più lontano - e questo gioca un ruolo triste nella vita dei programmatori junior e medi, allungando il loro percorso verso le vette (e le profondità) ) di conoscenza della lingua da un paio d'anni.

Il codice applicativo che utilizza framework e librerie che sono abituati a scrivere ogni giorno non può essere considerato affidabile se lo scrivono senza una sufficiente comprensione dei vari aspetti della sua esecuzione. Un buon esempio di ciò, tratto dal mondo di JavaScript, è il destino della libreria JQuery, che un tempo era il motore del progresso e oggi, essendo un campo di conoscenza chiuso in se stesso, separato dal resto del linguaggio, occupa il suo posto naturale in il mercato: script semiprofessionali scritti frettolosamente e funzionanti secondo necessità come regalo per lo stesso layout veloce su bootstrap da freelance poco costosi.

Il futuro dei progetti sviluppati con un approccio così irresponsabile, anche se per ignoranza, è prosaico e di breve durata: significative perdite di tempo all'improvviso, fallimenti, perdite finanziarie e di reputazione e, di conseguenza, una diminuzione dell'entusiasmo per il continuo cooperazione.

D'altra parte, per una persona che ha scelto la strada di un programmatore, poco può essere paragonato al piacere di capire cosa sta facendo. Capire che lui, come il barone di Munchausen, sta impennandosi a cavallo in un campo minato. Inutile dire che un buon datore di lavoro può vedere chiaramente persone che camminano incautamente in un campo minato e persone che sono paralizzate nell'indecisione di fare un passo in una situazione in cui possono correre e saltare senza pensare a nulla?

ActualizeBot

Avendo visto i vantaggi delle interviste e rendendomi conto anche che ricorrere alle interviste in bianco non è del tutto etico, ho pensato che sarebbe stato fantastico creare un bot in cui un principiante o uno sviluppatore che si sta trapiantando in un'altra lingua potesse impegnarsi in una formazione educativa senza ricorrere a interviste vere e proprie in quel senso, in cui è capitato a me. E ricordando come i programmatori amano discutere e confrontare i problemi che dovevano risolvere - soprattutto se si trattava di qualcosa di non banale - ho capito che tutto quadrava, ho respinto ogni dubbio e voilà.

Il bot attualmente ha 3 semplici funzioni:

  • Abbonamento a un particolare linguaggio/framework per ricevere nuovi compiti per esso. Ti iscrivi e man mano che arrivano i compiti, li ricevi nella newsletter quotidiana
  • Pubblicare un'attività o un'attività di prova - Nel mio libro dicono che condividere è importante
  • Un eccellente generatore di nomi con cui potrai scegliere la firma ottimale per il testo dell'attività che pubblicherai, compresi dizionari femminili, non senza femministe

Attualmente è possibile scegliere tra i seguenti linguaggi: JavaScript, Java, Python, PHP, MySQL. La selezione è alquanto limitata a causa dei limiti della mia comprensione. Spero di aggiungere a questo elenco con l'aiuto della comunità habra.

Il bot viene lanciato in un formato puramente rock and roll, non è previsto il pagamento di nulla.
Puoi accedervi utilizzando questo collegamento: ActualizeBot

Brevemente sull'implementazione tecnica

Questo bot è uno dei tanti piccoli progetti in cui sto portando la prima versione pubblica del mio miniframework open source per lo sviluppo di bot con una struttura complessa, chiamato affettuosamente Hobot e disponibile in NPM per persone hardcore.

Il framework è costruito sulla base di Telegraf.JS e TypeScript, la sua versione zero-zero-first, corredata di un esempio di utilizzo, può essere visionata su githabe e provalo subito. Presto caricherò la versione 0.0.2, ampliata e pettinata per una persona dall'esterno, e le dedicherò un articolo a parte (il bagagliaio). Sarò felice se risultasse essere rilevante per qualcuno come lo è per me.

Allora, a quante interviste hai dovuto partecipare?
Sono sicuro che hai qualcosa da dire!

Fonte: habr.com

Aggiungi un commento