<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gabriele Lana &#187; xp</title>
	<atom:link href="http://www.gabrielelana.it/archives/category/xp/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gabrielelana.it</link>
	<description>on Agile Methodologies and Programming</description>
	<lastBuildDate>Fri, 07 May 2010 14:12:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Conferenze di primavera (bettersoftware)</title>
		<link>http://www.gabrielelana.it/archives/98</link>
		<comments>http://www.gabrielelana.it/archives/98#comments</comments>
		<pubDate>Thu, 14 May 2009 14:13:56 +0000</pubDate>
		<dc:creator>Gabriele Lana</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.gabrielelana.it/archives/98</guid>
		<description><![CDATA[Non so per quale ragione, ma le conferenze tendono a raggrupparsi in alcuni periodi dell&#8217;anno (probabilmente la ragione c&#8217;è solo che non la conosco), fatto sta che quest&#8217;anno me ne sto facendo una scorpacciata, la ragione per la quale vado alla conferenze è sostanzialmente rivedere alcune persone che incontro soltato in queste occasioni e per [...]]]></description>
			<content:encoded><![CDATA[<p>Non so per quale ragione, ma le conferenze tendono a raggrupparsi in alcuni periodi dell&#8217;anno (probabilmente la ragione c&#8217;è solo che non la conosco), fatto sta che quest&#8217;anno me ne sto facendo una scorpacciata, la ragione per la quale vado alla conferenze è sostanzialmente rivedere alcune persone che incontro soltato in queste occasioni e per conoscerne di nuove, persone stimolanti che mi danno la carica per tutte le attività che porto avanti.</p>
<p>I talk m&#8217;interessano relativamente, è raro assistere ad un talk che parla di un&#8217;argomento di mio interesse all&#8217;interno del quale si dicano cose che non ho già letto e/o sentito, chiaramente questo non dipende dalla preparazione dell&#8217;oratore ma dal fatto che non può dar per scontato che <strong>tutti</strong> i presenti conoscano già determinati argomenti. Alcuni tipi di talk però fanno eccezione, per esempio gli experience report mi piacciono molto</p>
<p>Giovedì 07/05/2009, la giornata inizia subito bene, parto con il treno delle 6:30 da Milano con l&#8217;iphone pieno di <a href="http://www.oredev.org/topmenu/video.4.45b270a411a9ed8e1278000948.html">conferenze</a> (quale cosa migliore di andare ad una conferenza guardandosi altre conferenze), direzione: Firenze, scopo: partecipare a <a href="http://www.bettersoftware.it/">bettersoftware</a>. Arrivati  a Firenze sto per scendere dal treno e becco Simone Genini, grazie al suo aiuto riesco a raggiungere appena in tempo l&#8217;albergo della conferenza (io ho una capacità di perdermi incredibile, talmente incredibile che neanche iphone + google maps mi salvano)</p>
<p>Primo talk (mannaggia a chi ha deciso di far iniziare la conferenza così presto) è stato quello di <a href="http://antoniocangiano.com/">Antonio Cangiano</a> sul mondo delle startup, lui stesso ne sta facendo partire <a href="http://thinkcode.tv/">una</a> e ha condiviso con la platea i suoi pensieri. Sabato (durante <a href="http://www.pycon.it">pycon3</a>) ho avuto modo di parlare con Antonio, è una persona molto simpatica e socievole, mi ha spiegato le idee che stanno alla base di <a href="http://thinkcode.tv/">thinkcode</a> (la sua startup) e devo dire che sarò sicuramente uno dei loro primi clienti (se siete appassionati di programmazione vi consiglio di iscrivervi alla loro ml, se non siete appassionati di programmazione avete sbagliato blog :-))</p>
<p>La giornata è proseguita con i talk di <a href="http://matteo.vaccari.name/">Matteo Vaccari</a>, <a href="http://www.metodiagili.it/">Francesco Cirillo</a> e <a href="http://www.agilemovement.it/profiles/profile/show?id=SimoneCasciaroli&#038;">Simone Casciaroli</a> (Simone perchè non hai un blog?), tre experience report degni di nota. </p>
<p>Scena madre della giornata: Francesco Cirillo sale sul palco e attacca con la <a href="http://www.antiifcampaign.com/">campagna anti-if</a>, dice che ha delle magliette da regalare, ma le regalerà solo a chi dirà qualcosa in grado di colpirlo, al che <a href="http://www.sviluppoagile.it/">Jacopo Romei</a> che era seduto di fianco a me si alza e urla &#8220;Sei Bellissimoooo!!!&#8221;, scoppiano tutti a ridere e lui si becca la maglietta, grande Jacopo, uno ottimo esempio di pensiero creativo :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabrielelana.it/archives/98/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile? Maybe in a perfect world</title>
		<link>http://www.gabrielelana.it/archives/67</link>
		<comments>http://www.gabrielelana.it/archives/67#comments</comments>
		<pubDate>Mon, 28 Apr 2008 20:38:49 +0000</pubDate>
		<dc:creator>Gabriele Lana</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[extreme]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.gabrielelana.it/archives/67</guid>
		<description><![CDATA[Vi avevo chiesto cosa avreste risposto alla domanda: “Apprezzo veramente i concetti e le pratiche che stanno alla base delle metodologie Agili, ma temo che possano funzionare solo in un mondo perfetto…”, ho apprezzato i diversi punti di vista che mi danno l&#8217;opportunità di scrivervi che cosa ho risposto io e per approfondire l&#8217;argomento
Cosa vuol [...]]]></description>
			<content:encoded><![CDATA[<p>Vi <a href="http://www.gabrielelana.it/archives/65">avevo</a> chiesto cosa avreste risposto alla domanda: <em>“Apprezzo veramente i concetti e le pratiche che stanno alla base delle metodologie Agili, ma temo che possano funzionare solo in un mondo perfetto…”</em>, ho apprezzato i diversi punti di vista che mi danno l&#8217;opportunità di scrivervi che cosa ho risposto io e per approfondire l&#8217;argomento</p>
<p>Cosa vuol dire che le metodologie Agili possono funzionare soltanto in un mondo perfetto? Considerando anche i <a href="http://www.gabrielelana.it/archives/65">commenti</a> degli altri, possiamo interpretarlo come: <em>&#8220;Le metodologie Agili possono funzionare solo in un mondo perfetto perchè nella realtà esistono dei vincoli che non possono essere superati&#8221;</em></p>
<p>La risposta che ho dato quando mi è stato esposto questo dubbio è perfettamente in linea con il commento di Vieri del Bianco </p>
<blockquote><p>
In una recente intervista è stato chiesto a Kent Beck cosa voglia dire “essere agili” (il DOMANDONE…). La sua risposta mi ha decisamente colpito (estremamente sintetica e in definitiva illuminante): “My definition is that you accept input from reality and you respond to it”.<br />
Ma questa è l’antitesi del mondo perfetto… io la interpreto con l’essere capaci di modificare gli strumenti/metodologie/pratiche/valori per plasmarsi sulla “realtà” (e la realtà non è solo il cliente, o l’ambiente di lavoro e le sue regole, ma anche la squadra con cui si ha a che fare).<br />
Questo è, a mio avviso, il cuore dei metodi agili (e l’Agile Manifesto sembra confermarlo).
</p></blockquote>
<p>Pensate solo al motore della natura evolutiva delle metodologie Agili: la retrospettiva. Il team si interroga continuamente sul proprio metodo di lavoro e lo fa basandosi sia su dati soggettivi, ma sopratutto su dati oggettivi = metriche raccolte durante il processo produttivo, metriche che vengono stabilite basandosi su quelli che sono i reali obiettivi del progetto e quindi del suo committente. Questo comporta un continuo adattamento del team e del metodo che deriva da un confronto costante con i risultati ottenuti. Questa è l&#8217;essenza delle metodologie Agili: un estremo realismo, una vocazione alla trasparenza e alla comunicazione</p>
<p>Tuttavia, come è stato accennato nei <a href="http://www.gabrielelana.it/archives/65">commenti</a>, a volte la realtà impedisce la corretta applicazione di alcune pratiche rendendole controproducenti, altre volte i <a href="http://agilemanifesto.org/">valori</a> e i <a href="http://agilemanifesto.org/principles.html">principi</a> vengono talmente disillusi da rendere impossibile l&#8217;adozione di una metodologia agile, è vero, non lo nego, anch&#8217;io mi sono trovato in situazioni simili e non ho potuto fare altro che arrendermi all&#8217;evidenza</p>
<p>Facciamo un ragionamento però: una delle critiche che vengono mosse alle metodologie Agili è quello di essere &#8220;acqua calda&#8221;, nient&#8217;altro che buon senso applicato, il che è sostanzialmente vero, ma quindi cosa vuol dire quando il <strong>buon senso</strong> non può essere utilizzato? Probabilmente quelli che consideriamo come <strong>vincoli</strong> sono in realtà <strong>vizi</strong> che possono e dovrebbero essere eliminati, <strong>vizi</strong> che in realtà rappresentano delle grosse opportunità di miglioramento</p>
<p>Al che sorge spontanea la domanda: <em>&#8220;Quando dovremmo sfruttare l&#8217;adattabilità delle metodologie Agili per aggirare un ostacolo e quando invece l&#8217;ostacolo dovrebbe essere abbattuto?&#8221;</em>. Ovviamente non esiste una risposta che può essere data a priori, un consiglio? In un momento di calma e lucidità identificate quali sono i vostri veri <strong>obiettivi</strong>,  <strong>valori</strong> e <strong>principi</strong>, confrontatevi sempre con essi in maniera obiettiva e misurabile, se lavorerete per migliorarvi continuamente, siete sulla buona strada :-) Ovviamente lo scrivo più che altro rivolgendomi a me stesso :-)</p>
<p>Se avete altri commenti a riguardo mi piacerebbe sentirli, altrimenti possiamo passare alla prossima domanda: <em>&#8220;Quale aumento di produttività possiamo aspettarci da un team che inizia ad adottare SCRUM? In quali tempi?&#8221;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabrielelana.it/archives/67/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reframing In The Agile World</title>
		<link>http://www.gabrielelana.it/archives/64</link>
		<comments>http://www.gabrielelana.it/archives/64#comments</comments>
		<pubDate>Mon, 17 Sep 2007 22:57:51 +0000</pubDate>
		<dc:creator>Gabriele Lana</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[extreme]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.gabrielelana.it/archives/64</guid>
		<description><![CDATA[Ho appena finito di leggere un articolo del venerabile Paul Graham, autore di libri quali &#8220;Hackers and Painters&#8221; e &#8220;On Lisp&#8221; (libro da me molto ambito, ma alquanto difficile da avere)
L&#8217;articolo indica alcune pratiche che possono essere utilizzate dai programmatori per &#8220;mantenere un programma nella propria testa&#8221;, inizialmente sia l&#8217;obiettivo dell&#8217;articolo che alcune delle pratiche [...]]]></description>
			<content:encoded><![CDATA[<p>Ho appena finito di leggere un <a href="http://www.paulgraham.com/head.html">articolo</a> del venerabile <a href="http://www.paulgraham.com/">Paul Graham</a>, autore di libri quali <a href="http://www.amazon.com/o/ASIN/0596006624">&#8220;Hackers and Painters&#8221;</a> e <a href="http://www.amazon.com/o/ASIN/0130305529">&#8220;On Lisp&#8221;</a> (libro da me molto ambito, ma alquanto difficile da avere)</p>
<p>L&#8217;articolo indica alcune pratiche che possono essere utilizzate dai programmatori per &#8220;mantenere un programma nella propria testa&#8221;, inizialmente sia l&#8217;obiettivo dell&#8217;articolo che alcune delle pratiche proposte mi hanno un po&#8217; disorientato in quanto in apparente netto contrasto con quanto dettato dalle metodologie Agili: <em>&#8220;Se Paul Graham è un mito, e ha ragione, allora hanno torto le metodologie Agili?&#8221;</em> No, hanno ragione entrambi, i principi che stanno alla base sono gli stessi, come al solito tutto torna :-)</p>
<p><span id="more-64"></span>Prendiamo per esempio una delle pratiche più forti fra quelle proposte: <strong>&#8220;Keep rewriting your program&#8221;</strong>; come dargli torto? Capita spesso che durante la scrittura di un programma un programmatore arrivi ad un momento in cui la sua conoscenza attuale del problema e della relativa soluzione non sia più rispecchiata dal codice, riscrivendolo potremmo inserire nel codice tale conoscenza e quindi otterremmo del codice migliore. D&#8217;altra parte molti conosceranno la <a href="http://en.wikipedia.org/wiki/Second-system_effect">&#8220;Sindrome del secondo sistema&#8221;</a> e sapranno quindi che la maggior parte delle riscritture dei progetti software risulta fallimentare. <em>&#8220;Come è possibile che entrambe queste evidenze empiriche siano vere? Come risolvono la questione le metodologie Agili?&#8221;</em></p>
<p>Cos&#8217;è il <strong>refactoring</strong> se non un&#8217;attività di continua riscrittura del codice? Kent Beck spiega perchè eXtreme Programming è eXtreme: tutte quelle pratiche che hanno dimostrato nel tempo di essere valide sono state portate all&#8217;estremo. La revisione del codice funziona? Bene, revisioniamo il codice sempre! = Pair Programming. La riscrittura di programmi porta a dei programmi con un design migliore? Bene, riscriviamo i nostri programmi continuamente! = Refactoring</p>
<p>Attraverso la pratica del refactoring possiamo trasformare (riscrivere) continuamente il nostro codice affichè rispecchi nella maniera migliore possibile la conoscenza che attualmente abbiamo del dominio del problema e della sua soluzione. Continuamente! Il trucco è sempre quello: se un&#8217;attività è rischiosa, difficile, costosa, ma potenzialmente di grande valore, quello che dobbiamo fare non è evitarla o prevenirla, ma trovare un modo per renderla meno rischiosa, meno difficile e meno costosa, mantenendone il valore inalterato (pensate per esempio alla Continuous Integration)</p>
<p>Al solito ci sono pratiche a corollario che portano il codice ad essere rappresentazione della nostra conoscenza:</p>
<ul>
<li>Unit Tests: come specifica eseguibile del comportamento dei componenti del nostro software</li>
<li>Acceptance Tests: come specifica eseguibile delle funzionalità esibite dal nostro software</li>
<li>Shared Code: fare in modo che il nostro codice sia leggibile a tutti i componenti del team (lo considero un super set di <strong>&#8220;Write rereadable code&#8221;</strong> dell&#8217;articolo di Graham)</li>
<li>Domain Driven Design: sviluppare un linguaggio di dominio (Ubiquitous Language) all&#8217;interno del codice. Questa pratica potrebbe essere portata all&#8217;estremo scrivendo un&#8217;interprete per un <span alt="Domain Specific Language">DSL</span> (Graham come Lisper a questo proposito ne sa qualcosa)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.gabrielelana.it/archives/64/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Job</title>
		<link>http://www.gabrielelana.it/archives/63</link>
		<comments>http://www.gabrielelana.it/archives/63#comments</comments>
		<pubDate>Mon, 23 Jul 2007 19:07:09 +0000</pubDate>
		<dc:creator>Gabriele Lana</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[extreme]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.gabrielelana.it/archives/63</guid>
		<description><![CDATA[I piani erano fatti: ad Agosto sparivo dalla faccia del pianeta per dedicarmi alla mia tesi di laurea, e a Settembre una bella settimana di ferie&#8230; Ma ad una start-up Italiana, che ti fa un&#8217;ottima offerta economica, che ti propone di fare da coach ad un team di 10 persone e che, per di più, [...]]]></description>
			<content:encoded><![CDATA[<p>I piani erano fatti: ad Agosto sparivo dalla faccia del pianeta per dedicarmi alla mia tesi di laurea, e a Settembre una bella settimana di ferie&#8230; Ma ad una start-up Italiana, che ti fa un&#8217;ottima offerta economica, che ti propone di fare da coach ad un team di 10 persone e che, per di più, sta sviluppando un&#8217;estensione innovativa per Firefox, non si può dire di no! Quindi, da questa settimana lavoro per loro :-) e la laurea aspetta&#8230; :-(</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabrielelana.it/archives/63/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Waterfall Pitfall #3</title>
		<link>http://www.gabrielelana.it/archives/60</link>
		<comments>http://www.gabrielelana.it/archives/60#comments</comments>
		<pubDate>Thu, 28 Jun 2007 12:26:20 +0000</pubDate>
		<dc:creator>Gabriele Lana</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[extreme]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.gabrielelana.it/archives/60</guid>
		<description><![CDATA[Termina la serie di articoli che mi sono proposto di scrivere per riassumere (in tre parti) il perchè dell&#8217;inadeguatezza delle metodologie tradizionali (anche dette metodologie ingegneristiche). Terminerò facendo una grossa assunzione iniziale e la farò a danno della tesi che voglio sostenere&#8230; capirete fra poco il perchè (spero). Ammettiamo che le metodologie tradizionali siano delle [...]]]></description>
			<content:encoded><![CDATA[<p>Termina la <a href="/archives/47">serie</a> di articoli che mi sono proposto di scrivere per riassumere (in tre parti) il perchè dell&#8217;inadeguatezza delle metodologie tradizionali (anche dette metodologie ingegneristiche). Terminerò facendo una grossa assunzione iniziale e la farò a danno della tesi che voglio sostenere&#8230; capirete fra poco il perchè (spero). Ammettiamo che le metodologie tradizionali siano delle macchine perfette, ovvero ammettiamo che seguendo una di queste metodologie un team abbia la certezza matematica di ottenere un prodotto finale conforme alle specifiche, nei tempi e nei modi stabiliti.</p>
<p><span id="more-60"></span><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/perfect.png' title='perfect.png'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/perfect.thumbnail.png' alt='perfect.png' /><br />
</a>Fare questo tipo di assunzione significa però assumere che esista il concetto di &#8220;correttezza a priori&#8221;, ovvero che esista la possibilità di determinare all&#8217;inizio del progetto il concetto di &#8220;correttezza&#8221;, il che presuppone che ci debba essere &#8220;predicibilità&#8221;, altrimenti sarebbe impossibile &#8220;pianificare correttamente&#8221;. Quindi alla fine per far funzionare tutta questa sequenza di implicazioni logiche, abbiamo la necessità di fare un&#8217;ulteriore assunzione, ovvero quella di avere dei &#8220;requisiti stabili&#8221; che ci diano quella &#8220;predicibilità&#8221; di cui abbiamo bisogno. Chiunque abbia un po&#8217; di esperienza nel campo dello sviluppo del software sa quanto questo sia difficile, ma sapete una cosa? Mi voglio rovinare e vi regalo anche questa!</p>
<p><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/objectives.png' title='objectives.png'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/objectives.thumbnail.png' alt='objectives.png' /><br />
</a>Ricapitolando: ho concesso (per ipotesi) alle metodologie tradizionali la certezza matematica di riuscire ad ottenere un prodotto conforme a dei requisiti che sono garantiti stabili durante il periodo di sviluppo&#8230; l&#8217;ho fatto perchè quest&#8217;ultimo articolo non vuole criticare il &#8220;come&#8221; le metodologie tradizionali intendono raggiungere gli obiettivi prefissi, ma vuole criticare gli obiettivi stessi, in particolare il concetto di <strong>correttezza</strong>.<br />
Correttezza, per queste metodologie, è sinonimo di <strong>conformità alle specifiche</strong>, il che è perfetto nel mondo accademico, in un mondo artificiale, in un mondo dove il cliente è la specifica. Nel mondo reale le cose non stanno proprio così.</p>
<p>Cosa succederebbe se le specifiche fossero sbagliate? Saremmo portati a rispondere che otteremmo un prodotto finale sbagliato, il che sembrerebbe un po&#8217; un assurdo viste le ipotesi di perfezione che abbiamo fatto; allora ci chiediamo: Cosa vuol dire che il prodotto finale è corretto? O meglio, cosa vuol dire che le specifiche sono corrette? Se come me vivete nel mondo reale: <em>&#8220;la specifica di un software è <strong>corretta</strong> se l&#8217;utilizzo del prodotto che ne deriva raggiunge gli <strong>obiettivi</strong> del committente&#8221;</em>.</p>
<p>A questo punto qualcuno potrebbe obiettare indicando come responsabilità degli analisti quella di scrivere specifiche corrette, al che domanderei: secondo voi è possibile scrivere specifiche corrette (secondo la definizione di correttezza che abbiamo dato)? Siamo sicuri che all&#8217;inizio del progetto esistano già tutte le informazioni necessarie per scrivere delle specifiche che una volta implementate consentiranno al nostro cliente di raggiungere i suoi obiettivi? Gli obiettivi del cliente rimarranno sempre quelli? Il modo in cui il nostro cliente può raggiungere i suoi obiettivi cambierà nel tempo? Ma sopratutto, abbiamo un modo per misurare se il nostro cliente ha raggiunto i suoi obiettivi?</p>
<p>Richiedere la &#8220;stabilità dei requisiti&#8221; significa richiedere non solo la &#8220;stabilità degli obiettivi&#8221; ma anche la &#8220;stabilità delle strategie per raggiungerli&#8221;, questo ci porta ad ambiente immobile, un abiente in cui l&#8217;acquisizione di conoscenza è scoraggiata, in cui il cliente viene isolato in quanto pericoloso &#8220;agente di cambiamento&#8221;, poco importa se quella conoscenza e quei cambiamenti sono indispensabili per permettere al cliente di raggiungere i suoi obiettivi! Questa è la mia più grande critica alle metodologie tradizionali, un difetto che non lascia scampo: il cercare di adattare il mondo reale a quello che funziona in laboratorio, ammesso e non concesso che funzioni, non dimenticatevi che è solo un&#8217;ipotesi :-).</p>
<p>Tutto questo mi ha portato ad amare le metodologie Agili perchè hanno il coraggio di confrontarsi continuamente con degli obiettivi reali, misurando iterazione dopo iterazione l&#8217;efficacia del prodotto realizzato fino a quel momento e sfruttando ogni dato rilevato come un&#8217;opportunità di miglioramento, ma questa è un&#8217;altra storia&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabrielelana.it/archives/60/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Burn Down Chart + Effort</title>
		<link>http://www.gabrielelana.it/archives/57</link>
		<comments>http://www.gabrielelana.it/archives/57#comments</comments>
		<pubDate>Thu, 21 Jun 2007 16:48:51 +0000</pubDate>
		<dc:creator>Gabriele Lana</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[extreme]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.gabrielelana.it/archives/57</guid>
		<description><![CDATA[Il burn down chart è decisamente uno dei miei grafici preferiti in quanto si adatta perfettamente alla filosofia Agile

  
E&#8217;  estremamente semplice da disegnare e da tenere aggiornato, potrebbe sembrare una sciocchezza, ma non lo è: la complessità di disegno del grafico ci potrebbe portare ad utilizzare uno o più programmi specifici per [...]]]></description>
			<content:encoded><![CDATA[<p>Il <a href="http://alistair.cockburn.us/index.php/Earned-value_and_burn_charts">burn down chart</a> è decisamente uno dei miei grafici preferiti in quanto si adatta perfettamente alla filosofia <a href="/archives/40">Agile</a></p>
<p><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/burndown_1.png' title='burndown_1.png'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/burndown_1.thumbnail.png' alt='burndown_1.png' /><br />
</a>E&#8217;  estremamente semplice da disegnare e da tenere aggiornato, potrebbe sembrare una sciocchezza, ma non lo è: la complessità di disegno del grafico ci potrebbe portare ad utilizzare uno o più programmi specifici per il plotting, il che ci porterebbe a dover inserire manualmente i dati relativi, il che probabilmente ci porterebbe a considerare la possibilità di utilizzare uno o più software per memorizzare i nostri dati di processo in modo da poter automatizzare la generazione del grafico. Ne vale la pena? A mio parere questo è un&#8217;antipattern abbastanza comune che dovrebbe essere accuratamente evitato, per questo consiglio tutti i miei team di disegnare i loro grafici di processo a mano e di fare il traking dopo o durante lo <a href="/archives/29">stand-up meeting</a>.</p>
<p><span id="more-57"></span><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/burndown_2.png' title='burndown_2.png'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/burndown_2.thumbnail.png' alt='burndown_2.png' /><br />
</a>E&#8217; estremamente intuitivo: sull&#8217;asse verticale sono rappresentati i punti storia, ovvero una misura della complessità (cumulativa) delle funzionalità che dovremmo implementare, sull&#8217;asse orizzontale sono rappresentati i giorni che abbiamo a disposizione per completare il nostro lavoro. L&#8217;ho definito &#8220;intuitivo&#8221; sia perchè è semplice identificare l&#8217;obiettivo (consumare i punti storia entro la data prevista), sia perchè basta un colpo d&#8217;occhio per capire se siamo in ritardo o se siamo in anticipo sulle nostre previsioni: se siamo sopra l&#8217;andamento ideale, siamo in ritardo, altrimenti siamo in anticipo</p>
<p><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/burndown_3.png' title='burndown_3.png'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/burndown_3.thumbnail.png' alt='burndown_3.png' /><br />
</a>Un&#8217;altra caratteristica &#8220;Agile&#8221; di questo tipo di grafico è la possibilità di identificare molto rapidamente dei trend, possiamo avere feedback immediato su quello che è lo stato del progetto oggi e sullo stato in cui sarà il progetto domani se non modificheremo il nostro processo produttivo.</p>
<p>Ultimamente ad uno dei miei team è stato affidato un progetto che dovrà essere sviluppato contemporaneamente al loro progetto principale. Ovviamente c&#8217;è stato dato un budget di tempo (e quindi di costo) all&#8217;interno del quale abbiamo negoziato le funzionalità che dovranno essere implementate. Durante una retrospettiva ho consigliato di tener traccia dell&#8217;andamento di questo progetto (che ha uno scope ben definito a dispetto del loro progetto principale) attraverso un burn down chart. In quel momento mi sono accorto che per questo tipo di progetti il burn down chart nel suo formato originale può portare a dei problemi.</p>
<p>Il progetto in questione è limitato nello scope e nel tempo, ma deve anche essere limitato nell&#8217;effort che il team può spendere per la sua realizzazione. Avendo come unica metrica il burn down chart tradizionale correremmo il rischio di dedicare troppe energie (leggi persone/ore) per mantenere ideale l&#8217;avanzamento di questo progetto secondario a discapito del progetto principale</p>
<p><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/burndown_4.png' title='burndown_4.png'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/burndown_4.thumbnail.png' alt='burndown_4.png' /><br />
</a>Quando ci si trova di fronte ad una situazione di questo genere una soluzione potrebbe essere quella di tener traccia, all&#8217;interno dello stesso grafico, anche dell&#8217;effort. Supponiamo che il nostro budget preveda 5 mesi uomo, calcolando 10 <a href="http://www.tecnicadelpomodoro.it/">pomodori</a>/giorno/uomo (un pomodoro è un&#8217;unita di tempo di 25 minuti), per 20 giorni/mese/uomo, fanno un totale di 1000 pomodori che possiamo spendere come team su questo progetto. In questo modo abbiamo un grafico che non solo ci comunica l&#8217;andamento del progetto, ma lo mette in relazione con l&#8217;effort spesa. Per esempio nell&#8217;immagine qui di fianco possiamo vedere come l&#8217;andamento del progetto sia praticamente perfetto, a discapito però di un&#8217;utilizzo eccessivo di risorse</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabrielelana.it/archives/57/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Waterfall Pitfall #2</title>
		<link>http://www.gabrielelana.it/archives/50</link>
		<comments>http://www.gabrielelana.it/archives/50#comments</comments>
		<pubDate>Fri, 15 Jun 2007 10:43:50 +0000</pubDate>
		<dc:creator>Gabriele Lana</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[extreme]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.gabrielelana.it/archives/50</guid>
		<description><![CDATA[Prosegue la serie di articoli (tre in tutto) che hanno come obiettivo quello di rispondere a domande del tipo: “Perchè le metodologie tradizionali non funzionano?”. Il primo problema che abbiamo identificato è determinato dal parallelo che viene fatto fra le fasi della produzione di un artefatto ingegneristico e le fasi della produzione del software, in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/archives/47">Prosegue</a> la serie di articoli (tre in tutto) che hanno come obiettivo quello di rispondere a domande del tipo: <em>“Perchè le metodologie tradizionali non funzionano?”</em>. Il <a href="http://www.gabrielelana.it/archives/47">primo</a> problema che abbiamo identificato è determinato dal parallelo che viene fatto fra le fasi della produzione di un artefatto ingegneristico e le fasi della produzione del software, in questo articolo analiziamo il perchè della divisione in &#8220;fasi&#8221; e le sue implicazioni</p>
<p><span id="more-50"></span><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/deliverables.png' title='deliverables'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/deliverables.thumbnail.png' alt='deliverables' /><br />
</a>La divisione in fasi del lavoro è stata inizialmente concepita per le produzioni di tipo manifatturiero: spezzando la lavorazione in fasi discrete, organizzandole in una catena continua e isolandole le une dalle altre, è possibile semplificare il lavoro di ottimizzazione e di controllo della qualità. Perchè non applicare gli stessi concetti anche alla produzione del software? Ogni fase elabora l&#8217;intero progetto ad un determinato livello d&#8217;astrazione, ogni fase viene lavorata da persone che sviluppano competenze specifiche riducendo la probabilità di difetti, infine al termine di ogni fase possiamo controllare la qualità dei semilavorati e verificare l&#8217;andamento del progetto. Sembrerebbe filare tutto liscio, ma&#8230;</p>
<p>La divisione in fasi in ambito manifatturiero funziona solo se i semilavorati che vengono prodotti possiedono determinate proprietà, per esempio devono essere facilmente trasportabili e non devono degradarsi, se così non fosse quello che perderemmo durante il trasporto potrebbe avere un costo maggiore del valore del semilavorato stesso. A questo punto ci chiediamo: i deliverable (semilavorati) relativi alle fasi di produzione del software, di che natura sono? Sono artefatti di rappresentazione della conoscenza che abbiamo del progetto ad un determinato livello d&#8217;astrazione, ovvero qualcosa di <strong>molto</strong> degradabile</p>
<ul>
<li>Mai giocato a passaparola? In questo caso le cose sono ancora peggiori: quello che vuole il cliente è diverso da ciò che l&#8217;analista pensa che il cliente voglia, ciò che l&#8217;analista ha capito è diverso da ciò che l&#8217;analista scriverà nel documento d&#8217;analisi, che sarà diverso da ciò che capirà l&#8217;architetto leggendo il documento d&#8217;analisi, ecc&#8230; Più le fasi sono isolate, più le fasi sono numerose, più la pressione e l&#8217;urgenza aumentano, più questo effetto peggiora, esattamente come nel gioco, e nel gioco devi solo ripetere una frase, non interpretarne il significato</li>
<li>Nella produzione manifatturiera la qualità del semilavorato è valutabile al di fuori di ogni contesto, la stessa cosa non può essere fatta anche con gli artefatti prodotti durante la realizzazione di un software, in quanto l&#8217;artefatto non è fine a se stesso, ma è la rappresentazione di qualcos&#8217;altro, la sua qualità può essere giudicata solo misurando l&#8217;accuratezza della rappresentazione stessa. Tutto questo per dire che il degrado nel tempo può essere causato anche da un cambiamento in ciò che si vuole rappresentare (alzi la mano chi non ha mai avuto un cliente che abbia cambiato idea durante un progetto)</li>
</ul>
<p>Un&#8217;altra cosa che dobbiamo considerare è la probabilità d&#8217;errore: è vero che attraverso la specializzazione di ogni fase è possibile ridurre la probabilità d&#8217;errore al suo interno, ma è anche vero che la probabilità d&#8217;errore totale non è la somma delle probabilità nelle singole fasi, ma il loro prodotto, quindi non è detto che la riduzione della probabilità d&#8217;errore locale, dovuta all&#8217;introduzione di una fase specializzata, riduca la probabilità d&#8217;errore globale, che alla fine è l&#8217;unica cosa che ci dovrebbe interessare</p>
<p>Infine notiamo che non è possibile, come abbiamo accennato prima, valutare la qualità del singolo artefatto se non valutandone l&#8217;accuratezza, e questa valutazione non è possibile farla secondo parametri oggettivi (come nel caso della manifattureria), l&#8217;unico modo possibile è coinvolgere gli stessi meccanismi che portano alla realizzazione dell&#8217;artefatto e che quindi sono passibili degli stessi errori. Questo ci porta a concludere che non è possibile valutare l&#8217;andamento del progetto se non alla fine dello stesso, dove il cliente può provare ciò che è stato realizzato e verificare se effettivamente risolve le sue necessità</p>
<p><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/failure.png' title='failure'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/failure.thumbnail.png' alt='failure' /><br />
</a>Tutti questi problemi sorgono per una ragione molto semplice: la produzione del software non c&#8217;entra niente con la manifattura. E&#8217; la stessa differenza che c&#8217;è fra il lavoro di un cuoco che deve <strong>inventare</strong> una nuova ricetta, e una cucina che deve <strong>seguire</strong> una ricetta. Da una parte l&#8217;obiettivo è quello di soddisfare il palato del cliente, per farlo il cuoco farà molti esperimenti, proverà combinazioni di alimenti diversi, tempi di cottura diversi, ad ogni tentativo raccoglierà del feedback che guiderà il tentativo successivo; nel caso del cuoco l&#8217;errore è necessario per l&#8217;acquisizione di feedback, necessario per l&#8217;acquisizione di conoscenza, necessaria per raggiungere lo scopo. Dall&#8217;altra l&#8217;obiettivo è quello di riprodurre fedelmente la ricetta nel più breve tempo possibile, per farlo la cucina può dividere la realizzazione della ricetta in fasi, può ottimizzare ogni singola fase tenendo come parametro di confronto il piatto originale, nel caso della cucina lo scopo è quello di evitare gli errori</p>
<p>Se non siete ancora convinti, non perdetevi l&#8217;<a href="/archives/60">ultima</a> parte, non ne rimmarete delusi :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabrielelana.it/archives/50/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Waterfall Pitfall #1</title>
		<link>http://www.gabrielelana.it/archives/47</link>
		<comments>http://www.gabrielelana.it/archives/47#comments</comments>
		<pubDate>Mon, 04 Jun 2007 21:56:10 +0000</pubDate>
		<dc:creator>Gabriele Lana</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[extreme]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.gabrielelana.it/archives/47</guid>
		<description><![CDATA[Nel corso degli ultimi anni sono state spese molte parole nel tentativo di spiegare il perchè del fallimento dell&#8217;ingegneria del software, talmente tante da rendere difficile il tentativo di riassumerle. Come consulente e &#8220;evangelist&#8221; delle metodologie Agili, mi sono trovato più di una volta nella condizione di rispondere a domande del tipo: &#8220;Perchè le metodologie [...]]]></description>
			<content:encoded><![CDATA[<p>Nel corso degli ultimi anni sono state spese molte parole nel tentativo di spiegare il perchè del fallimento dell&#8217;ingegneria del software, talmente tante da rendere difficile il tentativo di riassumerle. Come consulente e &#8220;evangelist&#8221; delle metodologie Agili, mi sono trovato più di una volta nella condizione di rispondere a domande del tipo: <em>&#8220;Perchè le metodologie tradizionali non funzionano?&#8221;</em>. L&#8217;obiettivo è quello di rispondere nel modo più breve e convincente possibile, il pericolo, è quello di perdersi e non essere sufficientemente incisivi, sopratutto affrontando il discorso con passione e con molte argomentazioni in testa, per questo nel corso degli anni ho sintetizzato la mia risposta &#8220;standard&#8221; e l&#8217;ho suddivisa in tre punti che affronterò in tre post distinti. Questo è il primo</p>
<p><span id="more-47"></span><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/waterfall.png' title='waterfall'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/waterfall.thumbnail.png' alt='waterfall' /><br />
</a> La strategia di base è quella di accompagnare il proprio interlocutore in una sequenza di implicazioni logiche che ci porteranno a demolire tutte le assunzioni che stanno alla base delle metodologie ingegneristiche, una delle quali (se non la principale) è l&#8217;analogia fra l&#8217;attività di produzione del software e le fasi di realizzazione di un artefatto di produzione ingegneristica/manifatturiera</p>
<p>Lo scopo iniziale era quello di &#8220;ereditare&#8221; dalle scienze ingegneristiche quella formalità che avrebbe potuto salvare la produzione del software, devo ammettere che all&#8217;epoca questo tentativo aveva un suo perchè, quello che non ammetto è che nei 30 anni seguenti nessuno l&#8217;abbia più messo in discussione</p>
<p>Lo mettiamo in discussione noi adesso utilizzando l&#8217;onnipresente metafora della costruzione del ponte. Prendiamo ad esempio la fase di <em>Progettazione</em>, a questa fase viene dato molto peso e rigore in quanto un errore causerebbe un danno economico rilevante nella fase successiva di <em>Costruzione</em>, ovvero la fase più lunga e onerosa. Parrebbe logico fare lo stesso discorso anche per quanto riguarda il software, si sa che un errore di <em>Design</em> fatto all&#8217;inizio del progetto può causare in seguito dei seri problemi, ma&#8230;</p>
<p><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/ponte.png' title='ponte'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/ponte.thumbnail.png' alt='ponte' /><br />
</a> Analizziamo meglio la fase di <em>Progettazione</em>, abbiamo detto che è una fase molto rigorosa, talmente rigorosa da produrre un modello che rappresenta in maniera corretta e completa ciò che si andrà a costruire. Nel mondo dell&#8217;edilizia tale modello è indispensabile, in quanto la fase di <em>Costruzione</em> è una semplice <strong>traduzione</strong> del modello nell&#8217;artefatto che esso rappresenta, senza aggiunta ne perdita di informazioni</p>
<p>Succede la stessa cosa anche nel software? Se la fase di <em>Progettazione</em> di un ponte si conclude con la realizzazione di un modello matematico/fisico dello stesso, cosa viene realizzato alla fine della fase di <em>Design</em>? Una serie di diagrammi UML? Riuscite a pensare ad un modello del software che abbia le stesse caratteristiche di quello del ponte? Esiste un modo per rappresentarlo in maniera corretta e completa? Un modello da poter tradurre senza perdita o aggiunta di informazioni?</p>
<p><a class="on_the_left" href='http://www.gabrielelana.it/wp-content/uploads/2007/06/code.png' title='code'><br />
  <img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/code.thumbnail.png' alt='code' /><br />
</a>La risposta è di una semplicità imbarazzante, il <a href="http://www.developerdotstar.com/mag/articles/reeves_design_main.html">codice sorgente</a>. Proseguiamo con il ragionamento, se il modello del nostro prodotto è il suo codice sorgente, qual&#8217;è la fase successiva? Abbiamo detto che la <em>Costruzione</em> è la traduzione del modello nell&#8217;artefatto, quindi la risposta è altrettanto semplice, la compilazione. Da qui viene la frase che dico <a href="http://groups.google.it/group/it.lavoro.informatica/tree/browse_frm/thread/cfe5e1cff0513457/aa00811d55db8c03#doc_4b3cab2b1fdad949">sempre</a>: <em>&#8220;la manodopera non esiste nel mondo dell&#8217;informatica, gli unici operai in questo settore sono i computer&#8221;</em></p>
<p>Notate come la fase più dispendiosa da un lato (<em>Costruzione</em>) venga messa in relazione con la fase meno costosa dall&#8217;altro (<em>Compilazione</em>), questo ci porta alla prima conclusione: le metodologie ingegneristiche utilizzano un processo che è stato pensato per gestire delle limitazioni fisiche (la costruzione costosa e irreversibile dell&#8217;artefatto) che il codice non ha! Questo per esempio ci consente di adottare delle strategie iterative/incrementali che sarebbero impossibili in ambito ingegneristico</p>
<p>Se non vi ho convinto, non preoccupatevi, questo è solo il riscaldamento, non perdetervi il <a href="/archives/50">resto</a> :-)</p>
<p>P.S. Se qualcuno sta pensando al fatto che esistono modelli alternativi di rappresentazione del software, preciso subito che il discorso non cambia di una virgola: se il modello è semanticamente ben specificato è possibile scrivere un compilatore per esso, altrimenti, se il modello è ambiguo, per definizione non è corretto e completo (cvd)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabrielelana.it/archives/47/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Video milano-xpug 30/05/2007</title>
		<link>http://www.gabrielelana.it/archives/45</link>
		<comments>http://www.gabrielelana.it/archives/45#comments</comments>
		<pubDate>Sun, 03 Jun 2007 15:52:18 +0000</pubDate>
		<dc:creator>Gabriele Lana</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[extreme]]></category>
		<category><![CDATA[milano-xpug]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xp]]></category>
		<category><![CDATA[xpug]]></category>

		<guid isPermaLink="false">http://www.gabrielelana.it/archives/45</guid>
		<description><![CDATA[
Abbiamo pubblicato il video dell&#8217;ultimo meeting dell&#8217;eXtreme Programming User Group di Milano. L&#8217;argomento della serata sono stati i test automatici, per chi non volesse vedersi tutto il filmato, sul nostro wiki c&#8217;è un piccolo riassunto.
Se siete di Milano, se siete incuriositi dalle metodologie Agili, se volete scambiare esperienze, capire come poter applicare una di queste [...]]]></description>
			<content:encoded><![CDATA[<p><a class="on_the_left" href='http://milano-xpug.pbwiki.com/' title='milano-xpug'><img src='http://www.gabrielelana.it/wp-content/uploads/2007/06/logo-milano-xpug.jpg' alt='logo-milano-xpug' /></a><br />
Abbiamo pubblicato il <a href="http://video.google.com/videoplay?docid=-7834726182891113604&#038;hl=it">video</a> dell&#8217;ultimo meeting dell&#8217;eXtreme Programming User Group di Milano. L&#8217;argomento della serata sono stati i test automatici, per chi non volesse vedersi tutto il filmato, sul nostro <a href="http://milano-xpug.pbwiki.com/">wiki</a> c&#8217;è un piccolo <a href="http://milano-xpug.pbwiki.com/ReportMeet20070530">riassunto</a>.</p>
<p>Se siete di Milano, se siete incuriositi dalle metodologie Agili, se volete scambiare esperienze, capire come poter applicare una di queste metodologie o una delle pratiche, iscrivetevi alla nostra <a href="http://groups.yahoo.com/group/milano-xpug/">mailing list</a> e venite a trovarci ad uno dei nostri <a href="http://milano-xpug.pbwiki.com/">meeting</a> che si svolgono a Milano ogni due settimane</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabrielelana.it/archives/45/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XP e Clienti</title>
		<link>http://www.gabrielelana.it/archives/42</link>
		<comments>http://www.gabrielelana.it/archives/42#comments</comments>
		<pubDate>Tue, 01 May 2007 11:19:12 +0000</pubDate>
		<dc:creator>Gabriele Lana</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[extreme]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.gabrielelana.it/archives/42</guid>
		<description><![CDATA[In questi ultimi giorni sul news group it.lavoro.informatica, si è sviluppato un bel thread in cui si è parlato un po&#8217; di tutto, ci si è chiesti se esiste la cariera tecnica, se siamo costretti ad &#8220;evolvere&#8221; in manager, se il programmatore (come tipologia di lavoro) può essere equiparato ad un operaio, e si è [...]]]></description>
			<content:encoded><![CDATA[<p>In questi ultimi giorni sul news group <a href="http://groups.google.it/group/it.lavoro.informatica/topics">it.lavoro.informatica</a>, si è sviluppato un bel <a href="http://groups.google.it/group/it.lavoro.informatica/browse_frm/thread/cfe5e1cff0513457/aa00811d55db8c03">thread</a> in cui si è parlato un po&#8217; di tutto, ci si è chiesti se esiste la cariera tecnica, se siamo costretti ad &#8220;evolvere&#8221; in manager, se il programmatore (come tipologia di lavoro) può essere equiparato ad un operaio, e si è parlato anche di metodologie agili.</p>
<p><span id="more-42"></span>In particolare volevo riportare l&#8217;estratto di un post in quanto lo trovo abbastanza significativo</p>
<blockquote><p>Proprio riguardo a XP, si parte dal presupposto che il cliente voglia<br />
condividere lo sviluppo e le responsabilità che questo comporta. A me,<br />
di clienti così, non ne sono capitati tanti. E a te?  Probabilmente, lo dico io per primo,<br />
le dimensioni dei clienti che pratichiamo sono differenti.
</p></blockquote>
<p>Si è arrivati a parlare di XP in quanto le metodologie agili hanno una considerazione del ruolo del programmatore/sviluppatore diverso rispetto a quello delle metodologie tradizionali. Di seguito la mia risposta</p>
<blockquote><p>La dimensione del cliente non conta, e&#8217; la mentalita&#8217; aziendale del<br />
cliente la discriminante, ma non penso che questo influisca<br />
negativamente solo nell&#8217;applicazione di una metodologia agile</p>
<p>Le metodologie agili sono metodologie nate per supportare il rapporto<br />
fornitore/cliente in modo che il cliente riesca a raggiungere i propri<br />
<strong>obiettivi</strong> e che il fornitore venga pagato per il lavoro effettivo,<br />
permettendo di valutare durante l&#8217;andamento del progetto se il<br />
raggiungimento dell&#8217;obiettivo vale il costo della fornitura</p>
<p>E&#8217; un approcio win/win basato sulla fiducia, sul rispetto e sulla<br />
qualità, è ovvio che questo può funzionare solo con delle aziende<br />
che &#8220;giocano per vincere&#8221; e non con quelle aziende che &#8220;giocano per<br />
non perdere&#8221;</p>
<p>Il dirigente X che ha un budget Y, in una logica bacata e viziosa, non<br />
ha come obiettivo quello di supportare gli obiettivi aziendali<br />
attraverso la realizzazione del progetto Z, ma quello di far<br />
implementare Z (che ha dei requisiti ben precisi) in maniera tale da<br />
potersi parare il cu*o in qualsiasi situazione. Al dirigente X non<br />
importa della qualità finale di Z (tanto ne è responsabile il<br />
fornitore), ne del fatto che Z serva agli scopi per i quali è stato<br />
richiesto (non è nelle sue responsabilità), quindi avrà tutto<br />
l&#8217;interesse nel concentrarsi in un contratto capestro con il fornitore<br />
piuttosto che instaurare una sana collaborazione</p>
<p>Chiaro che in una situazione del genere non consiglierei mai l&#8217;uso di<br />
una metodologia agile, ma e&#8217; anche vero che non lavoro per clienti di<br />
questo tipo :-)
</p></blockquote>
<p>Si è sopratutto parlato del fatto che spesso i programmatori vengono visti come operai, ovvero il loro lavoro viene considerato ripetitivo, prevedibile, ecc&#8230; Molti (fra cui io) hanno argomentato contro questa teoria considerando il lavoro del programmatore come un lavoro sostanzialmente creativo. Altri hanno evidenziato il fatto che spesso il lavoro degli operai viene denigrato come non degno di essere equiparato a quello del programmatore. Come ho scritto nel <a href="http://groups.google.it/group/it.lavoro.informatica/browse_frm/thread/cfe5e1cff0513457/aa00811d55db8c03">thread</a>, nessuna denigrazione, la ragione per la quale insisto tanto nel differenziare le due tipologie di lavoro è perchè la gestione <a href="http://it.wikipedia.org/wiki/Frederick_Taylor">taylorista</a> dei programmatori, operata dalle metodologie tradizionali, ha causato enormi danni economici. Presto pubblicherò una serie di articoli in cui spiegherò esattamente il perchè</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gabrielelana.it/archives/42/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
