Semplicita

There are 30 entries for the tag Semplicita

Consistency & Change

It is possible to pursue Consistency through  simplification of unnecessary complexity and emergence of useful order and at the same time pursue Change subverting established order even exploiting doubt and paradoxes and unintended details to create high value Consistency can enable change as well as change can increase consistency. When you explore and discovery what to keep and what to change and how. Instead bad Consistency  preserve the status quo obstructing both change, emergence of useful order and simplifications while bad Change add complexity and variations and disrupt existing order without creating high value This is the easy part. The difficult one is the willingness to change :) ...

Gestione Agile del Codice sorgente: branch o no ?

Copia-incollo da un thread di XPUG-IT contributi da alcuni post tra cui uno di Piergiuliano Bossi. Sul tema viene in aiuto il principio XP di semplicitá (quella che si raggiunge attraverso skill e padronanza, non quella che deriva dal banalizzare) il principio XP di flusso (fare una cosa in modo continuo e incrementale spinge a eliminare le inefficenze e lo spreco e risulta piu effecace, pensa ad esempio al refactoring continuo del TDD comparato a i grandi refactoring) il principio Agile: Gli individui e le interazioni prima...

Clean Code III Functions

One of the training on coding that I usually have with new teams is about proper naming of methods and arguments, and writing short methods. This article explain quite well all these things and add more insights to move to the next level: - choose names of Functions/Methods that are the verbs - choose names of  classes are the nouns of the DSL language that is used to build your system. The art of programming is, and has always been, the art of language design. Read these slides by Robert C. Martin: http://dl.dropbox.com/u/4730299/Clean%20Code%20Functions%20%28Java%29.pdf Tags :  Team Work | Agile | Pratiche | Semplicità | ...

Are you an amateur or a professional?

Are you an amateur or a professional? Look for example at  bicycle riders: amateurs care mostly about the bike, the frame, the gears, the forks and so on; professionals focus on training to improve their skills and their performances during the race. When a software development project face a challenge or a problem, do you find yourself looking at the tools or at the skills of the people ? Just answer and tell the truth. So you will know if you are an amateur of software development or a professional. Update: this topic has many facets and many trade-off, still no exceptions here, when...

Tools build productivity like keyboards build software

Traduci al ITALIANO >>> People, skills and actual work come first.  And if you don't get it, gets a new job.  Even better, retires :D Courteously shared by Riccardo. Tags :  Team Work | Agile | Tools | Semplicità | Progettazione Software |

La prova del 9

Translate into ENGLISH >>> Ecco dei numeri chiari, semplici e immediati per valutare il lavoro di un team sulla code-base: Guarda a quelli del tuo team, quando i numeri sono in modo evidente fuori scala e ancora in crescita é facile farlo notare al team e al CTO e chiedere loro di scoprire la causa e come cambiare questa tendenza: Principio K.I.S.S. verifica se lo applichi davvero Keep the Peel and Throw Out the Banana Come va il QI di gruppo nel tuo team? Se per esempio la code-base scomposta in...

Principio K.I.S.S. verifica se lo applichi davvero

Translate into ENGLISH >>> Guardando i numeri, diresti che il tuo team pratica realmente il principio K.I.S.S. o diresti che segue la legge di Parkinson ?  .NET Framework 2.0 il nucleo é composto in tutto da soli 12 Assembly per piú di 12.000 classi (una media di 800 per progetto) e 2.800.000 istruzioni IL (190.000 per progetto) Fonte: Analyzing the .NET Framework 2.0 with NDepend  Google ha un singolo source code repository che é completamente accessibile a tutti i 10.000 sviluppatori. Sebbene tutti i sistemi vengono rilasciati indipendentemente l'uno dall'altro...

Criteria to assess the usefulness of a unit test

From the keynote at XpDay London: Mark Striebeck, engineering manager at Google where he is responsible for developer testing infrastructure, tools and adoption. Here are some criteria to assess the usefulness of a unit test How often the test fails? When the test never fails there are chances that it is not testing anything that need tests. Has the test been marked as "ignore" to...

Creativity loves constraints, ideas come from everywhere

Marissa Mayer Innovation, design and simplicity This talk was given on March 14, 2008 in Portland, Oregon at the 39th Technical Symposium on Computer Science Education (SIGCSE 2008) From the presentation, important skills set for real-life software projects: Large projects & legacy code: taking an existing piece of code and changing it Scale: write code that scale and tests that support that scale requirements Resilience & Robustness: write algorithms that are inherently robust instead of recurring to manual tuning Working in team: no...

Un esempio di semplicità con Resharper (VS key mapping)

Cambiato team cambiano gli shortcut di default e quindi aggiorno il post originale con quelli di Visual Studio: - - - ((( continuo la serie di post pratici sulla semplicità. La sfida di Gino qui ora è trovare qualcosa ancora da togliere, da sottrarre per arrivare all'essenziale da cui cominciare, al minimo indispensabile a cui non si può rinunciare  ))) Gino conosce tutti gli short-cut di Resharper, praticamente li ha inventati lui  ((( minchia! ))) Il collega che ha introdotto al refactoring ci ha preso gusto e ora Gino vuole avviarlo ... all'uso di Resharper! Per farla semplice da dove comincia? Gino fa...

Hai un buon rapporto con le nuove tecnologie ?

Un programmatore senior si crea degli spazi sicuri per il divertimento, la scoperta e l'apprendimento di nuove tecnologie[1] all'avanguardia, le pesa le valuta quanto sono stabili e affidabili e dopo le usa sul lavoro solo  dove, quando e quanto sono utili al progetto Un programmatore inesperto usa progetti cliente al lavoro per provare nuove tecnologie che non conosce bene, che non ha provato e valutato a sufficenza, i cui benefici al progetto e alle persone sono poco chiari Sei quello che mangi...

Why Role-Plays work to learn Agile

Role-Plays work very well to learn and improve agile practices, the reason is explained in The Fifth Discipline by Peter Senge: 6. THE DELUSION OF LEARNING FROM EXPERIENCE The most powerful learning comes from direct experience. Indeed, we learn eating, crawling, walking, and communicating through direct trial and error—through taking an action and seeing the consequences of that action; then taking a new and different...

Tra un buon programmatore e uno ottimo

Ogni buon programmatore sa risolvere un problema difficile aggiungendo complessità Solo un ottimo programmatore sa farlo semplificando Bel principio !  Come metterlo in pratica ? Per esempio ... - Non confondere un sintomo con la causa principale del problema. Puoi verificare con i 5 perchè e la root cause analysis. E affronta la causa principale ora. - Lascia la soluzione tecnologica (serve un nuovo tool, serve questa libreria, serve questo prodotto) come 3za opzione - Prima cerca la soluzione nelle relazione tra le persone (tra...

Scrum, XP e le pratiche di Engineering

I metodi Agili come Scrum e XP non sostituiscono le pratiche di software engineering come ad esempio: - Analisi e definizione dei requisiti - Definizione delle specifiche - Disegno e modellazione del sistema - Implementazione - Versioning e Release management - Verifica e validazione - Stima E nemmeno si sovrappongono.      I metodi Agili fanno si che ogni pratica di engineering sia impiegata nella misura in cui serve allo specifico progetto (che emerge dal loop di inspect-adapt) con semplicità (dovuta all'uso costante/iterativo della pratica, dalla sua specializzazione  e dalla consapevolezza del fattore  umano/sociale) Cosi nella pratica in molti casi si scoprono degli...

Design strategies: Kent Beck presentation

I've seen this presentation, found it very useful : http://www.infoq.com/news/2009/06/responsive-design Some quick excerpt from the presentation here. A design goal: Steady Flow of ... Features ! A design definition: Beneficially Relating Elements (that's a thing and also an action) Design principle: safe steps Some design strategies: Leaps vs Parallel, Stepping Stone vs Simplification  (here slides that explain this http://www.slideshare.net/deimos/kent-beck-effective-design) Tags :  Team Work | Agile | Complessità | Pratiche | Creatività | Innovazione | Semplicità | Progettazione Software |

Un esempio di semplicità col TDD: state based vs interaction based

    ((( continuo la serie di post pratici sulla semplicità ))) Gino ha a disposizione l'intero giorno in pair programming col collega per chiarirgli la differenza tra state e interaction testing. Per farla semplice da dove comincia? Comincia in pair a implementare uno state based unit test evidenziando i passi : Istanzia l'oggetto usando Stub per eventuali dipendenze esterne Inizializza lo stato dell'oggetto da testare Richiama l'operazione da testare Verifica che lo stato finale dell'oggetto è quello...

Semplicità: valutare l'andamento di un team Agile

Nel post Scrum: un processo di sviluppo Empirico sono linkati modi di valutare un team Agile Il post Keep the Peel and Throw Out the Banana di Francesco Cirillo va alla semplicità della questione : Guarda il codice, quando è pieno di IF/SWITCH, casi speciali, diversi tipi di logica accoppiata, bug frequenti, è un campanello d'allarme che dello sviluppo Agile il team ha tenuto la buccia e gettato la banana Guardandomi indietro e riflettendo trovo che nella pratica questo criterio è efficace Tags :  Team Work | Agile | Pratiche | Leadership | Software | Semplicità |

Credere nelle persone

E' il comportamento più difficile da cambiare per un Coach di un team Agile, un Leader  e un Facilitatore : Rinunciare a esercitare il controllo e alle aspettative di risultati prestabiliti Scoprire nuovi modi di indirizzare e aiutare responsabilmente il team che sostituiscono le vecchie abitudini Superare l'ansia di controllo Agire facendo il meno possibile Come ? Un esempio pratico per esercitarsi : scopri come Exqusite Clock evolve liberamente col contributo collettivo e responsabile e come ogni contributo è indirizzato a essere utile e efficace : Tags :  Team Work | Agile | Complessità | Leadership | Team | Creatività | Innovazione | Semplicità |

I programmatori migliori usano meno IF/SWITCH (codice di esempio)

     Ecco un esempio con le 2 implementazioni a confronto: Esempio di codice con e senza IF/SWITCH      Ecco altri esempi qui: Codice Anti-If di esempio Tags :  Agile | Pratiche | Disciplina | Professione | Semplicità | Progettazione Software |

I programmatori migliori usano meno IF/SWITCH

     Questa settimana ho visionato una quarantina di soluzioni di un test di programmazione. Le implementazioni meno buone  avevano anche un numero elevato di if/switch (una 40na), quelle migliori anche nessun if/switch. Penso che non è un caso      Resto sorpreso che tra gli skill avanzati di coding che sono assodati e riconosciuti da anni la capacità di evitare gli if/switch inutili e duplicati è ancora ignota a una gran parte di programmatori, e anche da alcuni programmatori di Microsof (vedi qui , mal comune  mezzo gaudio :D). Tecniche per eliminare IF/SWITCH: vedi qui Altri skill avanzati di coding: vedi qui Il passo...

C# Nullable Types: 2 errori nel disegno

Il punto centrale del pattern nullable object o special case che dir si voglia è quello di evitare gli IF per gestire il Null. E invece ... Nella conversione da int? a string:  non c'è modo di specificare che stringa usare in caso di null senza usare un IF nemmeno con l'operatore ??.  Per es. in una label vorrei poter visualizzare il numero oppure N.A. quando c'è il null e mi tocca mettere un if.     L'abilita principale di un programmatore è sapersela cavare col codice. E invece... Al posto di contare sulla capacità dei programmatori di capire e usare correttamente la logica...

Brian Eno: amplificare la creatività nel team (e con gli U2)

Qualcosa va storto e non si sa cosa fare - la reazione spontanea  è quella di affidarsi alle abitudini consolidate Nei team affiatati il punto di forza della "telepatia" si bilancia con l'eccesso di diplomazia: nessuno vuole mettere  a rischi l'equilibrio che si è creato Brian suggerisce 2 giochi per rompere le regole e aprirsi a nuove cose e a nuovi modi di fare Imporsi dei limiti per incrementare la creatività - per esempio con gli U2 gli ha fatto scambiare gli strumenti cosi che uno suonasse quello dell'altro - obbligarli a suonare con solo una parte della scala Fare...

Design Under Constraint: How Limits Boost Creativity

The same principle applies to design. Given fewer resources, you have to make better decisions The idea of operating within constraints—of making more with less—is especially relevant these days. From Wall Street to Detroit to Washington, the lack of limits has proven to be a false freedom More recently, the very iPhone on which you listen to Davis' landmark album is a one-buttoned example of restraint in pursuit of an ideal, while the sublimely simple Google homepage is forever limited to 28 words Fonte: W.I.R.E.D. Tags :  Team Work | Agile | Creatività | Innovazione | Semplicità | Progettazione Software |

Informatica e Design 3° (Generative Systems)

Game designer Will Wright (SimCity, The Sims) and musician Brian Eno discuss the generative systems used in their respective creative works. Ancora info su questi argomenti ? ~  schemi complessi che emergono dall'implementazione di regole assai semplici come una foresta che nasce da pochi semi (John Conway)  in questo post     ~  simulazioni sociali in questo post ~  NetLogo un sw per eseguire e implementare principalmente simulazioni sociali ma anche sistemi genereativi in questo post Tags :  Team Work | Agile | Complessità | Team | Creatività | Innovazione | Semplicità | Progettazione Software |

Informatica e Design 2° (Brian Eno)

L'area di intersezione tra informatica e design è in continua espansione. In termini di prodotti, tecnologie e applicazioni e anche designer e artisti digitali che sconfinano nella programmazione e programmatori che si dedicano a prodotti informatici di design e artistici La potenzialità che intravedo riguarda la possibilità che programmatori possano scoprie da designer e artisti digitali come lavorare e come affrontare in team problemi in modo creativo e anche contribuire in termini di metodologie e pratiche di programmazione Naturalmente i team agili sono i candidati ideali avendo nel loro nucleo gli aspetti di creatività esplorazione dinamiche di team Brian Eno è un precursore...

Un esempio di semplicità col pattern MVC

((( continuo la serie di post pratici sulla semplicità. La sfida di Gino qui ora è trovare qualcosa ancora da togliere, da sottrarre per arrivare all'essenziale da cui cominciare, al minimo indispensabile a cui non si può rinunciare  ))) Gino conosce il pattern Model-View-Controller, le sue varianti, le sotto-varianti e gli adattamenti ai diversi framework grafici.    Si dice che sa applicare MVC bendato con le mani legate dietro la schiena come fosse Chuck Norris   ((( minchia! ))) Gino ha un giorno intero di tempo e il suo collega è interessato a capire come si applica il MVC e...

Un esempio di semplicità col TDD

((( continuo la serie di post pratici sulla semplicità. La sfida di Gino qui ora è trovare qualcosa ancora da togliere, da sottrarre per arrivare all'essenziale da cui cominciare, al minimo indispensabile a cui non si può rinunciare  ))) Gino 'e molto ferrato su unit testing, TDD, mocking e tecniche di refactoring per la rottura delle dipendenze.   Si dice sappia fare gli esami del sangue moccando la siringa e il paziente e che sappia separare i semi dall'anguria con un solo short-cut di Resharper   ((( minchia! ))) Ha a disposizione l'intero giorno in pair programming col collega per introdurre lo...

Un esempio di semplicità con Resharper

((( continuo la serie di post pratici sulla semplicità. La sfida di Gino qui ora è trovare qualcosa ancora da togliere, da sottrarre per arrivare all'essenziale da cui cominciare, al minimo indispensabile a cui non si può rinunciare  ))) Gino conosce tutti gli short-cut di Resharper, praticamente li ha inventati lui  ((( minchia! ))) Il collega che ha introdotto al refactoring ci ha preso gusto e ora Gino vuole avviarlo ... all'uso di Resharper! Per farla semplice da dove comincia? Gino fa il giro dei PC del team e si assicura che tutti abbiano la stessa versione di Resharper e abbiano selezionalo...

Un esempio di semplicità sul Refactoring

Gino sa tutto sul Refactoring: sa fare refactoring bendato e con una mano legata dietro la schiena ((( minchia! ))) Si è seduto alla tastiera col suo collega e ha 2 ore di tempo per introdurlo al refactoring.  Per farla semplice da dove comincia? Gino comincia dal codice che il collega ha appena scritto. Fa check-in per avere una baseline sicura a cui fare rollback e usa un tool automatico per evitare errori insidiosi. Coimincia a fare questi 6 refactoring insieme al collega: * Estrae codice dai metodi troppo lunghi (>> 30...

Semplicità

Come programmatori di computer siamo abituati a risolvere problemi complicati, analizzare le possibili combinazioni, lavorare a concetti astratti. Con tutte le nostre forze E cosi che anch'io ho perso l'abitudine alla semplicità Inizio una serie di post con esempi reali di semplicità (segui il tag Semplicità) Tags :  Team Work | Agile | Semplicità |