{"id":566,"date":"2015-09-25T09:25:03","date_gmt":"2015-09-25T07:25:03","guid":{"rendered":"https:\/\/alistapart.com\/it\/article\/iniziazione-al-codice\/"},"modified":"2015-09-25T09:25:03","modified_gmt":"2015-09-25T07:25:03","slug":"iniziazione-al-codice","status":"publish","type":"article","link":"https:\/\/alistapart.com\/it\/article\/iniziazione-al-codice\/","title":{"rendered":"Iniziazione al codice"},"content":{"rendered":"<div class=\"paragrafo\"><img decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2015\/09\/n117mentor.jpg\" border=\"0\" width=\"300px\" style=\"float: left;\" \/><\/p>\n<p>Quando ci si immagina un mentore per la programmazione, potrebbero venire in mente alcuni archetipi. Magari potreste visualizzare il saggio monaco che ha modificato dei design patter per decenni. O magari \u00e8 il sofisticato keynote speaker con un&#8217;impressionante lista di contributi open source. Oppure potrebbe essere lo scienziato pazzo e poliglotta ossessionato da dozzine di linguaggi di cui non avete mai sentito parlare.<\/p>\n<p>Ma se questi personaggi non fanno parte del vostro team quando si unisce a voi il nuovo assunto fresco di studi, chi si far\u00e0 carico dell&#8217;addestramento?<\/p>\n<p>Voi, ovviamente.<\/p>\n<div>\n<p>Con l&#8217;aumento dei coding boot camp e con l&#8217;aumento delle iscrizioni ai corsi di informatica all&#8217;universit\u00e0, la scorta di junior developer \u00e8 pi\u00f9 grande che mai. Ma quando si tratta di educare tutto questo talento, molti team non sanno da dove cominciare. Alcuni sviluppatori pensano di non saperne ancora abbastanza per essere dei bravi mentori, mentre altri pensano di essere semplicemente troppo occupati per farlo.<\/p>\n<p>Qualsiasi siano le vostre riserve iniziali, potete fare da mentore e potete farlo bene. Tutto quello che serve sono le giuste linee guida e un po&#8217; di struttura.<\/p>\n<div class=\"paragrafo\">\n<h2>Iniziare la relazione mentore-protetto<\/h2>\n<p>Quando cercate la persona a cui fare da mentore, il vostro protetto, cercate \u201cqualcuno che abbia da insegnarvi qualcosa ma ancora non lo sa\u201c, come mi ha recentemente suggerito un mio amico che fa da mentore in <a href=\"http:\/\/www.railsbridge.org\/\">RailsBridge<\/a>.<\/p>\n<p>Questa cosa per me ha due significati. Il primo \u00e8 di rimanere aperti ad una serie di tipi di personalit\u00e0. Cercate un possibile protetto che non sia simile a voi. Potreste cadere nella tentazione di confrontare i junior con il voi di tre anni fa e saltare alle conclusioni, ma la mentorship \u00e8 una strada a due corsie, non \u00e8 fare lezione. In effetti, non riguarda nemmeno il passaggio della vostra conoscenza ad un&#8217;altra persona. Riguarda raggiungere un accordo comune per migliorare entrambe in quello che fate. Imparerete di pi\u00f9 a vicenda se avete modi diversi di pensare.<\/p>\n<p>Il secondo \u00e8 di scegliere qualcuno da cui <em>volete<\/em> imparare. Se il vostro protetto non \u00e8 il tipo di persona con cui vi piacerebbe partecipare ad una battaglia di codice, non andrete da nessuna parte. La prima qualit\u00e0 da evitare \u00e8 l&#8217;arroganza: una persona arrogante avr\u00e0 un tasso di crescita pi\u00f9 lento rispetto a chi accetta di buon cuore del feedback.<\/p>\n<p>Dal momento che le dinamiche del team sono in costante mutazione, potreste non stabilire spesso delle relazioni mentore-protetto con persone del vostro team. Questo non significa che non troverete opportunit\u00e0 per fare da mentore. Cercate piccoli momenti per intervenire e dare aiuto: sarete visti come leader e cominceranno a materializzarsi pi\u00f9 opportunit\u00e0 di mentoring.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>La chiave \u00e8 nell&#8217;agilit\u00e0<\/h2>\n<p>La chiave per essere un buon mentore \u00e8 un concetto con cui avete gi\u00e0 familiarit\u00e0, dal momento che \u00e8 cruciale per lo sviluppo di software di buona qualit\u00e0 e per apprendere nuove informazioni efficacemente. La chiave \u00e8 l&#8217;agilit\u00e0.<\/p>\n<p>Ovviamente, \u201cagile\u201c \u00e8 diventato un termine con pi\u00f9 significati e tende pi\u00f9 a confondere le idee che a chiarirle. Dave Thomas, uno dei firmatari originali dell&#8217;<a href=\"http:\/\/agilemanifesto.org\/\">Agile Manifesto<\/a>, in <a href=\"http:\/\/pragdave.me\/blog\/2014\/03\/04\/time-to-kill-agile\/\">un blog post del 2014<\/a> ha ammesso questa confusione, poi ci ha ricordato come fare tutto in maniera agile:<\/p>\n<ul>\n<li>Scopri dove sei<\/li>\n<li>Fai un piccolo passo verso il tuo obiettivo<\/li>\n<li>Aggiusta la tua comprensione basandoti sui tuoi obiettivi<\/li>\n<li>Ripeti<\/li>\n<\/ul>\n<p>O, nei termini della <a href=\"http:\/\/www.scrumguides.org\/scrum-guide.html\">Scrum Guide<\/a>: \u201cispeziona e adegua\u201d. L&#8217;ispezione e l&#8217;adeguamento sono due fondamentali dell&#8217;essere un buon mentore: se non vi prendete del tempo per controllare il vostro protetto e ascoltarne i problemi, dubbi e successi, allora non avrete una metrica per i risultati.<\/p>\n<p>Utilizzare l&#8217;agile come mentore richiede sensibilit\u00e0, creativit\u00e0 e solide capacit\u00e0 comunicative. Richiede anche la lungimiranza di capire a cosa aspira davvero il vostro protetto e il senno di poi per vedere dove \u00e8 gi\u00e0 arrivato il vostro protetto.<\/p>\n<p>Per stabilire un framework per misurare il progresso del vostro protetto, considerate tre fasi attraversate sotto qualche forma da tutti i nuovi membri di un team. La prima fase \u00e8 la totale mancanza di familiarit\u00e0 e una costante scoperta, la seconda \u00e8 un periodo di transizione con una chiara traiettoria del progresso e la terza \u00e8 una competenza auto-motivata. In tutte e tre queste fasi ricordatevi che l&#8217;agility rimane il vostro strumento pi\u00f9 vitale.<\/p>\n<h3>Fase 1: un po&#8217; di rispetto<\/h3>\n<p>Il primissimo giorno, fate una chiacchierata con il vostro protetto, il cui obiettivo per voi \u00e8 scoprire esattamente quale sia al momento il suo esatto livello e il tipo di esperienza che ha. Questa conversazione ha un doppio scopo: primo, stabilisce un discorso a due vie, una relazione comunicativa che sosterr\u00e0 il vostro approccio agile alla mentorship. Secondo, vi dar\u00e0 una base per decidere cosa assegnare per prima cosa al vostro protetto. Cominciare con una conversazione diretta pu\u00f2 prevenire un incredibile quantit\u00e0 di confusione e tempo perso.<\/p>\n<p>In questa fase, \u00e8 obbligatoria la programmazione in coppia. \u00c8 di gran lunga il miglior metodo per informare di tutto un nuovo sviluppatore, specialmente se avete una code base estesa o poco chiara. <a href=\"https:\/\/devmynd.com\/blog\/2015-1-pairing-with-junior-developers\">Un recente articolo di Sarah Mei<\/a> dice delle cose eccellenti su come appaiare efficacemente, ma il punto saliente \u00e8: non toccate (molto) la tastiera. Fate domande e rispondete alle domande con altre domande. Pi\u00f9 sarete vicini al livello di esperienza del vostro protetto, pi\u00f9 sar\u00e0 difficile usare l&#8217;approccio di chi si siede e osserva, dal momento che spesso dovrete capire delle cose anche voi. Tuttavia, dovete resistere ogni volta che sentite l&#8217;urgenza di prendere il comando e risolvere il problema. Il vostro protetto imparer\u00e0 molto pi\u00f9 efficacemente con lo <a href=\"http:\/\/www.socraticmethod.net\/how_to_use_the_socratic_method\/using_the_socratic_method.html\">stile Socratico<\/a>.<\/p>\n<p>Tenete a mente, per\u00f2, che non siete solo una guida tecnica. All&#8217;inizio, abbastanza sorprendentemente, l&#8217;apprendimento di esperienza tecnica non sar\u00e0 probabilmente la prima cosa che ha in mente un junior developer. Dovranno affrontare delle questioni sociali e delle sfumature di processo che tutti gli altri danno gi\u00e0 per scontate. Eliminate tutta la confusione riguardante le cose che girano attorno al lavoro cos\u00ec che il vostro protetto non abbia ostacoli nell&#8217;esplorazione del lavoro stesso.<\/p>\n<p>Per quanto non vediate l&#8217;ora di far andare avanti le cose, assicuratevi anche di essere onesti riguardo ai vostri limiti. Considerate frasi come \u201cNemmeno io capisco questa cosa\u201c, \u201cHo bisogno di una pausa\u201c, \u201cNon riesco ad aiutarti adesso, prova a chiedere a Oleg\u201c. Tutte queste possono essere musica per le orecchie di un principiante. Pi\u00f9 sarete onesti su quando e come gli altri possono aiutare, pi\u00f9 le aspettative del vostro protetto saranno realistiche. E prospettive realistiche portano a buone decisioni.<\/p>\n<h3>Fase 2: sfida accettata<\/h3>\n<p>Avendo stabilito una solida relazione comunicativa, il vostro protetto si sposter\u00e0 rapidamente oltre la fase verde. Saprete che \u00e8 nella Fase 2 quando riuscir\u00e0 a capire facilmente cosa deve essere fatto su un ticket, anche se non sanno al 100% come farlo. Questo significa che comincia a sentirsi a suo agio ed \u00e8 anche il momento in cui le cose si fanno davvero divertenti. \u00c8 ora di aggiungere una sfida al mix.<\/p>\n<p>Qualunque cosa facciate, <em>non<\/em> assegnate semplicemente al vostro protetto qualsiasi cosa si presenta. Al contrario, ispezionate, adattate e selezionate incarichi che si basano su quello che \u00e8 gi\u00e0 stato fatto prima dal vostro protetto.Se possibile, cercate di raccontare una storia con i compiti che gli assegnate. Qualcosa nel ticket successivo potrebbe elaborare o rafforzare un concetto da un ticket precedente. Oppure potreste raccontare la storia di una singola richiesta, dalla UI al database e ritorno.<\/p>\n<p>Se dovete assegnare qualcosa al vostro protetto che sembra relativamente facile, usatela come opportunit\u00e0 per allenarlo ad osservare il codice con un occhio pessimista. Cosa succederebbe con un input null? Questo apre la strada ad alcuni attacchi? Avresti potuto fare il refactoring di un altro componente per rendere questo cambiamento pi\u00f9 semplice? I tuoi test coprono <em>tutto<\/em> il nuovo codice? Anche se il vostro protetto decide che il codice \u00e8 ineccepibile (e non lo \u00e8 mai), eserciter\u00e0 il suo muscolo della programmazione cercando di rispondere a queste domande.<\/p>\n<p>Mentre ponete delle sfide al vostro protetto ogni volta che potete, non dimenticatevi di sfruttare ogni occasione per incoraggiarlo. Un task che sembra routine potrebbe sembrare un trionfo al vostro protetto, quindi, quando finiscono qualcosa, congratulatevi con lui e non sottostimate mai il potere di un semplice \u201cBen fatto!\u201c.<\/p>\n<h3>Fase 3: il gioco dell&#8217;iniziazione<\/h3>\n<p>Il fine ultimo consiste nel trasformare il vostro protetto in un membro produttivo che contribuisce alla pari al vostro team. Con il tempo e con la pratica, ci arriver\u00e0, ma perch\u00e9 aspettare? C&#8217;\u00e8 un modo migliore e pi\u00f9 veloce. Quando il vostro protetto \u00e8 pronto, potete aiutare la transizione con un tool vecchio come l&#8217;umanit\u00e0: l&#8217;iniziazione.<\/p>\n<p>Non importa chi siete e da dove venite, avete sicuramente familiarit\u00e0 con la narrativa legata all&#8217;iniziazione. Joseph Campbell l&#8217;ha identificata come uno degli <a href=\"http:\/\/en.wikipedia.org\/wiki\/Monomyth#Initiation\">elementi pi\u00f9 importanti della saga dell&#8217;eroe<\/a>, il pattern sottostante condiviso dalle storie epiche di tutto il mondo, dall&#8217;antica mitologia ai pilastri della cultura pop come <cite>Star Wars<\/cite> e <cite>Fight Club<\/cite>, le storie di iniziazione hanno preso infite forme. Il framework, tuttavia, \u00e8 sempre lo stesso: una straziante traversia che, se si sopravvive, dona all&#8217;iniziato un nuovo e pi\u00f9 alto livello di consapevolezza.<\/p>\n<p>L&#8217;iniziazione non \u00e8 solo per gli eroi epici. \u00c8 uno strumento potente di trasformazione in qualunque contesto. Quando sentite che il vostro protetto \u00e8 pronto per fare un gran salto, assegnategli un task che sembra un po&#8217; troppo complesso, un po&#8217; troppo al di l\u00e0 della portata di quello che \u00e8 stato fatto fino a quel momento e sufficientemente difficile per accelerarne la transizione a membro del team indipendente e alla pari.<\/p>\n<p>Un&#8217;iniziazione efficace per un software developer dovrebbe avere tre qualit\u00e0:<\/p>\n<ol>\n<li>Non dovrebbe essere banale per qualcuno che ha qualche anno in pi\u00f9 di esperienza.<\/li>\n<li>Richiede comunicazione con le persone di livello senior. Idealmente, il protetto guadagner\u00e0 della conoscenza dei fattori che entrano in gioco in una decisione tecnica di alto livello. Rivedere un componente della UI, modificare la vostra architettura di deploy o creare a mano una nuova strategia di caching sono tutti ottimi candidati per questo tipo di esperienza.<\/li>\n<li>Ha un valore dimostrabile, preferibilmente quantificabile. Potrebbe essere una nuova feature del front-end o potrebbe essere un grafico che mostra un decremento del tempo di caricamento della pagina, ma idealmente, il vostro protetto sar\u00e0 in grado di indicare una rappresentazione visuale del cambiamento e dire \u201cIo ne sono responsabile!\u201c.<\/li>\n<\/ol>\n<p>Spesso, le iniziazioni sono accidentali, una conseguenza naturale della crescente esperienza e responsabilit\u00e0, ma se impostate una iniziazione cosciente per il vostro protetto, non c&#8217;\u00e8 bisogno di dirgli che lo state facendo. In effetti, probabilmente, non dovreste. Mostrate al vostro protetto che credete in lui trattandolo come un ingegnere regolare.<\/p>\n<p>Se l&#8217;iniziazione ha successo, il vostro protetto diventer\u00e0 un membro alla pari, sebbene abbia ancora molto da imparare. Sar\u00e0 in grado di guidare il suo progresso senza dover pi\u00f9 essere condotto per mano e le sessioni in coppia saranno pi\u00f9 collaborative che istruttive. Dopo questa transizione, potete fare un gran passo indietro, ma continuare a guidare e porre sfide quando necessario. Dopo tutto, come sostiene <a href=\"http:\/\/en.wikipedia.org\/wiki\/Robert_Anton_Wilson\">Robert Anton Wilson<\/a>, una vera iniziazione non finisce mai.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Il mentoring fa bene all&#8217;intero team<\/h2>\n<p>Quando mi sono unita per la prima volta al mio team, era l&#8217;unica junior developer. Ora, il nostro team \u00e8 cresciuto ed \u00e8 cambiato e quasi la met\u00e0 di noi sono junior.<\/p>\n<p>Sono stata testimone di quanto questo cambiamento abbia cambiato in meglio le nostre dinamiche. Gli ingegneri esperti fanno domande ai junior, motivandoli a rifinire la loro conoscenza e i junior, a loro volta, fanno domande. Invece di un paio di buoni comunicatori che si accollano il peso dell&#8217;addestramento per tutti, ognuno di noi \u00e8 attivamente sempre coinvolto in questa condivisione di skill. Dove una volta gli individui venivano isolati, ora c&#8217;\u00e8 uno spirito di collaborazione e divertimento. La volont\u00e0 di imparare e di adattarsi \u00e8 diventato un valore centrale dell&#8217;intero team.<\/p>\n<p>Inoltre, ha migliorato in maniera sensibile la qualit\u00e0 del nostro codice. Sguardi nuovi sono l&#8217;ideale per identificare degli anti-pattern, dei problemi di stile e dei pezzi di codice confusi. Con un salutare mix di junior, abbiamo migliorato l&#8217;equilibrio tecnico e abbiamo creato nuove feature e il nuovo codice con cui facciamo merge \u00e8 pi\u00f9 semplice da mantenere. Senza il mentoring, questi miglioramenti non si sarebbero mai presentati.<\/p>\n<p>I software engineer sono fortunati a lavorare in un settore in cui strumenti e processi per la collaborazione sono sia bene definiti sia popolari, ma, per parafrasare l&#8217;Agile Manifesto, sono le persone e le interazioni che effettivamente creando o disfano un prodotto. Il mentoring \u00e8 un&#8217;interazione potente che, se fatto nel modo giusto, pu\u00f2 elevare la qualit\u00e0 sia della vita sia del codice del vostro team e prepara la strada per un&#8217;organizzazione di successo.<\/p>\n<p>Illustrazioni: {carlok}<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Le persone migliori per fare da mentore ai junior developer a quanto pare siete proprio voi. Fare da mentore pu\u00f2 essere uno strumento potente per guidare e istruire i nuovi assunti, ma offre anche a voi &#8211; e alla vostra organizzazione &#8211; dei vantaggi incoraggiando la collaborazione e la curiosit\u00e0 nel vostro lavoro quotidiano. Alice Mottola ci offre una guida (e un po&#8217; di struttura agile) per avvicinarci al processo di mentoring e ci mostra come pu\u00f2 realizzare codice migliore e ingegneri migliori.<\/p>\n","protected":false},"author":818,"featured_media":7000773,"comment_status":"open","ping_status":"open","template":"","categories":[252,262,255,134],"tags":[],"coauthors":[457],"class_list":["post-566","article","type-article","status-publish","has-post-thumbnail","hentry","category-community","category-creativita","category-industry","category-numero-117-22-settembre-2015"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article\/566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/users\/818"}],"replies":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/comments?post=566"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media\/7000773"}],"wp:attachment":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media?parent=566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/categories?post=566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/tags?post=566"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/coauthors?post=566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}