{"id":551,"date":"2015-08-26T14:04:38","date_gmt":"2015-08-26T12:04:38","guid":{"rendered":"https:\/\/alistapart.com\/it\/article\/equilibrio-specialista-generalista\/"},"modified":"2015-08-26T14:04:38","modified_gmt":"2015-08-26T12:04:38","slug":"equilibrio-specialista-generalista","status":"publish","type":"article","link":"https:\/\/alistapart.com\/it\/article\/equilibrio-specialista-generalista\/","title":{"rendered":"L&#8217;equilibrio specialista-generalista"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/alistapart.com\/it\/wp-content\/uploads\/sites\/2\/2015\/08\/n114skill.jpg\" border=\"0\" width=\"250\" height=\"140\" align=\"left\" \/>Un paio di anni fa ho passato un momento di crisi. C&#8217;era una netta divisione tra le discipline nella mia azienda: ero stato etichettato \u201cbackend developer\u201d e la definizione cominciava a starmi stretta. Non era l&#8217;etichetta ad essere sbagliata: la maggior parte delle mie ore lavorative le passavo scrivendo codice server-side. Mi piaceva ed ero bravo, ma non era <em>tutto<\/em> quello che potevo fare.<\/p>\n<p>Ho sempre pensato di avere un insieme di capacit\u00e0 piuttosto generali e mettermi addosso un&#8217;etichetta significava che non mi era permesso lavorare ad altro che non ricadesse nel mio ambito di competenza come backend developer. Sentivo di avere un unico ruolo e, sfortunatamente, non si tratta di una divisione che ho trovato esclusivamente nella mia azienda: \u00e8 onnipresente nel settore.<\/p>\n<div class=\"paragrafo\">\n<h2>Qual \u00e8 il problema allora?<\/h2>\n<p>Considerate il seguente scenario di progetto: qualcuno nel marketing ha un&#8217;idea. Ne discute con un designer, che ne fa un mockup in Photoshop. Il designer lo consegna al front-end developer, che si lamenta che il designer non ha considerato quanto sia difficile implementare X senza un oneroso hack di JavaScript. Finisce il suo lavoro e lo gira al backend developer, che d\u00e0 fuori di testa perch\u00e9 il front-end developer non ha prestato la minima attenzione al modo in cui Y funzioner\u00e0 con il CMS aziendale.<\/p>\n<p>Vi suona familiare?<\/p>\n<p>Creare piccoli gruppi di specialisti divide i team e restringe il modo in cui lavoriamo insieme. Nel suo articolo \u201c<a href=\"http:\/\/bradfrost.com\/blog\/post\/development-is-design\/\">Development is Design<\/a>\u201d, Brad Frost descrive questo gap come un recinto al di l\u00e0 del quale gli specialisti tirano i propri pezzi di lavoro destinati ad altri specialisti che ci lavoreranno. Non \u00e8 raro vedere team individuali di \u201cspecialisti\u201d che si siedono tutti lontani gli uni dagli altri. Pi\u00f9 l&#8217;azienda diventa grossa, pi\u00f9 verranno aggiunte postazioni per gli specialisti, ciascuno con i propri task da completare e la maggior parte di questi lavorer\u00e0 isolatamente. Isolamento che genera ambienti poco sani, restringe la collaborazione e crea dei silos.<\/p>\n<p>La chiave sta nel trovare il giusto equilibrio tra specialisti e generalisti nel vostro team: usare entrambe perch\u00e9 se ne traggano vantaggi e favorire ambienti salutari e produttivi. In ultima analisi, la domanda \u00e8: come possono gli esperti collaborare meglio insieme?<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Equilibrare il team<\/h2>\n<h3>Il fascino dei generalisti<\/h3>\n<p>Nei miei anni di formazione, ho lavorato come sviluppatore in una piccola software agency. C&#8217;era completa libert\u00e0, assoluta fiducia e nessuna burocrazia. Se uno dei siti live aveva un bug, avevo carta bianca per entrare nel server live e consultare i log o controllare il file di configurazione per trovare gli errori. Non solo ne avevo il permesso, ma spesso mi <em>era richiesto<\/em> fare qualunque cosa. Era un&#8217;azienda talmente piccola che semplicemente non c&#8217;erano specialisti.<\/p>\n<p>In questo modo, ho appreso delle nozioni rudimentali di design, ho imparato a muovermi su un server e in un database e sono diventato abbastanza sicuro di me stesso nello sviluppo lato client.<\/p>\n<p>Questo tipo di approccio generalista allo sviluppo di siti web ha chiaramente dei vantaggi: i generalisti imparano come tutti i componenti funzionano gli uni con gli altri, sviluppano una comprensione e un giudizio critico sull&#8217;intero processo, e semplicemente sono anche bravi a fare cose perch\u00e9 ad esempio non aspettano che uno specialista faccia il lavoro sul database al suo posto.<\/p>\n<p>I generalisti sanno mettere le mani sulla maggior parte delle cose ma non saranno mai dei master di <em>tutto<\/em>. A volte, avere qualcuno che sa <em>a spanne<\/em> come muoversi in qualcosa non \u00e8 sufficiente.<\/p>\n<p>Se avete una rock band composta da membri che sanno suonare \u201cSmoke On The Water\u201d su tutti gli strumenti, ma non avete qualcuno che sappia suonare a tutto volume un assolo di Slash o che sappia suonare la batteria come John Bonham, allora non riuscirete mai a fare il tutto esaurito nelle sale da concerto.<\/p>\n<h3>Ottenere il meglio dagli specialisti<\/h3>\n<p>Gli specialisti sono gli esperti del loro settore. Hanno passato la loro carriera ad affinare le proprie capacit\u00e0 su un dato soggetto e quindi saranno per forza migliori di chiunque altro non abbia un&#8217;expertise equivalente.<\/p>\n<p>Ma sfruttarli male risulter\u00e0 in barriere alla collaborazione forte nel team. Per esempio, una volta in una grande azienda di software, mi fu dato il compito di indagare sul perch\u00e9 la build del nostro team non funzionava pi\u00f9. Ho capito che il problema era un riferimento mancante a una dipendenza nella definizione del build. Quindi, semplice da sistemare, no? Recupera la build definition e sistema le dipendenze. Per\u00f2 poi ho realizzato di non avervi accesso. Non potevo modificare direttamente la definizione della build e mi \u00e8 stato detto che avevo bisogno di un \u201cconfiguration specialist\u201d per implementare la fix.<\/p>\n<p>Quella che sarebbe stata una rapida modifica fin\u00ec con il prendermi ore mentre aspettavo uno specialista di un altro team per sistemare un problema che sapevo come risolvere. Sfortunatamente, si tratta di uno scenario comune: piuttosto che collaborare con il resto dell&#8217;azienda, a gruppi isolati di specialisti viene data la propriet\u00e0 unica di alcuni task.<\/p>\n<p>Gli specialisti sono posizionati meglio in ruoli in cui lavorano <em>insieme<\/em> ad altri membri del team piuttosto che separatamente. Come <a href=\"https:\/\/labs.spotify.com\/2014\/03\/27\/spotify-engineering-culture-part-1\/\">dice Henrik Kniberg di Spotify<\/a>: \u201c\u00c8 come una jazz band: sebbene ogni musicista sia autonomo e suoni il suo strumento, si ascoltano gli uni con gli altri.\u201d<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Tirate gi\u00f9 i muri<\/h2>\n<blockquote>\n<p>Rimuovere gli ostacoli a una cultura di grande performance \u00e8 il modo in cui avviene l&#8217;innovazione in un&#8217;azienda.<\/p>\n<p><a href=\"http:\/\/perfcap.blogspot.co.uk\/2011\/12\/how-netflix-gets-out-of-way-of.html\">Adrian Crockroft, Netflix<\/a><\/p><\/blockquote>\n<p>La collaborazione \u00e8 l&#8217;obiettivo finale quando si forma un team, dal momento che permette alle idee di scorrere liberamente e incoraggia l&#8217;innovazione. Creare gruppi di specialisti con la propriet\u00e0 totale e poca o nessuna comunicazione tra team far\u00e0 innalzare delle barriere non necessarie per la collaborazione.  Quindi, come identifichiamo e rimuoviamo queste barriere?<\/p>\n<h3>Togliere i colli di bottiglia<\/h3>\n<p>Una volta, ho lavorato in un&#8217;azienda in cui il team di sviluppo generalista batteva gli specialisti per quindici membri a uno. Quando gli sviluppatori richiedevano delle modifiche ad una build creata in automatico, dovevano aprire un ticket cos\u00ec che uno specialista potesse occuparsene. A un certo punto, gli sviluppatori aprivano ticket pi\u00f9 velocemente di quelli che gli specialisti riuscivano a risolvere, causando un collo di bottiglia nel workflow.<\/p>\n<p>Se gli sviluppatori fossero stati in grado di gestire da soli le build automatizzate, si sarebbe potuto evitare il collo di bottiglia. La conoscenza che aveva il configuration team avrebbe potuto essere condivisa tra gli sviluppatori, creando un approccio pi\u00f9 generalista ed eliminando un silo.<\/p>\n<p>Per identificare ed eliminare i vostri colli di bottiglia, chiedetevi:<\/p>\n<ul>\n<li>Quale parte del processo \u00e8 la pi\u00f9 lenta e perch\u00e9?<\/li>\n<li>Fate affidamento su una singola persona per fare tutto il vostro sviluppo front-end? Perch\u00e9?<\/li>\n<li>Ci sono altre persone nel team che hanno capacit\u00e0 simili o che mostrano un&#8217;attitudine all&#8217;apprendimento di quelle capacit\u00e0?<\/li>\n<li>I titoli di lavoro restrittivi impediscono che le persone beneficino delle capacit\u00e0 e dell&#8217;esperienza reciproche?<\/li>\n<\/ul>\n<h3>Incoraggiate la comunicazione<\/h3>\n<p>Ho visto aziende i cui i tester del software e gli sviluppatori erano team completamente indipendenti. I tester venivano spesso tirati in ballo solo alla fine del processo di sviluppo, quando ricevevano un modulo di test basato sui requisiti originali. Ma i requisiti possono cambiare e in effetti cambiano durante il processo di sviluppo, il che, quando i team operano completamente indipendentemente, pu\u00f2 portare a molte incomprensioni e a una perdita di produttivit\u00e0.<\/p>\n<p>Includere i tester durante il processo di sviluppo avrebbe migliorato la comunicazione e la performance. Al contrario, come conseguenza della separazione dei team, le release dei progetti avevano sofferto.<\/p>\n<p>Ci sono dei modi per limitare questi tipi di divisioni e per promuovere la comunicazione nei team:<\/p>\n<ul>\n<li>Cercate di sistemare gli spazi di lavoro cos\u00ec che i team del progetto possano sedersi insieme. Se non potete farli sedere tutti insieme, assicuratevi che abbiano <em>almeno<\/em> una conversazione al giorno riguardante il progetto.<\/li>\n<li>Il lavoro da remoto \u00e8 un privilegio ma \u00e8 possibile solo se vi rendete disponibili alle discussioni. Un gran beneficio derivante dal lavorare in ufficio \u00e8 essere in grado di andare alla scrivania di un collega e semplicemente chiedergli qualcosa. Il lavoro da remoto d\u00e0 l&#8217;impressione che le persone siano irraggiungibili. Se dovete lavorare da remoto, allora assicuratevi che i vostri colleghi si sentano a loro agio a contattarvi.<\/li>\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Scrum_%28software_development%29\">Scrum<\/a> \u00e8 un grande tool per incoraggiare la comunicazione, specialmente gli stand-up giornalieri, durante i quali ogni membro del team descrive quello a cui sta lavorando e se ci sono problemi per cui ha bisogno d&#8217;aiuto.<\/li>\n<\/ul>\n<h3>Riempite le mancanze di capacit\u00e0<\/h3>\n<p>Al vostro team mancano le skill necessarie per completare un progetto o terminarlo in maniera efficiente? Il team non ha familiarit\u00e0 con un particolare approccio o con una determinata tecnologia? Gli manca la sicurezza richiesta per superare con successo un problema? Usate gli specialisti come mezzo per educare il vostro staff:<\/p>\n<ul>\n<li>Fate venire uno specialista da qualche altro settore dell&#8217;azienda o, se le skill non ci sono internamente, assumete un consulente.<\/li>\n<li>Non permettete agli specialisti di risolvere il problema in isolamento. Date ai membri del team l&#8217;opportunit\u00e0 di lavorare a stretto contatto con loro, di imparare dalla loro esperienza e di cominciare a crearsi le capacit\u00e0 che a loro mancano.<\/li>\n<li>Incoraggiate i vostri specialisti ad organizzare dei workshop. I workshop sono anche un modo carino per instaurare una relazione interattiva tra gli specialisti e i generalisti, poi aprite la comunicazione e favorite un ambiente di condivisione della conoscenza.<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Promuovete la condivisione della conoscenza<\/h2>\n<p>Una volta ho lavorato in un team che sosteneva l&#8217;identificazione dei silos. Eravamo incoraggiati a lavorare con l&#8217;intero sistema e nessun singolo sviluppatore possedeva una specifica area, sebbene le persone avessero le proprie preferenze: io gravitavo pi\u00f9 verso il client-side, mentre un collega preferiva i web services.<\/p>\n<p>Quando ho ammesso di non aver familiarit\u00e0 con il modo in cui funzionavano i web services interni all&#8217;azienda perch\u00e9 non ci avevo lavorato molto, i miei colleghi ed io decidemmo di alternarci tra il lavoro client-side e i web service durante lo sprint successivo, condividendo in questo modo la nostra conoscenza.<\/p>\n<p>Ci sono molti modi per promuovere questo tipo di condivisione della conoscenza, che \u00e8 fondamentale per l&#8217;innovazione e per una cultura collaborativa.<\/p>\n<h3>Portatevi il pranzo al lavoro<\/h3>\n<p>Nella mia attuale azienda facciamo regolarmente dei pranzi in cui tutti portano il proprio pasto da casa da mangiare mentre un collega fa una talk informale su un argomento che ci interessa. Il pranzo da casa spesso genera interessanti discussioni tra i partecipanti: mi ricordo di alcune occasioni in cui una feature tecnica o una procedura si \u00e8 fatta strada nei nostri processi formali in seguito ad un fervente pranzo di questo tipo.<\/p>\n<p><a href=\"http:\/\/www.hanselman.com\/blog\/SharpenTheSawForDevelopers.aspx\">Scott Hanselman di Microsoft suggerisce<\/a> che le aziende \u201cfacciano dei pranzi tecnici di questo tipo almeno due volte al mese ed incoraggino tutti a presentare almeno una volta all&#8217;anno.\u201d \u00c8 una buona opportunit\u00e0 per incoraggiare un dibattito salutare tra colleghi con i quali non si collaborerebbe necessariamente su base regolare.<\/p>\n<h3>Corporazioni<\/h3>\n<p>Nel suo articolo \u201c<a href=\"https:\/\/dl.dropbox.com\/u\/1018963\/Articles\/SpotifyScaling.pdf\">Scaling Agile at Spotify with Tribes, Squads, Chapters and Guilds<\/a>\u201d (PDF), Henrik Kniberg definisce una corporazione come \u201cun gruppo di persone che vogliono condividere conoscenza, strumenti, codice e pratiche.\u201d Spotify usa le corporazioni per colmare i divari tra i team dell&#8217;azienda. Per esempio, uno sviluppatore probabilmente incontrer\u00e0 un problema che un altro sviluppatore all&#8217;interno dell&#8217;azienda ha gi\u00e0 risolto. Che senso ha duplicare il lavoro?<\/p>\n<p>Formare una corporazione fa s\u00ec che le soluzioni comuni vengano comunicate. \u00c8 un&#8217;opportunit\u00e0 per condividere esperienze tra i team.<\/p>\n<p>Nella mia azienda attuale, ogni team ha almeno un tester; i tester appartengono anche a corporazioni di QA separate, cos\u00ec da poter mettere insieme le proprie conoscenze. \u00c8 stato un enorme successo: le procedure di test sono state standardizzate tre i team e le tecnologie come Selenium sono state introdotte nello stack di test.<\/p>\n<h3>Modelli open-source interni<\/h3>\n<p>Limitate la percezione di possesso introducendo dei modelli interni di open source. Date a tutti la possibilit\u00e0 di contribuire al vostro codice sorgente o ai vostri design sostituendo i sistemi basati su ticket con un modello simile alle pull request di GitHub. Se siete competenti e a vostro agio nel fare un cambiamento ad una codebase che si trova nell&#8217;\u201carea\u201d tra due team, allora perch\u00e9 non dovreste? L&#8217;altro team pu\u00f2 agire come curatore del progetto rivedendo ogni invio di codice e ogni feedback, ma indovinate un po&#8217;&#8230; Adesso state collaborando!<\/p>\n<h3>Hack days<\/h3>\n<p>I progetti su cui state lavorando sembrano un po&#8217; stantii? Provate a fare una gara come azienda oppure organizzate un hack day per rimettere in moto le idee:<\/p>\n<ul>\n<li>Organizzate un <a href=\"http:\/\/ludumdare.com\/\">Ludum Dare<\/a> aziendale, in cui il miglior gioco realizzato alla fine dell&#8217;hack day vince.<\/li>\n<li>Non \u00e8 necessario che sia solo un giorno. <a href=\"https:\/\/labs.spotify.com\/2013\/02\/15\/organizing-a-hack-week\/\">Spotify fa regolarmente delle hack week<\/a>. Potreste addirittura trovare qualcosa che potete presentare all&#8217;azienda o a un cliente.<\/li>\n<li><a href=\"http:\/\/nhshackday.com\/\">The National Health Service fa annualmente degli hack days<\/a> in UK, a cui i professionisti digitali locali sono incoraggiati a partecipare. Lavorano per risolvere il problema presentato dai dottori e dallo staff del NHS con qualsiasi tecnologia abbiano tra le mani. \u00c8 incredibilmente incoraggiante e si tratta di un&#8217;opportunit\u00e0 incredibile per restituire qualcosa a un&#8217;organizzazione cos\u00ec importante.<\/li>\n<\/ul>\n<p>Gli hack days non devono essere collegati all&#8217;IT: incoraggiate le persone al di fuori del team di sviluppo a prenderne parte seguendo il modello del NHS. Gli hack days permettono alle persone di lavorare con i colleghi con cui normalmente non lavorerebbero, in una situazione in cui vengono incoraggiate nuove idee e viene premiata l&#8217;innovazione.<\/p>\n<\/div>\n<div class=\"paragrafo\">\n<h2>Andate avanti e collaborate<\/h2>\n<p>Una forte collaborazione \u00e8 cruciale per creare un team di successo e la collaborazione \u00e8 favorita dalla rottura di barriere. Fate buon uso dei vostri specialisti integrandoli con i vostri generalisti e posizionandoli a guidare, insegnare e instillare passione nei vostri team.<\/p>\n<p>Illustrazioni: {carlok}<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Specialisti? Generalisti? Non \u00e8 una questione di quale sia meglio, ma di trovare il giusto mix per il vostro team e il vostro lavoro. Gli specialisti offrono un&#8217;expertise di valore, ma fare troppo affidamento sulla specializzazione non va sempre bene per il workflow: troppe nicchie possono portare a silos, colli di bottiglia e scarsa comunicazione. Garin Evans raccomanda, invece, di creare team in cui siano complementari i tratti di specialisti e generalisti, incoraggiando la collaborazione man mano che si procede.<\/p>\n","protected":false},"author":818,"featured_media":7000767,"comment_status":"open","ping_status":"open","template":"","categories":[262,255,131,276,278],"tags":[],"coauthors":[451],"class_list":["post-551","article","type-article","status-publish","has-post-thumbnail","hentry","category-creativita","category-industry","category-numero-114-27-agosto-2015","category-project-management","category-workflow-tools"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/article\/551","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=551"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media\/7000767"}],"wp:attachment":[{"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/categories?post=551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/tags?post=551"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/alistapart.com\/it\/wp-json\/wp\/v2\/coauthors?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}