<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>papo we(b)log</title>
        <link>http://blogs.ugidotnet.org/papo/Default.aspx</link>
        <description>software engineering slave!</description>
        <language>it-IT</language>
        <copyright>papo</copyright>
        <managingEditor>jacopo.franzoi@gmail.com</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <image>
            <title>papo we(b)log</title>
            <url>http://blogs.ugidotnet.org/images/RSS2Image.gif</url>
            <link>http://blogs.ugidotnet.org/papo/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Customer Test-Driven Development with FIT and FitNesse</title>
            <category>TDD</category>
            <category>XP</category>
            <link>http://blogs.ugidotnet.org/papo/archive/2008/07/06/93291.aspx</link>
            <description>no, non è un post in inglese. il titolo si riferisce alla sessione che io e il mio collega Tommaso abbiamo tenuto lo scorso giovedì per i ragazzi della &lt;a style="font-weight: bold;" href="http://essap.dicom.uninsubria.it/"&gt;ESSAP&lt;/a&gt; (&lt;span style="font-style: italic;"&gt;European Summer School on Agile Programming&lt;/span&gt;) presso Villa Toeplitz a Varese. è stata un'esperienza stupenda, sia per il fatto che ci siamo tutti divertiti moltissimo, sia per l'interesse che i partecipanti (un po' assonnati per il post pranzo!) hanno dimostrato verso i temi esposti.&lt;br /&gt;
&lt;br /&gt;
putroppo, questa era la prima volta che la sessione prendeva corpo, e quindi sicuramente non siamo stati efficaci quanto speravamo: l'argomento è insidioso perchè offre il fianco a lunghe discussioni puramente tecniche, errore in cui siamo caduti anche noi. il pubblico, una ventina di ragazzi da tutta europa, era molto eterogeneo, chi vedeva per la prima volta le tematiche legate ai &lt;span style="font-weight: bold;"&gt;metodi Agili&lt;/span&gt;, accanto a chi invece già adotta alcuni principi e pratiche nel proprio lavoro ed era lì per affinarli o capire come farli meglio funzionare.&lt;br /&gt;
&lt;br /&gt;
abbiamo scelto di dividere la sessione in due parti. prima un'introduzione al concetto di &lt;span style="font-style: italic;"&gt;iterazione&lt;/span&gt; e &lt;span style="font-style: italic;"&gt;test di accettazione&lt;/span&gt; scritti da/con il cliente, quali possibili forme usare per scriverli e quali tool esistono a supporto. abbiamo descritto in dettaglio il funzionamento di &lt;a style="font-weight: bold;" href="http://fit.c2.com/"&gt;FIT&lt;/a&gt; e &lt;a style="font-weight: bold;" href="http://www.fitnesse.org/"&gt;FitNesse&lt;/a&gt; e mostrato le principali fixtures usate, quelle di FIT e alcune di &lt;a style="font-weight: bold;" href="http://fit.c2.com/wiki.cgi?FitLibrary"&gt;FitLibrary&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
nella seconda parte della sessione invece abbiamo fatto un esercizio, partendo da un esempio scritto da noi (una variazione di quello che i ragazzi avevano già visto in altre sessioni): un semplice &lt;a href="http://davenicolette.wikispaces.com/TDD+Randori+and+Fishbowl"&gt;gioco di ruolo&lt;/a&gt; per il quale abbiamo realizzato una decina di &lt;span style="font-style: italic;"&gt;user stories&lt;/span&gt;, corredandole di &lt;span style="font-style: italic;"&gt;test unitari&lt;/span&gt; e &lt;span style="font-style: italic;"&gt;test di accettazione&lt;/span&gt;. quindi abbiamo eletto a &lt;span style="font-style: italic;"&gt;customer&lt;/span&gt; uno dei ragazzi nel pubblico, chiesto a lui di inventarsi la prossima user story e iniziato a descriverla in &lt;span style="font-weight: bold;"&gt;forma testuale&lt;/span&gt; su una lavagna. prendendo spunto da quanto già fatto per le altre storie, abbiamo poi scritto un test di accettazione, sempre su lavagna, e tradotto poi in &lt;span style="font-weight: bold;"&gt;forma tabellare&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
il resto del pomeriggio (troppo breve!) i ragazzi hanno così lavorato in coppie cercando di implementare la storia richiesta, partendo dalla traduzione in FitNesse del test di accettazione, collezzionando una bella "barra rossa", doverosa a inizio iterazione. hanno poi iniziato a decidere dove porre le responsabilità richieste, e mi pare che tutti abbiano deciso di assegnarle a oggetti già esistenti, iniziando così a scrivere i test unitari, a vederli fallire uno ad uno, per poi modificare il sistema e godersi il premio di una barra verde!&lt;br /&gt;
&lt;br /&gt;
anche se l'esempio era molto semplice e le modifiche da aggiungere davvero limitate, ho notato la soddisfazione sopratutto dei ragazzi nuovi alle tematiche ad ogni esecuzione con successo dei test unitari. è quello che in &lt;span style="font-style: italic;"&gt;eXtreme Programming&lt;/span&gt; viene detto il &lt;span style="font-weight: bold;"&gt;valore del feedback&lt;/span&gt;, assolutamente fondamentale.&lt;br /&gt;
&lt;br /&gt;
prima di andare a casa, tutte le coppie sono riuscite a chiudere la micro-iterazione, verificando che il loro lavoro fosse &lt;span style="font-weight: bold;"&gt;corretto&lt;/span&gt; e &lt;span style="font-weight: bold;"&gt;concluso&lt;/span&gt;, vedendo passare con successo anche il test di accettazione. qualche coppia, avendo finito in anticipo, ha iniziato a lavorare su una seconda carta, inventata al momento. mi spiace solo che l'abbiano scelta loro invece di coinvolgere il "customer-per-un-giorno", ma è comprensibile dato l'entusiasmo e la brama di giocare col la pratica e lo strumento.&lt;br /&gt;
&lt;br /&gt;
a me non resta che ringraziare tutti: gli organizzatori (primo tra tutti il mio coach &lt;a href="http://matteo.vaccari.name/blog/archives/121"&gt;Matteo&lt;/a&gt;) per l'occasione concessa e i partecipanti per le ottime domande a cui abbiamo cercato di rispondere in modo conciso. da parte mia, è stata una giornata splendida, mi ha fatto crescere come "speaker", ruolo per me nuovo, ho avuto anche l'occasione per conoscere di persona alcuni nomi "digitali" (come &lt;a href="http://blogs.ugidotnet.org/luka"&gt;Luka&lt;/a&gt;), e si è conclusa con uno ottimo &lt;span style="font-style: italic;"&gt;social-dinner&lt;/span&gt;!&lt;br /&gt;
&lt;br /&gt;
il materiale della sessione sarà presto disponibile sul sito della ESSAP, nel frattempo è raggiungibile qui:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://jacopo.franzoi.googlepages.com/mindmapAcceptanceTDDwithFITandFitNes.pdf"&gt;mindmap&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://jacopo.franzoi.googlepages.com/RolePlayGame.zip"&gt;esercizio&lt;/a&gt; (in java)&lt;/li&gt;
&lt;/ul&gt;
le nostre gesta sono anche state immortalate! più le rivedo e più sorrido. in ogni caso, sono &lt;a href="http://it.youtube.com/watch?v=6n-6TiZY3HA"&gt;qui&lt;/a&gt;, &lt;a href="http://it.youtube.com/watch?v=pLnebsN7tfM"&gt;qui&lt;/a&gt;, &lt;a href="http://it.youtube.com/watch?v=Q4Sg6KduqQ0"&gt;qui&lt;/a&gt; e &lt;a href="http://it.youtube.com/watch?v=bCWJ6L_96Ts"&gt;qui&lt;/a&gt; (peccato non si veda la scritta sul mio tesserino "&lt;span style="font-style: italic;"&gt;Jacopo - xtreme guitarist&lt;/span&gt;", nascosta dalla maglia rosso acceso!).&lt;br /&gt;
&lt;br /&gt;
grazie ancora a tutti, spero la scuola possa farsi conoscere ancora di più, magari nelle prossime edizioni ci troveremo anche molti della comunità ugidotnet!&lt;br /&gt;
&lt;br /&gt;
a presto.&lt;br /&gt;
-papo&lt;img src="http://blogs.ugidotnet.org/papo/aggbug/93291.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>papo</dc:creator>
            <guid>http://blogs.ugidotnet.org/papo/archive/2008/07/06/93291.aspx</guid>
            <pubDate>Sun, 06 Jul 2008 10:08:53 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/papo/comments/93291.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/papo/archive/2008/07/06/93291.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/papo/comments/commentRss/93291.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/papo/services/trackbacks/93291.aspx</trackback:ping>
        </item>
        <item>
            <title>[OT] eXtreme Programmers cercasi</title>
            <category>XP</category>
            <link>http://blogs.ugidotnet.org/papo/archive/2008/04/28/92422.aspx</link>
            <description>segnalo &lt;a href="http://matteo.vaccari.name/blog/archives/113"&gt;questo&lt;/a&gt; annuncio di lavoro, che qualcuno avrà già letto sulla mailing list di extreme-programming italia.&lt;br /&gt;
&lt;br /&gt;
il mio team vuole allargarsi!&lt;br /&gt;
siamo alla ricerca di giovani agilisti nella zona di milano, chiunque fosse interessato può contattare direttamente &lt;a href="http://matteo.vaccari.name"&gt;Matteo&lt;/a&gt;, che attualmente ricopre il ruolo di &lt;span style="font-style: italic;"&gt;coach&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
spero di poter incontrare presto qualcuno di voi!&lt;br /&gt;
ciao&lt;br /&gt;
-papo-&lt;img src="http://blogs.ugidotnet.org/papo/aggbug/92422.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>papo</dc:creator>
            <guid>http://blogs.ugidotnet.org/papo/archive/2008/04/28/92422.aspx</guid>
            <pubDate>Mon, 28 Apr 2008 17:16:33 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/papo/comments/92422.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/papo/archive/2008/04/28/92422.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/papo/comments/commentRss/92422.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/papo/services/trackbacks/92422.aspx</trackback:ping>
        </item>
        <item>
            <title>[OT] 365 motivi per essere soddisfatto</title>
            <category>XP</category>
            <link>http://blogs.ugidotnet.org/papo/archive/2008/04/17/92264.aspx</link>
            <description>&lt;p&gt;se c'è una cosa che mi dispiace davvero è aver permesso che il mio blog rimanesse in silenzio per così tanto tempo. è passata una vita dal mio ultimo post, ma sopratutto tante sono le cose successe. occasione, che cerco oggi di cogliere, è un particolare anniversario che cade questa settimana: un anno da quando ho iniziato a lavorare come &lt;strong&gt;eXtreme Programmers&lt;/strong&gt;, un anno che vivo da solo, un anno in una città come milano.&lt;/p&gt;
&lt;p&gt;il 2008 si è aperto con una grossa novità, una grandissima occasione: si è conclusa la collaborazione che mi ha visto impegnato per gran parte dello scorso anno ed è iniziato il mio nuvo impiego, a tempo indeterminato, per una piccola ma &lt;a href="http://www.sourcesense.com"&gt;attivissima realtà&lt;/a&gt; nel panorama Agile italiano. nello stesso tempo, mi sono impegnato a tempo pieno come membro dello &lt;a href="http://milano-xpug.pbwiki.com/"&gt;XP User Group locale&lt;/a&gt;, organizzando alcuni incontri sia nella vecchia azienda che in quella nuova. con i ragazzi dello xpug abbiamo anche partecipato alla &lt;a href="http://www.agileday.it/"&gt;scorsa edizione dell'Agile Day&lt;/a&gt;, in cui ho avuto modo di dare un volto a mille dei nomi conosciuti in rete.&lt;/p&gt;
&lt;p&gt;un anno, tempo di tirare le somme. mi vergogno quasi un po' a dirlo, questo anno appena passato è stato per me davvero importante: ho imparato un mestiere, &lt;em&gt;il mestiere&lt;/em&gt; che mi sono scelto e che mi appassione ogni giorno di più, affiancando dei veri professionisti e toccando con mano il valore dell'approcio Agile allo sviluppo del software. e sono cresciuto sopratutto come persona, imparando a vivere fuori casa, ad organizzarmi la vita.&lt;/p&gt;
&lt;p&gt;la novità più grossa è che mi è stata offerta la possibilità di fare &lt;strong&gt;mentoring&lt;/strong&gt;. da oltre due mesi infatti sto seguendo un team di una grossa banca italiana nel suo percorso di avviamento all'agilità. particolarmente interessante è la formula scelta: un team misto, in cui alterniamo attività di formazione ad altre di sviluppo puro. tutto questo è decisamente stimolante, passare in così poco tempo da apprendista stregone a sciamano! la portata della responsabilità è notevole, ma è altrettanto grande la soddisfazione nel sentirsi dire, da sviluppatori che fanno questo mestiere &lt;em&gt;da anni&lt;/em&gt;, "grazie di avermi fatto scrivere tutti questi test", o nel vedere riconosciuto il valore del &lt;em&gt;customer on-site&lt;/em&gt; e della continua comunicazione.&lt;/p&gt;
&lt;p&gt;questo è quanto, non posso che considerarmi soddisfatto dei mie miseri 27 anni. auguro a molti miei coetanei che vengano loro offerte le stesse opportunità che ho ricevuto io, e che sappiano farne buon uso!&lt;/p&gt;
&lt;p&gt;dimenticavo l'ultima novità: sto scrivendo da un bellissimo MacBook Pro!&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;a presto&lt;br /&gt;
-papo-&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/papo/aggbug/92264.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>papo</dc:creator>
            <guid>http://blogs.ugidotnet.org/papo/archive/2008/04/17/92264.aspx</guid>
            <pubDate>Thu, 17 Apr 2008 20:38:37 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/papo/comments/92264.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/papo/archive/2008/04/17/92264.aspx#feedback</comments>
            <slash:comments>11</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/papo/comments/commentRss/92264.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/papo/services/trackbacks/92264.aspx</trackback:ping>
        </item>
        <item>
            <title>Model-View-Presenter per Compact Framework</title>
            <category>.NET</category>
            <category>TDD</category>
            <link>http://blogs.ugidotnet.org/papo/archive/2007/10/26/89217.aspx</link>
            <description>stavo per rispondere a Jeremy , che è curioso di sapere quale variante di Model-View-Presenter sia maggiornente diffusa tra i suoi affezionati, indicando come nel mio caso si tratti del Passive View. però poi mi sono accorto che era uno spunto buono per un post...
[continua]&lt;img src="http://blogs.ugidotnet.org/papo/aggbug/89217.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>papo</dc:creator>
            <guid>http://blogs.ugidotnet.org/papo/archive/2007/10/26/89217.aspx</guid>
            <pubDate>Fri, 26 Oct 2007 07:19:39 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/papo/comments/89217.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/papo/archive/2007/10/26/89217.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/papo/comments/commentRss/89217.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/papo/services/trackbacks/89217.aspx</trackback:ping>
        </item>
        <item>
            <title>Re: Unit test e build server</title>
            <category>XP</category>
            <link>http://blogs.ugidotnet.org/papo/archive/2007/06/28/83894.aspx</link>
            <description>stavo per rispondere a &lt;a href="http://blogs.ugidotnet.org/makka/archive/2007/06/27/83665.aspx"&gt;questo post&lt;/a&gt;, poi mi sono accorto che e' disabilitato il feedback, quindi posto qui il mio commento.&lt;p&gt;&lt;/p&gt;

in realta' non hai *risolto* il problema, prima o poi qualcuno dovra' fixare il codice che ha 'rotto' la build. hai soltanto aggiunto un ritardo tra quando il problema e' stato introdotto (durante la scrittura del codice), a quando il problema sara' visibile (la build di CC.NET che fallira').&lt;p&gt;&lt;/p&gt;

in realta' chi notera' che la build si e' rotta potresti non essere tu (o chi ha aggiunto il codice incriminato) e quindi sara' piu' difficile localizzare e correggere l`errore. 5 minuti non mi sembrano affatto molti, prova a considerare i vantaggi che hai nel feedback immediato sulla correttezza del tuo codice, rispetto a dover correggere a posteriori l`errore di qualcun`altro.&lt;p&gt;&lt;/p&gt;

in azienda noi seguiamo una politica di questo tipo: mentre sviluppi esegui solo i test della parte che *pensi* sia influenzata dal nuovo codice (classi correlate e qualche test di accettazione che tocca quella parte), ma poi prima di integrare e committare le modifiche viene eseguita tutta la suite di test, due volte: la prima solo sulla propria versione del codice, la seconda dopo aver prelevato le modifiche dal repository e corretto i conflitti.&lt;p&gt;&lt;/p&gt;

questo perche' la rottura di una build e' una cosa seria: in alcune aziende ci sono riti di fustigazione pubblica dei colpevoli (cappelloni ridicoli da dover indossare per tutto il giorno) o sirene di allarme che suonano per l`ufficio! questa invece e' una &lt;a href="http://mark.michaelis.net/Blog/BuildStatusUsingLavaLampsByKenNichols.aspx"&gt;lava-lamp collegata a CC.NET&lt;/a&gt;&lt;p&gt;&lt;/p&gt;

ciao!&lt;br&gt;
-papo-&lt;img src="http://blogs.ugidotnet.org/papo/aggbug/83894.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>papo</dc:creator>
            <guid>http://blogs.ugidotnet.org/papo/archive/2007/06/28/83894.aspx</guid>
            <pubDate>Thu, 28 Jun 2007 07:32:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/papo/comments/83894.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/papo/archive/2007/06/28/83894.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/papo/comments/commentRss/83894.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/papo/services/trackbacks/83894.aspx</trackback:ping>
        </item>
        <item>
            <title>qualche novità all'orizzonte</title>
            <category>XP</category>
            <link>http://blogs.ugidotnet.org/papo/archive/2007/04/10/75104.aspx</link>
            <description>&lt;span&gt;
&lt;P&gt;la scorsa settimana è stata davvero intensa,
piena di cose da fare, ma anche di grandi soddisfazioni.&amp;nbsp;dopo aver lasciato
il mio vecchio lavoro per potermi dedicare a tempo pieno alla tesi e dopo
essermi laureato, ho finalmente ora una nuova occupazione. per quale motivo sono
così contento? intendo, quali sono gli aspetti che rendono particolari queste
novità? con ordine...&lt;/P&gt;
&lt;P&gt;il primo obiettivo che mi ero posto, quando ormai avevo
le idee chiare sul periodo in cui mi sarei laureato, era di ricercare, almeno in
una prima fase, un'azienda che mi desse la possibilità di continuare a lavorare
su quanto avevo potuto sperimentare per il mio lavoro di tesi: &lt;EM&gt;test-driven
development&lt;/EM&gt;, &lt;EM&gt;integrazione continua&lt;/EM&gt;, &lt;EM&gt;sviluppo agile&lt;/EM&gt;. finita una prima "tornata" di ricerche
avrei poi un po' "abbassato il tiro" e avrei iniziato a
ricercare un più generico impiego come sviluppatore. non sono molti i contatti che
sono riuscito a trovare: in tutto, meno di una decina, di cui solo
la metà mi hanno dato la possibilità di propormi per un lavoro (inoltro curriculum,
incontri per colloqui).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;prima novità&lt;/STRONG&gt;: ho
trovato un nuovo lavoro e&amp;nbsp;devo dire che sono stato davvero fortunato. mi
hanno dato infatti la possibilità di unirmi ad un gruppo di &lt;EM&gt;eXtreme
Programming&lt;/EM&gt;! quello che intendo dire non è
che "poichè è un&amp;nbsp;gruppo xp lavorerò con i più bravi", ma semplicemente che
lavorare in un gruppo xp rispetta esattamente quanto mi ero
prefissato. ad esempio, durante il colloquio ho fatto una breve sessione
di pair-programming, per la realizzazione test-driven di un (semplice) modulo. se questo rappresenta anche
solo in parte quello che farò quotidianamente, ho davvero&amp;nbsp;centrato
l'obiettivo!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;seconda novità&lt;/STRONG&gt;: si
cambia ambiente. per i prossimi tempi avrò a che fare quasi esclusivamente con
Java. (... tempo per eventuali commenti ... ok, avanti... ) l'idea non mi fa nessun
effetto: ho realizzato sistemi in .NET negli ultimi due anni e
mezzo, ho imparato quali sono i problemi del software aziendale e quali i principali
ambiti in cui ricercare le soluzioni. tecnologia e strumenti sono (nel limite del
possibile) dettagli, almeno per me. Java è pieno di difetti, ma grazie
all'uso intensivo di .NET posso ora vederne anche gli enormi pregi.&lt;/P&gt;
&lt;P&gt;quando me ne hanno
parlato per la prima volta era in un corso universitario: Java come linguaggio
di programmazione. no, non mi soddisfa del tutto, lo ammetto, sopratutto
dopo aver giocato con C# 2.0 per un bel po'. ma Java è anche un'ambiente
(virtual machine e librerie standard), così come lo è CLR.&amp;nbsp;dopo aver aver provato
a realizzare un progetto, per un corso in università, basato su socket e thread,
il tutto in C++ e dopo averlo riscritto almeno un paio di volte senza
grandi successi, ho deciso di usare C# e .NET (Java per me era ancora solo un
&lt;EM&gt;linguaggio&lt;/EM&gt;). le cose sono state davvero più semplici: garbage
collector, collezioni, etc.. solo allora ho capito l'utilità di un
&lt;EM&gt;ambiente&lt;/EM&gt; di esecuzione.&lt;/P&gt;
&lt;P&gt;quando poi, negli ultimi mesi, ho ripreso in mano Java (mi sono comprato e
studiato un bel libro per aggiornarmi su J2SE 5, ho intensificato l'uso di
Eclipse, ho messo in piedi qualche webapp con Tomcat e ovviamente imparato la
sintassi di jUnit e di librerie di mock objects)&amp;nbsp;sono stato quasi sorpreso
di &lt;EM&gt;aver sempre avuto sotto gli occhi uno strumento del tutto analogo&lt;/EM&gt; (a .NET), e
non essermene mai accorto. a questo devo aggiungere che i principali strumenti
che ho usato per lavoro derivano (porting o ispirazione) dal mondo Java, come
NHibernate, Spring.Net, Log4Net, NAnt, etc... il punto è quindi: non mi spaventa
affatto abbracciare Java e credo che il passaggio sarà non troppo doloroso.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;terza novità&lt;/STRONG&gt;     , direi la
più importante: cambio città! mi trasferisco a Milano! questa è la sfida più ardua e che
più di tutte spero di poter vincere: vivere da solo, in una città che non
conosco. ho trovato un appartamento a una&amp;nbsp;decina di minuti di metro dal
posto di lavoro, quindi altra grande fortuna. questa settimana trasloco, e poi
via! si inizia!&lt;/P&gt;
&lt;P&gt;neanche due mesi fa pensavo a cosa togliere dalla presentazione per la tesi, a
scegliere le parole più adatte. ora mi dovrò preoccupare di gestire casa, coinquilini,
nuovi colleghi, un lavoro nuovo. credo proprio di essere in uno di quei
"punti" di passaggio che ci mettono alla prova, ma che ci offrono anche grandi
soddisfazioni.&lt;/P&gt;
&lt;P&gt;alla prossima!&lt;br&gt;
-papo-&lt;/P&gt;
&lt;/span&gt;&lt;img src="http://blogs.ugidotnet.org/papo/aggbug/75104.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>papo</dc:creator>
            <guid>http://blogs.ugidotnet.org/papo/archive/2007/04/10/75104.aspx</guid>
            <pubDate>Tue, 10 Apr 2007 12:11:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/papo/comments/75104.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/papo/archive/2007/04/10/75104.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/papo/comments/commentRss/75104.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/papo/services/trackbacks/75104.aspx</trackback:ping>
        </item>
        <item>
            <title>XP, prime impressioni</title>
            <category>XP</category>
            <link>http://blogs.ugidotnet.org/papo/archive/2007/05/18/78540.aspx</link>
            <description>&lt;span&gt;
&lt;P&gt;finalmente, non so come, trovo il tempo di postare
le prime impressioni sulla mia nuova situazione: nuovo lavoro e nuova
città, nuovi colleghi e nuova casa. è passato appena un mese, eppure
sono tantissime le cose che avrei da raccontar(mi). per ora voglio focalizzare le
idee solo sugli aspetti di lavoro. quindi...&lt;/P&gt;
&lt;P&gt;come avevo accennato nello scorso post, ho avuto la possibilità di unirmi ad
un gruppo di &lt;EM&gt;eXtreme Programming&lt;/EM&gt; avviato, imparare quindi da chi queste
cose le vive quotidianamente da anni. il team al momento non è esteso, e questo
mi ha permesso di poter "sperimentare" il lavorare in coppia con tutti gli altri
elementi del gruppo, a turno, su problemi diversi. in questo modo ho avuto la
possibilità di toccare tutte le parti di cui è composto il progetto, entrando di
volta in volta nel vivo dei problemi.&lt;/P&gt;
&lt;P&gt;la prima cosa
che ho imparato è &lt;STRONG&gt;il rapporto con il tempo&lt;/STRONG&gt;. in passato, io e il
tempo non siamo sempre andati d'accordo, diciamo che generalmente vinceva lui:
finiva la giornata, io ero distrutto, a volte per la fretta di concludere, che mi portava a
intensificare il lavoro per lunghi periodi, con l'evidente stress che ne
derivava. ora le cose sono diverse, e posso dire di essere sulla strada buona
per prendermi qualche rivincita!&lt;/P&gt;
&lt;P&gt;il tempo è scandito da una unità atomica, che nel nostro caso
è il &lt;A href="http://www.xplabs.it/fc2.html"&gt;pomodoro&lt;/A&gt;: 25 minuti di lavoro
seguiti da 5 minuti di pausa. questo significa che non mi è concesso occupare la
mente per un periodo più lungo di una mezz'oretta, c'è sempre una piccola
sosta per riposare il pensiero e riprendere le forze. ma la cosa più importante è imparare a
&lt;STRONG&gt;stimare&lt;/STRONG&gt; l'&lt;EM&gt;effort&lt;/EM&gt; necessario a completare una qualche
attività: è perciò fondamentale poter &lt;EM&gt;misurare&lt;/EM&gt; e &lt;EM&gt;tracciare&lt;/EM&gt; come il tempo
venga speso durante una giornata. per questo per ogni compito
e funzionalità che prendiamo in consegna, rappresentati da
&lt;A href="http://www.extremeprogramming.org/rules/userstories.html"&gt;&lt;EM&gt;carte&lt;/EM&gt;&lt;/A&gt; (sì sì, simpatici foglietti di carta con un
nome scritto sopra e in caso qualche annotazione), vanno segnati quanti pomodori
sono stati utilizzati e come questi sono stati spesi: esplorazione, codice,
rifattorizzazione, integrazione, etc. a fine giornata poi, prima di andare
a casa, inseriamo queste informazioni in uno strumento di &lt;EM&gt;tracking&lt;/EM&gt;:
ci saranno utili per trarre alcune considerazioni sull'andamento dell'iterazione di sviluppo, confrontando
misuarazioni e stime iniziali.&lt;/P&gt;
&lt;P&gt;infine l'altra novità, decisamente piacevole, è stata
scoprire che &lt;STRONG&gt;parte del mio lavoro consiste nello studio&lt;/STRONG&gt;. dico
"decisamente piacevole" perchè si tratta di qualcosa che ho sempre fatto &lt;EM&gt;per
passione&lt;/EM&gt; e che ora sono chiamato a fare &lt;EM&gt;per
mestiere&lt;/EM&gt;. design patterns, principi di progettazione del software, articoli
e interi capitoli dei libri della letteratura di riferimento (xp, refactoring)
sono alcune delle cose che ho potuto (ri)prendere in considerazione, analizzare,
schematizzare (ad esempio con delle &lt;EM&gt;mappe mentali&lt;/EM&gt;) e discutere con il
resto del team: qualcuno risponde alle domande che mi sono
fatto e anch'io contribuisco a chiarire i dubbi di qualcun'altro. come
qualsiasi altra attività, anche il tempo dedicato allo studio (in genere
un'ora al giorno) di ciascun argomento viene stimato e misurato.&lt;/P&gt;
&lt;P&gt;non posso quindi nascondere la soddisfazione nello
scoprire quanto spazio mi sia concesso per crescere professionalmente. &lt;U&gt;primo&lt;/U&gt;
perchè il lavoro è svolto sempre in coppia (&lt;A href="http://www.extremeprogramming.org/rules/pair.html"&gt;&lt;EM&gt;pair
programming&lt;/EM&gt;&lt;/A&gt;): questo favorisce il confronto e la collaborazione continua.
e nonostante io sia il più giovane e meno esperto si fa tesoro anche della mia esperienza
in questioni tecniche (come la gestione della persistenza
- Hibernate e il suo cugino .NET sono parenti strettissimi!). &lt;U&gt;secondo&lt;/U&gt;, per
gli stimoli allo studio, ovviamente finalizzato all'applicazione in pratica di quanto appreso.
la "biblioteca" interna è infinita e ghiottissima! e, se non bastasse, sono anche disponibili account per leggere articoli
di alcune riviste online.&lt;/P&gt;
&lt;P&gt;ho solo scalfito la superficie degli argomenti che avrei voluto affrontare, ma per questa volta direi che può bastare (se
solo penso al fatto che questo post è stato abbozzato &lt;EM&gt;due
settimane&lt;/EM&gt; fa mi vengono i brividi!). spero di poter raccontare i
dettagli di quanto resta da qui in avanti.&lt;/P&gt;
&lt;P&gt;a presto&lt;br&gt;
-papo-&lt;/P&gt;
&lt;/span&gt;&lt;img src="http://blogs.ugidotnet.org/papo/aggbug/78540.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>papo</dc:creator>
            <guid>http://blogs.ugidotnet.org/papo/archive/2007/05/18/78540.aspx</guid>
            <pubDate>Fri, 18 May 2007 07:09:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/papo/comments/78540.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/papo/archive/2007/05/18/78540.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/papo/comments/commentRss/78540.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/papo/services/trackbacks/78540.aspx</trackback:ping>
        </item>
        <item>
            <title>[semi-OT] presentazione TDD in Java e .NET</title>
            <category>.NET</category>
            <category>TDD</category>
            <link>http://blogs.ugidotnet.org/papo/archive/2007/03/18/73233.aspx</link>
            <description>&lt;HTML&gt;
&lt;BODY&gt;
&lt;span&gt;
&lt;P&gt;finalmente sono riuscito a finire di sistemare il
materiale per una presentazione che darò la prossima settimana, che ho chiamato
"&lt;EM&gt;Sviluppo software guidato dal testing, metodologie e strumenti&lt;/EM&gt;", che in
sostanza si tratta di un approfondimento degli argomenti che ho affrontato nel
mio lavoro di tesi.&lt;/P&gt;
&lt;P&gt;la cosa fantastica è che la presentazione la devo fare nella mia (ex)
università! il docente che mi ha seguito per il lavoro di tesi mi ha infatti
messo a disposizione un'ora del suo corso per esporre ai suoi studenti le
tematiche che ruotano attorno al TDD, e di certo non mi sono tirato
indietro!&lt;/P&gt;
&lt;P&gt;così, ho articolato il tutto in modo che ci sia una prima parte di
introduzione alle metodologie, per ciascuna indicando alcuni strumenti
Open-Source disponibili, e poi mostrando un esempio pratico di sviluppo. il
corso (di ingegneria del software, modulo B) usa come riferimento Java, quindi è
questo il linguaggio che ho usato per il progetto, ma nella presentazione metto
sempre a confronto Java e .NET, e poi in ogni caso gli argomenti sono
applicabili in un qualasiasi ambiente.&lt;/P&gt;
&lt;P&gt;ecco una breve descrizione dei contenuti:&lt;/P&gt;
&lt;UL&gt;
  &lt;LI&gt;riepilogo &lt;STRONG&gt;tipologie di testing&lt;/STRONG&gt;   : in piccolo (unità),
  in grande (integrazione, accettazione), nuovo significato di testing
  &lt;LI&gt;&lt;STRONG&gt;Test-Driven Development&lt;/STRONG&gt; : progettazione e test di
  unità, red-green-refactor, xUnit (jUnit e NUnit), isolamento (fake, stub,
  mock), testing basato sullo stato e basato sulle interazioni, mock objects
  dinamici (EasyMock e Rhino.Mocks)
  &lt;LI&gt;&lt;STRONG&gt;Customer Test-Driven Development&lt;/STRONG&gt;  : requisiti, test di
  accettazione e&amp;nbsp;layer dell'applicazione, FIT e FitLibrary, principali
  tipologie di fixture
  &lt;LI&gt;&lt;STRONG&gt;demo&lt;/STRONG&gt;: "simple login", servizio di autenticazione
  utenti, CTDD delle regole del dominio e dello strato di presentazione,
  scrittura fixture di FIT, TDD delle singole classi, stub e mock per le
  dipendenze
  &lt;LI&gt;&lt;STRONG&gt;strumenti usati&lt;/STRONG&gt; : Fit, FitLibrary, FitNesse, jUnit, EasyMock e
Eclipse&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;il materiale si trova qui:&lt;/P&gt;
&lt;UL&gt;
  &lt;LI&gt;slide, &lt;A
  href="http://jacopo.franzoi.googlepages.com/slideTDDunibs.pdf"
 &gt;http://jacopo.franzoi.googlepages.com/slideTDDunibs.pdf&lt;/A&gt;
  &lt;LI&gt;progetto, &lt;A
  href="http://jacopo.franzoi.googlepages.com/simplelogin.zip"
 &gt;http://jacopo.franzoi.googlepages.com/simplelogin.zip&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;il progetto contiene test di accettazione per FitNesse,
test di unità e sistema. dopo aver copiato le pagine di FitNesse bisogna
modificare l'homepage del progetto (raggiungibile come [root]/SimpleLogin) con
il path al percorso contentente il progetto compilato.&lt;/P&gt;
&lt;P&gt;a presto.&lt;br&gt;
-papo-&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/span&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;&lt;img src="http://blogs.ugidotnet.org/papo/aggbug/73233.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>papo</dc:creator>
            <guid>http://blogs.ugidotnet.org/papo/archive/2007/03/18/73233.aspx</guid>
            <pubDate>Sun, 18 Mar 2007 19:38:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/papo/comments/73233.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/papo/archive/2007/03/18/73233.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/papo/comments/commentRss/73233.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/papo/services/trackbacks/73233.aspx</trackback:ping>
        </item>
        <item>
            <title>Jeek project: primo rilascio</title>
            <category>.NET</category>
            <category>TDD</category>
            <link>http://blogs.ugidotnet.org/papo/archive/2007/02/26/71749.aspx</link>
            <description>finalmente ho pubblicato il progetto Jeek, un generatore di classi stub/mock per il testing di unità in .NET. si tratta della versione iniziale (che ho indicato come 0.1 alpha) che corrisponde alle prime due iterazioni di sviluppo. al momento quindi copre solo la generazione di classi concrete (fake) e stub ed è avviabile da riga di comando.

si tratta del progetto che ho realizzato come caso di studio per la mia tesi di laurea specialistica (di cui parlavo in alcuni post precedenti), ma che s&lt;img src="http://blogs.ugidotnet.org/papo/aggbug/71749.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>papo</dc:creator>
            <guid>http://blogs.ugidotnet.org/papo/archive/2007/02/26/71749.aspx</guid>
            <pubDate>Mon, 26 Feb 2007 13:07:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/papo/comments/71749.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/papo/archive/2007/02/26/71749.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/papo/comments/commentRss/71749.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/papo/services/trackbacks/71749.aspx</trackback:ping>
        </item>
        <item>
            <title>Esempio (semplice) di UI Test-Driven con MVP</title>
            <category>.NET</category>
            <category>TDD</category>
            <link>http://blogs.ugidotnet.org/papo/archive/2007/01/29/69051.aspx</link>
            <description>ho pubblicato un articolo sulla mia esperienza nel realizzare test-driven una UI WinForm, usando il pattern Model-View-Presenter.&lt;br&gt;
si tratta solo di un inizio, e mi sono focalizzato più sulla specifica dei comportamenti tramite test (di accettazione e di unità), meno sull'implementazione (magari in un prossimo post).&lt;br&gt;
ecco il link:&lt;br&gt;
&lt;a href="http://blogs.ugidotnet.org/papo/articles/69048.aspx"&gt;http://blogs.ugidotnet.org/papo/articles/69048.aspx&lt;/a&gt;&lt;img src="http://blogs.ugidotnet.org/papo/aggbug/69051.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>papo</dc:creator>
            <guid>http://blogs.ugidotnet.org/papo/archive/2007/01/29/69051.aspx</guid>
            <pubDate>Mon, 29 Jan 2007 14:12:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/papo/comments/69051.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/papo/archive/2007/01/29/69051.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/papo/comments/commentRss/69051.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/papo/services/trackbacks/69051.aspx</trackback:ping>
        </item>
    </channel>
</rss>