{"id":25823,"date":"2024-02-19T09:30:00","date_gmt":"2024-02-19T08:30:00","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=25823"},"modified":"2024-02-15T14:53:27","modified_gmt":"2024-02-15T13:53:27","slug":"non-si-puo-essere-agili-senza-eccellenza-tecnica","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/","title":{"rendered":"Non si pu\u00f2 essere Agili senza eccellenza tecnica"},"content":{"rendered":"\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-543ebd38      \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tTable Of Contents\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#cosa-significa-eccellenza-tecnica-le-metriche-dora\" class=\"uagb-toc-link__trigger\">Cosa significa Eccellenza Tecnica: Le metriche DORA<\/a><li class=\"uagb-toc__list\"><a href=\"#perch\u00e8-ci-interessano-le-metriche-dora\" class=\"uagb-toc-link__trigger\">Perch\u00e8 ci interessano le metriche DORA?<\/a><li class=\"uagb-toc__list\"><a href=\"#le-pratiche-agili-e-i-loro-benefici\" class=\"uagb-toc-link__trigger\">Le pratiche Agili e i loro benefici<\/a><li class=\"uagb-toc__list\"><a href=\"#conclusioni\" class=\"uagb-toc-link__trigger\">Conclusioni<\/a><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<p>Come ripeto spesso, essere Agili per un business \u00e8 fondamentale, perch\u00e8 permette di rilasciare velocemente nuovo software rispondendo alle esigenze dei clienti in modo rapido, riducendo i costi degli esperimenti e dei rilasci e permettendo quindi di raccogliere feedback e utilizzare quel feedback per fare scelte migliori. <\/p>\n\n\n\n<p>Un passo alla volta, iterativo ed incrementale, si ottengono grandi risultati.<\/p>\n\n\n\n<p>Ci sono tanti aspetti su cui un azienda pu\u00f2 fare errori nel cercare di essere Agile quando nasce o mentre cresce (organizzarsi per funzioni aziendali invece che per stream di lavoro, ad esempio, oppure mantenere un approccio Waterfall che pianifica troppo upfront) ma io faccio il Technical Coach e quindi voglio rimanere nel campo dello sviluppo software e voglio fare un affermazione chiara e che non possa essere fraintesa: la nostra azienda non sar\u00e0 mai davvero Agile se noi non riusciamo a garantire a livello tecnico ed implementativo l&#8217;eccellenza.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Non si pu\u00f2 essere Agili senza eccellenza tecnica.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cosa-significa-eccellenza-tecnica-le-metriche-dora\">Cosa significa Eccellenza Tecnica: Le metriche DORA<\/h2>\n\n\n\n<p>Potremmo definire l&#8217;eccellenza tecnica come l&#8217;abilit\u00e0 di sviluppare e mantenere un software di alta qualit\u00e0 in modo veloce, efficace, e sostenibile. Raggiungere l&#8217;eccellenza tecnica nel software richiede un mix di <strong>capacit\u00e0 tecniche, conoscenza, ed esperienza<\/strong>, e l&#8217;abilit\u00e0 di applicarle nel lavoro quotidiano.<\/p>\n\n\n\n<p>Nel mondo software \u00e8 molto difficile essere d&#8217;accordo su cosa significhi fare &#8220;software di qualit\u00e0&#8221; perch\u00e8 non ci sono tanti elementi oggettivi e quindi le opinioni in merito sono molteplici; lo strumento migliore che abbiamo ad oggi per definire in modo &#8220;scientifico&#8221; cosa significhi eccellenza tecnica e cosa identifichi un team performance sono <strong>le metriche DORA<\/strong>, identificate dai creatori del libro Accelerate.<\/p>\n\n\n\n<p>Il libro Accelerate, uscito nel 2018, \u00e8 un libro che parla dell&#8217;impatto delle pratiche Agili sui team di sviluppo software: gli autori hanno seguito un approccio scientifico, volendo dimostrare la tesi che le pratiche Agili migliorino l&#8217;efficacia del team di sviluppo; per fare questo, la prima cosa che hanno dovuto fare \u00e8 stata ideale le metriche da utilizzare per fare la valutazione: sono nate cos\u00ec le Software Delivery Performance Metrics, oggi note come metriche DORA (DevOps Research and Assessments).<\/p>\n\n\n\n<p>Le 4 metriche DORA sono:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Lead Time<\/strong>: il tempo tra l&#8217;ideazione di una feature e il suo arrivo agli utenti; per i team molto performanti arriva a meno di 1 ora;<\/li>\n\n\n\n<li><strong>Deployment Frequency<\/strong>: la frequenza di rilascio in produzione; per i team molto performanti arriva ad essere on demand: rilasciano tante volte al giorno, potendo quindi rilasciare sostanzialmente in qualunque momento a richiesta, se necessario;<\/li>\n\n\n\n<li><strong>Mean Time To Restore<\/strong>: il tempo medio di risoluzione dei problemi in produzione; per i team molto performanti arriva a meno di 1 ora;<\/li>\n\n\n\n<li><strong>Change Fail Rate<\/strong>: la percentuale di rilasci in produzione che causa qualche tipo di problema; per i team molto performanti arriva sotto al 15%;<\/li>\n<\/ul>\n\n\n\n<p>Il libro, consigliatissimo, descrive in modo molto importante come le pratiche Agili riescano ad impattare queste metriche, e quindi i risultati dei team di sviluppo, in modo positivo ed importante.<\/p>\n\n\n\n<p>Al momento, <a href=\"https:\/\/amzn.to\/49cbd7U\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">questo<\/a> libro e gli <a href=\"https:\/\/cloud.google.com\/devops\/state-of-devops\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">State of DevOps Report<\/a> annuali (de facto appendici annuali del libro stesso) sono i migliori strumenti ad oggi per parlare di qualit\u00e0 nel software in modo pi\u00f9 oggettivo e scientifico, e quindi sono a mio avviso il modo migliore per identificare l&#8217;eccellenza tecnica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-perche-ci-interessano-le-metriche-dora\">Perch\u00e8 ci interessano le metriche DORA?<\/h2>\n\n\n\n<p>La domanda legittima che qualcuno di voi potrebbe farsi: ci interessa cosi tanto migliorare queste metriche? Ci interessa cos\u00ec tanto raggiungere l&#8217;eccellenza tecnica?<\/p>\n\n\n\n<p>La mia risposta \u00e8 si, assolutamente si.<\/p>\n\n\n\n<p>Al di la degli aspetti puramente personali della professione e professionalit\u00e0 (personalmente questo lavoro mi piace e ci tengo sempre a fare il massimo anche solo per ambizione personale), ci sono motivi legati al successo del business che rendono questo obiettivo importante.<\/p>\n\n\n\n<p>Facciamo un passo indietro: le aziende devono (o dovrebbero) cercare di essere Agili e rimanerlo nel tempo, perch\u00e8 questo permette loro di avere successo molto pi\u00f9 facilmente. <strong>Essere Agili significa creare MVP, esperimenti, raccogliere feedback<\/strong> dagli utenti per portare il nostro prodotto sulla via del successo, e per poter fare tutto questo serve il supporto giusto da parte della tecnologia.<\/p>\n\n\n\n<p>Prendiamo ad esempio il lead time: <strong>quanto ci costa mandare una feature in produzione?<\/strong> Se riesco a farlo in un ora potr\u00f2 fare vari esperimenti al giorno, parlare con gli utenti e capire se stiamo risolvendo i loro problemi in modo efficace o meno, in modo da aggiustare la direzione continuamente. Se una nuova feature mi costa una settimana o due di lavoro, o addirittura pi\u00f9 settimane, la mia capacit\u00e0 di fare esperimenti sar\u00e0 ridotta, tenderemo a fare esperimenti e feature sempre pi\u00f9 grandi perch\u00e8 un rilascio ha un costo alto, e quindi difficilmente riusciremo a rispondere ai feedback degli utenti in modo efficace; in sostanza, o indoviniamo la soluzione fin dall&#8217;inizio (cosa che non succede praticamente mai) oppure avremo problemi e difficilmente avremo successo.<\/p>\n\n\n\n<p>Per ridurre il lead time abbiamo bisogno sicuramente anche di elementi di business e prodotto, per esempio pensare a prodotti e features in termini di <strong>Minimum Viable Product (MVP) e iterativa incrementale<\/strong> &#8211; ma se poi creare un MVP di un prodotto o una feature ci costa settimane o mesi tutto quello non servir\u00e0 e la tecnologia anzi diventer\u00e0 un freno: il business vorrebbe fare un MVP in un paio di settimane, ma anche a fronte di uno scope sostenibile il team tech non riesce a sostenere questo obiettivo.<\/p>\n\n\n\n<p>Non si pu\u00f2 essere Agili senza eccellenza tecnica. L&#8217;ho gi\u00e0 detto forse?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-le-pratiche-agili-e-i-loro-benefici\">Le pratiche Agili e i loro benefici<\/h2>\n\n\n\n<p>Per concludere il mio discorso, parliamo delle pratiche: in questa sezione voglio lasciarvi la carrellata delle principali pratiche Agili, ognuna accoppiata con i propri benefici principali. <\/p>\n\n\n\n<p>Mi concentrer\u00f2 su quelle che possono essere utili e di beneficio in qualunque contesto e situazione, lasciando stare pratiche e metodologie che richiedono un contesto specifico: per esempio, non citer\u00f2 Domain-Driven Design ed Event Sourcing, essendo pratiche costose che si sposano bene quindi con contesti con alta complessit\u00e0 che ne giustifichi il costo.<\/p>\n\n\n\n<p><strong><em>Nota: queste pratiche formano un circolo vizioso positivo; ognuna di esse presa singolarmente porta benefici, ma insieme si potenziano in modo esponenziale.<\/em><\/strong><\/p>\n\n\n\n<p><strong>Pair Programming<\/strong><\/p>\n\n\n\n<p>Il Pair Programming \u00e8 una pratica in cui invece di dividersi i task tra singoli membri del team, viene diviso tra coppie: ogni coppia di programmatori lavora al codice insieme. <\/p>\n\n\n\n<p>Questa pratica, vittima di tanti pregiudizi, viene spesso vista come insostenibile: due persone che fanno il lavoro di una? Sembra assurdo. Lo sarebbe davvero, se solo il lavoro principale dello sviluppatore fosse scrivere codice &#8211; ma non \u00e8 cos\u00ec!<\/p>\n\n\n\n<p>Nello sviluppo software <strong>il coding \u00e8 solo una parte molto piccola del lavoro<\/strong>: il resto \u00e8 esplorazione del problema, raccolta e reazione ai feedback, ecc. La parte di scrittura di codice \u00e8 molto ridotta in confronto a queste, quindi l&#8217;impatto di avere due persone farlo insieme \u00e8 minimo sul coding &#8211; ma allo stesso tempo \u00e8 un impatto enorme sui vari elementi che possono causare unplanned work: le PR, se ancora presenti nel flusso del team, saranno pi\u00f9 snelle, i bug saranno ridotti cosi come le chance di aver capito male il problema (defects), perch\u00e8 lavorando insieme le due persone si sono aiutate a vicenda ed evitate errori l&#8217;uno con l&#8217;altro. Inoltre in questo modo il Work In Process (WIP) si riduce in modo naturale portando benefici al throughput del team.<\/p>\n\n\n\n<p>La riduzione di unplanned work ripaga totalmente l&#8217;investimento.<\/p>\n\n\n\n<p><strong>Ensemble Programming<\/strong><\/p>\n\n\n\n<p>L&#8217;Ensemble Programming (aka Mob Programming) \u00e8 una pratica in cui il team lavora insieme allo sviluppo di un nuovo pezzo di codice, anche (e sopratutto) durante il coding. Potremmo anche definirlo come il Pair Programming allargato all&#8217;intero team (il che in un team cross-funzionale, idealmente, include anche le figure &#8220;non dev&#8221; come UX, PM, QA, Platform, etc).<\/p>\n\n\n\n<p>I benefici sono gli stessi del Pair Programming, ma portati all&#8217;estremo: il WIP \u00e8 limitato a 1 per l&#8217;intero team, massimizzando il throughput; dato che l&#8217;intero team \u00e8 coinvolto, le review non sono pi\u00f9 necessarie, ed i defect\/bugs saranno vicini allo zero. <\/p>\n\n\n\n<p>Anche qui, dobbiamo superare alcuni pregiudizi: come detto il tempo di coding \u00e8 minimo nel lavoro di un team, quindi che l&#8217;intero team lavori insieme ha un impatto minimo rispetto al ritorno in riduzione di unplanned work, che \u00e8 massimale in questo caso. Molti team hanno gi\u00e0 compreso quanto sia potente lavorare in team in momenti di analisi, refinement, raccolta e analisi dei feedback, ideazione di soluzioni, etc &#8211; si tratta solo di aggiungere anche il coding alle pratiche svolte a livello di team.<\/p>\n\n\n\n<p>Infine, in molti hanno paura del fatto che questo tolga tanta libert\u00e0 ai membri del team, ma non \u00e8 cosi: le buone pratiche di Ensemble Programming suggeriscono switch molto frequenti alla tastiera, ascolto attivo ed interattivit\u00e0 dei membri non alla tastiera, frequenti pause di team ma anche libert\u00e0 totale per pause personali aggiuntive se necessarie &#8211; se rispettate, queste pratiche portano ad un team in cui davvero nessuno deve preoccuparsi di un assenza di ore o giorni, perch\u00e8 il resto del team continuer\u00e0 a lavorare allo stesso modo sostanzialmente senza impatti. <\/p>\n\n\n\n<p><strong>Test-Driven Development (TDD)<\/strong><\/p>\n\n\n\n<p>TDD \u00e8 un altra pratica che tipicamente causa discussioni accese tra i Developers, ma di cui \u00e8 stata ormai dimostrata l&#8217;efficacia. Anche in questo caso, pregiudizi e malintesi la fanno da padrone.<\/p>\n\n\n\n<p>Partiamo dalla definizione tipica: TDD \u00e8 la pratica di scrivere i test prima dell&#8217;implementazione. Questa definizione \u00e8 sbagliata, portemmo definirla definizione di &#8220;Test-First Programming&#8221;, ma di certo non di TDD, perch\u00e8 \u00e8 sicuramente vero che in TDD scriviamo prima i test, ma manca una sfumatura fondamentale del TDD: i baby steps.<\/p>\n\n\n\n<p>Procedere a piccoli passi \u00e8 un elemento fondamentale del TDD, come espresso in particolare dalle 3 leggi di TDD di Kent Beck, che parafrasate ci dicono:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>scrivi un test finch\u00e8 il sistema non fallisce: questo significa che uno step non \u00e8 necessariamente il test intero, ma un pezzo del test &#8211; appena fallisce, fermati, implementa, e poi aggiungi un altro pezzo al test<\/li>\n\n\n\n<li>scrivi codice di produzione solo per passare il test che fallisce: mentre un test \u00e8 rosso, il tuo unico obiettivo \u00e8 renderlo verde il prima possibile<\/li>\n\n\n\n<li>non aggiungere codice di produzione quando il test \u00e8 passato: appena il test \u00e8 verde, fermati; puoi fare refactoring, ma non aggiungere altri comportamenti<\/li>\n<\/ul>\n\n\n\n<p>L&#8217;idea dei baby step \u00e8 fondamentale che uno step in TDD non \u00e8 un test interno ma ogni singolo pezzo di quel test che aggiungo e che lo rendono rosso: se ad esempio ho bisogno di chiamare un metodo <code>subscribe<\/code> che non esiste, appena lo chiamo il test sar\u00e0 rosso; TDD ci chiede di fermarci, andare nel codice di produzione, implementarlo rendendo il test verde, e poi proseguire col test &#8211; e cos\u00ec via fino ad aver testato il comportamento che volevamo. <\/p>\n\n\n\n<p>Questo \u00e8 ci\u00f2 che rende TDD cos\u00ec potente per esplorare problemi: meno la soluzione del problema, e quindi l&#8217;implementazione, ci \u00e8 chiara, pi\u00f9 vorremo affidarci a questo flusso di TDD in modo rigido per farci guidare &#8211; al contrario, se conosciamo gi\u00e0 la soluzione, saramo pi\u00f9 laschi e faremo step pi\u00f9 grandi perch\u00e8 abbiamo maggiore confidenza.<\/p>\n\n\n\n<p>Una volta imparato TDD, non si torna indietro.<\/p>\n\n\n\n<p><strong>Clean Code<\/strong><\/p>\n\n\n\n<p>Uso il termine Clean Code per riferirmi a tutte quelle pratiche di buon design che rendono un codice migliore in termini di leggibilit\u00e0 e manutenibilit\u00e0.<\/p>\n\n\n\n<p>Il nostro obiettivo \u00e8 rimanere veloci, come abbiamo visto, e per farlo deve essere facile e veloce leggere e modificare il nostro codice: nessuna pratica o metodologia ci verr\u00e0 in aiuto se non ci impegneremo nel design.<\/p>\n\n\n\n<p>Rimanendo sul design del codice, per esempio, dobbiamo evitare i malintesi tipici della Programmazione ad Oggetti: usare getters e setters per esempio \u00e8 una pessima idea. Rimaniamo fedeli ai principi di OOP e cerchiamo di costruire un &#8220;<em>sistema di oggetti che comunicano tra loro tramite messaggi<\/em>&#8220;, esponendo solo comportamenti (messaggi) dalle nostre classi, mai dati interni. <\/p>\n\n\n\n<p>Affidiamoci alle regole di Object Calisthenics in primis, impariamo a riconoscere i Code Smell e ad evitarli (e Object Calisthenics fa proprio questo) e comprendiamo i principi SOLID per assicurarci che il nostro sistema cresca nel tempo mantenendo facilit\u00e0 di cambiamento.<\/p>\n\n\n\n<p><strong>Refactoring<\/strong><\/p>\n\n\n\n<p>Il refactoring \u00e8 l&#8217;ennesimo principio di programmazione frainteso, malinteso ed usato male &#8211; lo so, sono ripetitivo, ma \u00e8 la verit\u00e0, e questi articoli nascono proprio dalla voglia di togliere un p\u00f2 di nebbia da questi concetti.<\/p>\n\n\n\n<p>La definizione migliore di Refactoring ce la d\u00e0 Martin Fowler nel suo libro sul tema: ristrutturare un software applicando una serie di modifiche senza cambiarne il suo comportamento visibile. <strong>Tipicamente, vogliamo fare refactoring per migliorare il design del codice e la sua leggibilit\u00e0<\/strong>, rendendo pi\u00f9 facile risolvere bug ed aggiungere features: dall&#8217;esterno, quel pezzo di codice riceve gli stessi input e restituisce gli stessi output e modifiche al sistema, ma internamente lo sta facendo in modo differente.<\/p>\n\n\n\n<p>Uno dei pi\u00f9 grandi malintesi sul refactoring riguarda il quando, e quanto spesso, farlo: il Refactoring viene spesso considerato come un lavoro a parte, a volte addirittura raggruppato tutto insieme in periodi molto lunghi; in questo modo, diventa molto difficile giustificarlo: significa investire alcune ore (o anche giorni o settimane nei casi peggiori) in modifiche al codice che non portano nulla a livello di business. Certo, noi sappiamo che a livello tecnico ci serve a tenere in piedi il sistema, ma non \u00e8 sostenibile pensare di farlo fermando gli sviluppi. <\/p>\n\n\n\n<p>Dobbiamo considerare invece il refactoring una parte del lavoro quotidiano: ogni volta che devo fare modifiche al codice devo chiedermi se quella modifica \u00e8 semplice; se lo \u00e8, procedo &#8211; ma se non lo \u00e8, prima faccio refactoring e la rendo tale, e poi la implemento.<\/p>\n\n\n\n<p>Fare refactoring in modo continuo, come parte integrante del flusso di lavoro, \u00e8 l&#8217;unico modo per tenere la nostra codebase pulita in modo sostenibile. E per farlo abbiamo bisogno di un solo prerequisito: una suite di test veloce (pochi minuti) ed affidabile, che ci permetta di fare refactoring assicurandoci che il comportamento non cambi. Idealmente, anche durante step intermedi di refactoring, i test dovrebbero rimanere SEMPRE verdi, senza rompersi mai.<\/p>\n\n\n\n<p><em>&#8220;Make the change easy, then make the easy change&#8221;.<\/em><\/p>\n\n\n\n<p><strong>Continuous Delivery<\/strong><\/p>\n\n\n\n<p>Altra pratica, altri fraintendimenti: in molti credono che fare CD significhi semplicemente avere una pipeline automatica, ma non \u00e8 cos\u00ec; &#8220;fare CD&#8221; significa applicare una serie di pratiche, tra le quali fa sicuramente parte anche la pipeline automatica ma \u00e8 solo una fra tante.<\/p>\n\n\n\n<p>Alcuni elementi che fanno parte di CD e che quasi mai sono compresi correttamente sono, ad esempio:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Continuous Integration: il codice arriva su master almeno una volta al giorno, con test automatici che ci garantiscono che tutto funzioni prima e dopo l&#8217;integrazione su master<\/li>\n\n\n\n<li>La pipeline automatica \u00e8 l&#8217;unico modo per rilasciare qualunque ambiente<\/li>\n\n\n\n<li>La pipeline automatica decide se una modifica pu\u00f2 essere rilasciata ed il suo verdetto \u00e8 indiscutibile (il che ad esempio implica anche il BDD, di cui parleremo dopo, o comunque una forma automatica di test degli acceptance criteria)<\/li>\n\n\n\n<li>&#8230; ecc<\/li>\n<\/ul>\n\n\n\n<p>Implementare correttamente la CD sostanzialmente ci aiuta a ridurre l&#8217;overhead tipicamente causato da sistemi instabili e rilasci rischiosi perch\u00e8 \u00e8 tutto automatizzato e gestito in modo ingegneristico tramite software, rendendolo robusto e non incline ad errori umani.<\/p>\n\n\n\n<p>La migliore risorsa online sul tema \u00e8 sicuramente <a href=\"https:\/\/minimumcd.org\/minimumcd\/#continuous-delivery\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">minimumcd.org<\/a>.<\/p>\n\n\n\n<p><strong>Trunk-Based Development (TBD)<\/strong><\/p>\n\n\n\n<p>Concentrandosi maggiormente sulla Continuous Integration (CI), \u00e8 importante fare un focus sul Trunk-Based Development (TBD). Come nel caso della CD, &#8220;fare CI&#8221; significa implementare una serie di comportamenti che insieme compongono quella che viene definita CI, e tra questi c&#8217;e anche il Trunk-Based Development.<\/p>\n\n\n\n<p>Possiamo definire il TBD come &#8220;<em>una metodologia nella quale le modifiche al codice vengono integrate direttamente sul branch principale, senza la creazione di altri branch di lavoro nel mezzo (Develop, Test, Feature Branch, etc.)<\/em>&#8220;. In pratica, TBD significa fare commit direttamente su master, o in alternativa creare un branch da master ma mergiarlo entro un giorno &#8211; e fare CI significa TBD + le automazioni di pipeline necessarie attorno per verificare che tutto funzioni come ci aspettiamo, sia prima che dopo l&#8217;integrazione del codice sul branch principale.<\/p>\n\n\n\n<p>Il Trunk-Based Development non \u00e8 cosi diffuso principalmente perch\u00e8 come sviluppatori siamo sempre stati abituati a due principi che il TBD ribalta:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>feature branches, o comunque lavoro in branch molto lunghi &#8211; una pratica che nasce ed ha senso nel contesto Open Source ma molto molto molto meno in un contesto di business, dove la fiducia tra i membri del team dovrebbe essere molto pi\u00f9 alta<\/li>\n\n\n\n<li>rilasciare features complete &#8211; da sempre ci insegnano che il rilascio \u00e8 lo step finale di un processo molto lungo, ma se \u00e8 sicuramente vero che prima di rilasciare qualcosa devo averlo sviluppato, non significa che debba per forza essere una feature molto grande; dobbiamo abituarci a rilasciare molto di frequente, il che significa rilasciare lavoro non completo, ed imparare quindi i pattern per nascondere quel lavoro fino al completamento. <\/li>\n<\/ul>\n\n\n\n<p>La migliore risorsa online sul tema \u00e8 sicuramente <a href=\"https:\/\/trunkbaseddevelopment.com\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">trunkbaseddevelopment.com<\/a>.<\/p>\n\n\n\n<p><strong>Behaviour-Driven Development (BDD)<\/strong><\/p>\n\n\n\n<p>L&#8217;ultima pratica di cui voglio parlare \u00e8 il Behaviour-Driven Development (BDD), che ha molta affinit\u00e0 con l&#8217; Acceptance Test-Driven Development (ATDD).<\/p>\n\n\n\n<p>In questo approccio outside-in allo sviluppo vogliamo formalizzare quali sono gli acceptance criteria della nostra user story, e qual&#8217;\u00e8 la definition of done &#8211; non tramite documentazione fine a se stessa, ma tramite test automatici che ci permettono quindi di assicurarci che quel comportamento sia stato raggiunto.<\/p>\n\n\n\n<p>Gli Acceptance Test possono (devono!) essere automatizzati, e per essere efficaci devono avere alcune caratteristiche chiare:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>essere leggibili anche da persone non tecniche<\/li>\n\n\n\n<li>descrivere una feature in modo completo<\/li>\n\n\n\n<li>essere veloci (chiamano direttamente l&#8217;application layer, tipicamente)<\/li>\n<\/ul>\n\n\n\n<p>Grazie al BDD potremo quindi garantire che i requisiti siano stati rispettati a pieno.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-5cb2ffe3 gb-headline-text\">Conclusioni<\/h2>\n\n\n\n<p>Spero che questa carrellata possa essere stata utile a chiarire alcuni dubbi su queste pratiche, ed anche i motivi per cui le considero cos\u00ec importanti. So di ripetermi, ma fatico a trovare contesti in cui queste pratiche non possano portare beneficio e migliorare l&#8217;efficacia ed i risultati di un team.<\/p>\n\n\n\n<p>Il mio consiglio come sempre \u00e8 di fare delle prove: fate dei Kata e dei side projects e cercate di guadagnare abbastanza conoscenza di queste pratiche per poi iniziare ad applicare in applicazioni di business reali. Sono certo che i benefici saranno evidenti sin dai primi cicli di sviluppo, e non potrete pi\u00f9 farne a meno.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Se questo articolo ti \u00e8 piaciuto, sappi che \u00e8 parte di una serie mensile a tema Agile, il che significa che puoi <a href=\"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/agile-ed-il-suo-manifesto-quanto-sono-ancora-rilevanti-nel-2024\/\" target=\"_blank\" aria-label=\"recuperare i precedenti (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">recuperare i precedenti<\/a> e che ne arriveranno altri nei prossimi mesi! In pi\u00f9, se ti piace il mio stile, dai un occhiata a Learn Agile Practices, il mio ecosistema di contenuti online nei quali parlo di pratiche e metodologie Agile come TDD, CI, CD e molto altro a tema programmazione:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Learn Agile Practices \u2013 una newsletter settimanale (in inglese) \u2013 iscriviti qui \u27a1\ufe0f<em>&nbsp;<\/em><a href=\"https:\/\/learnagilepractices.substack.com\/about\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">https:\/\/learnagilepractices.substack.com\/about<\/a><\/li>\n\n\n\n<li>Video Podcast, principalmente in italiano \u2013 scopri tutti i link per le varie piattaforme di podcast \u27a1\ufe0f <a href=\"https:\/\/www.spreaker.com\/podcast\/learn-agile-practices--4737447\" target=\"_blank\" rel=\"noreferrer noopener\">Spreaker<\/a> o <a href=\"https:\/\/open.spotify.com\/show\/2ivOpZJj1py7bcGpiCfeHp\" target=\"_blank\" rel=\"noreferrer noopener\">Spotify<\/a>&nbsp;e iscriviti al canale Youtube \u27a1\ufe0f<em>&nbsp;<\/em><a href=\"https:\/\/www.youtube.com\/channel\/UCow5aybmZhzR7HbPf8JmcmA\" target=\"_blank\" rel=\"noreferrer noopener\">qui<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Come ripeto spesso, essere Agili per un business \u00e8 fondamentale, perch\u00e8 permette di rilasciare velocemente nuovo software rispondendo alle esigenze dei clienti in modo rapido, riducendo i costi degli esperimenti e dei rilasci e permettendo quindi di raccogliere feedback e utilizzare quel feedback per fare scelte migliori. Un passo alla volta, iterativo ed incrementale, si&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/\">Read more<\/a><\/p>\n","protected":false},"author":194,"featured_media":25902,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10287],"tags":[11605,11785],"collections":[11708],"class_list":{"0":"post-25823","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-devops-it","8":"tag-agile-it","9":"tag-waterfall","10":"collections-dalla-community","11":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Metodologia Agile: cosa sono le metriche DORA - Codemotion<\/title>\n<meta name=\"description\" content=\"Scopri perch\u00e9 sono importanti le metriche DORA per ottenere tutti i benefizi dell&#039;applicazione della metodologia agile.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Non si pu\u00f2 essere Agili senza eccellenza tecnica\" \/>\n<meta property=\"og:description\" content=\"Scopri perch\u00e9 sono importanti le metriche DORA per ottenere tutti i benefizi dell&#039;applicazione della metodologia agile.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-19T08:30:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"806\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"danthedev\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@danielescillia\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"danthedev\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/\"},\"author\":{\"name\":\"danthedev\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/ad992babe79ce1c495801784b71eedda\"},\"headline\":\"Non si pu\u00f2 essere Agili senza eccellenza tecnica\",\"datePublished\":\"2024-02-19T08:30:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/\"},\"wordCount\":3082,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/programming-7327552_1280.png\",\"keywords\":[\"agile\",\"waterfall\"],\"articleSection\":[\"DevOps\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/\",\"name\":\"Metodologia Agile: cosa sono le metriche DORA - Codemotion\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/programming-7327552_1280.png\",\"datePublished\":\"2024-02-19T08:30:00+00:00\",\"description\":\"Scopri perch\u00e9 sono importanti le metriche DORA per ottenere tutti i benefizi dell'applicazione della metodologia agile.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/programming-7327552_1280.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/programming-7327552_1280.png\",\"width\":1280,\"height\":806,\"caption\":\"programming, agile, coding, waterfall\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/non-si-puo-essere-agili-senza-eccellenza-tecnica\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/it\\\/devops-it\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Non si pu\u00f2 essere Agili senza eccellenza tecnica\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Codemotion.Italy\\\/\",\"https:\\\/\\\/x.com\\\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/ad992babe79ce1c495801784b71eedda\",\"name\":\"danthedev\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/profile-pic-150x150.png\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/profile-pic-150x150.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/profile-pic-150x150.png\",\"caption\":\"danthedev\"},\"description\":\"XP Advocate, Agile practices and methodologies enthusiast, driven from his passion for Software Development. I am deeply passionate about Extreme Programming and Agile methodologies and practices, believing that they allow software development teams to be more effective and aim for technical excellence. I enjoy investing time to stay updated on new technologies and methodologies and improve my skills: I consider continuous improvement extremely important and I approach it through books, courses, conferences, meetups, and continuous training; my ideal company promotes and encourages this approach.\",\"sameAs\":[\"https:\\\/\\\/danthedev.carrd.co\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/daniele-scillia\\\/\",\"https:\\\/\\\/x.com\\\/danielescillia\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCow5aybmZhzR7HbPf8JmcmA\"],\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/author\\\/danthedev\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Metodologia Agile: cosa sono le metriche DORA - Codemotion","description":"Scopri perch\u00e9 sono importanti le metriche DORA per ottenere tutti i benefizi dell'applicazione della metodologia agile.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/","og_locale":"en_US","og_type":"article","og_title":"Non si pu\u00f2 essere Agili senza eccellenza tecnica","og_description":"Scopri perch\u00e9 sono importanti le metriche DORA per ottenere tutti i benefizi dell'applicazione della metodologia agile.","og_url":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2024-02-19T08:30:00+00:00","og_image":[{"width":1280,"height":806,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280.png","type":"image\/png"}],"author":"danthedev","twitter_card":"summary_large_image","twitter_creator":"@danielescillia","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"danthedev","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/"},"author":{"name":"danthedev","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/ad992babe79ce1c495801784b71eedda"},"headline":"Non si pu\u00f2 essere Agili senza eccellenza tecnica","datePublished":"2024-02-19T08:30:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/"},"wordCount":3082,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280.png","keywords":["agile","waterfall"],"articleSection":["DevOps"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/","url":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/","name":"Metodologia Agile: cosa sono le metriche DORA - Codemotion","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280.png","datePublished":"2024-02-19T08:30:00+00:00","description":"Scopri perch\u00e9 sono importanti le metriche DORA per ottenere tutti i benefizi dell'applicazione della metodologia agile.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280.png","width":1280,"height":806,"caption":"programming, agile, coding, waterfall"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/non-si-puo-essere-agili-senza-eccellenza-tecnica\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"DevOps","item":"https:\/\/www.codemotion.com\/magazine\/it\/devops-it\/"},{"@type":"ListItem","position":3,"name":"Non si pu\u00f2 essere Agili senza eccellenza tecnica"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/ad992babe79ce1c495801784b71eedda","name":"danthedev","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2023\/10\/profile-pic-150x150.png","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2023\/10\/profile-pic-150x150.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2023\/10\/profile-pic-150x150.png","caption":"danthedev"},"description":"XP Advocate, Agile practices and methodologies enthusiast, driven from his passion for Software Development. I am deeply passionate about Extreme Programming and Agile methodologies and practices, believing that they allow software development teams to be more effective and aim for technical excellence. I enjoy investing time to stay updated on new technologies and methodologies and improve my skills: I consider continuous improvement extremely important and I approach it through books, courses, conferences, meetups, and continuous training; my ideal company promotes and encourages this approach.","sameAs":["https:\/\/danthedev.carrd.co\/","https:\/\/www.linkedin.com\/in\/daniele-scillia\/","https:\/\/x.com\/danielescillia","https:\/\/www.youtube.com\/channel\/UCow5aybmZhzR7HbPf8JmcmA"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/danthedev\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-600x400.png","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-600x600.png","author_info":{"display_name":"danthedev","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/danthedev\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280.png",1280,806,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-150x150.png",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-300x189.png",300,189,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-768x484.png",768,484,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-1024x645.png",1024,645,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280.png",1280,806,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280.png",1280,806,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-100x100.png",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-180x128.png",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-896x504.png",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-400x225.png",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-600x400.png",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/02\/programming-7327552_1280-600x600.png",600,600,true]},"uagb_author_info":{"display_name":"danthedev","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/danthedev\/"},"uagb_comment_info":0,"uagb_excerpt":"Come ripeto spesso, essere Agili per un business \u00e8 fondamentale, perch\u00e8 permette di rilasciare velocemente nuovo software rispondendo alle esigenze dei clienti in modo rapido, riducendo i costi degli esperimenti e dei rilasci e permettendo quindi di raccogliere feedback e utilizzare quel feedback per fare scelte migliori. Un passo alla volta, iterativo ed incrementale, si&#8230;&hellip;","lang":"it","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/25823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/194"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=25823"}],"version-history":[{"count":3,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/25823\/revisions"}],"predecessor-version":[{"id":25966,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/25823\/revisions\/25966"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/25902"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=25823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=25823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=25823"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=25823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}