Agile versioning with Git

Dev, author, speaker, learner at Intré
Apr. 16, 2016
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
Agile versioning with Git
1 of 54

More Related Content

Viewers also liked

Hr 017 社會新鮮人生涯規劃Hr 017 社會新鮮人生涯規劃
Hr 017 社會新鮮人生涯規劃handbook
Presentacion gvLOGOS-GEDESPresentacion gvLOGOS-GEDES
Presentacion gvLOGOS-GEDESAmparo Belmonte Orts
跨界思考與創新 (慈濟大學)跨界思考與創新 (慈濟大學)
跨界思考與創新 (慈濟大學)Yeong-Long Chen
Hadoop TutorialsHadoop Tutorials
Hadoop TutorialsWebtechSchools
Marlabs Capabilities Overview: Cyber Security Services Marlabs Capabilities Overview: Cyber Security Services
Marlabs Capabilities Overview: Cyber Security Services Marlabs
Hadoop Troubleshooting 101 - Japanese VersionHadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese VersionCloudera, Inc.

Similar to Agile versioning with Git

Organizza il lavoroOrganizza il lavoro
Organizza il lavoroMarco Vito Moscaritolo
Drupal Day 2011 - Organizza il tuo lavoroDrupal Day 2011 - Organizza il tuo lavoro
Drupal Day 2011 - Organizza il tuo lavoroDrupalDay
Alice in WordPressLand - "We're all mad here"Alice in WordPressLand - "We're all mad here"
Alice in WordPressLand - "We're all mad here"Nicola Costantino
Insegnare a progettare il proprio apprendimento con il coding - Lezione 2Insegnare a progettare il proprio apprendimento con il coding - Lezione 2
Insegnare a progettare il proprio apprendimento con il coding - Lezione 2Michele Maffucci
Perche' il signor Rossi ha scelto il software liberoPerche' il signor Rossi ha scelto il software libero
Perche' il signor Rossi ha scelto il software liberoMaurizio Napolitano
Mobile Apps Per iOS , visione d'insiemeMobile Apps Per iOS , visione d'insieme
Mobile Apps Per iOS , visione d'insiemeFrancesco De Simone

More from Ferdinando Santacroce

Continuous DeliveryContinuous Delivery
Continuous DeliveryFerdinando Santacroce
Growing Teams - Agile Venture Milano - #avmi2020Growing Teams - Agile Venture Milano - #avmi2020
Growing Teams - Agile Venture Milano - #avmi2020Ferdinando Santacroce
Testare l'intestabile - Italian Agile Days 2019 #IAD19Testare l'intestabile - Italian Agile Days 2019 #IAD19
Testare l'intestabile - Italian Agile Days 2019 #IAD19Ferdinando Santacroce
I'm a mediocre developerI'm a mediocre developer
I'm a mediocre developerFerdinando Santacroce
Working softwareWorking software
Working softwareFerdinando Santacroce
I'm a mediocre developerI'm a mediocre developer
I'm a mediocre developerFerdinando Santacroce

Agile versioning with Git

Editor's Notes

  1. Chiedi! Chi usa Git? Chi altro?
  2. Ecco come apparivo qualche anno fa “Come potete notare stavo leggendo specifiche, in perfetto stile waterfall” La mattina insegnante tecnico pratico di Informatica, e qualcosa di più Il pomeriggio avevo spazio, computer e tempo a disposizione per imparare a creare il sito della scuola Lavoravo da solo bellissimo periodo, un sacco di cose nuove da imparare autodidatta, pro e contro Versioning? Boh, manco sapevo cos’era Comunque avevo un processo di backup schedulato per copiare tutto ogni ora prima di modificare dei file mi copiavo la cartella per poter tornare eventualmente indietro
  3. Problemi 0: era tutto sotto il mio controllo ero il “webmaster”, ai tempi andava di moda chiamarli così... Nessun necessità di collaborazione, scambio files, etc e quindi nessun conflitto gli unici conflitti erano con me stesso, quando mi dimenticavo di fare backup dei file prima di modificarli...
  4. l’arrivo di altre persone nel “team” io mi occupavo del sito della scuola in ASP Claudio di cose in Flash Stefano di contenuti e grafica Tutti felici, tutti d’accordo
  5. Fatto di tutto: corsi FSE, patente AICA Dopo 7 anni di insegnamento, decido di cambiare e di dedicarmi al lavoro di programmatore
  6. azienda di software strutturata all’inizio avevano pensato di far lavorare anche me in COBOL! fortunatamente però nel CV avevo scritto anche .NET, e quindi mi hanno spostato su quel fronte
  7. prendersi gioco dei cobolisti è sempre divertente in effetti c’hanno lavorato anche loro sul Millennium Bug, nel GesFar a caratteri; niente di catastrofico, ma l’anno a 2 cifre ce l’avevano anche loro... la prima volta con Donant ed il COBOL oddio, cos’è sta roba?!
  8. COBOL: idea brillante, applicazione troppo ambiziosa! parte da un presupposto sbagliato: far capire ai manager la lingua dei programmatori Applicata male forse, ma l’idea era buona: BDD fa la stessa cosa! “COmmon Business-Oriented Language”, non è forse un BDD ante litteram?
  9. Grace Hopper Una dei fondatori dell’informatica moderna, e sicuramente una delle donne più influenti insieme a (cerca nome delle altre 2)
  10. cartella condivisa coi file sorgente “Chi sta toccando il barp0030?” “Chi è nelle tabelle?” “vecio”: alpino anziano e di grado superiore
  11. Studiofarma ha due sedi, una a BG ed una a BS a BS usavano Subversion proviamo un po’ ‘sto Subversion Mi son fatto il mio serverino a BG
  12. Finché fai le solite 4 cose tutto ok Bello poter navigare la storia, taggare le release, fare i diff
  13. Era solo una sorta di backup remoto, una discarica dove buttare il proprio codice Commit una volta la giorno, o anche 2-3...
  14. Collaborazione con il team di BS su un paio di progetti Alla fine era solo un posto comune dove prendere e mettere codice Molta poca collaborazione, anche qui ognuno lavorava alle sue cose
  15. si cooperava poco anche perché gli udpate, infrequenti, potevano generare dei bei casini anche senza fare branch, l’update del codice da /trunk può essere un affare complicato qualcun altro ha fatto un grosso refactor, tu fai l’update (obbligatorio) prima del commit e salta fuori un puttananio… http://blog.tfnico.com/2010/10/geek-and-poke-versus-subversion.html
  16. Operazione di commit e di push non separabili in Subversion
  17. A volte l’update è un casino perché il software che hai scritto è un casino Né Subversion, né Git, né nessun altro strumento risolve problemi di errate scelte di design architetturale della propria applicazione... Spaghetti code Per risolvere i bug mi copiavo la cartella del repository attuale da una parte, facevo revert, e lavoravo al bug
  18. I problemi del server centralizzato capitato poche volte a dire il vero, però è capitato
  19. difficoltà ad andare oltre le solite quattro operazioni mia inesperienza: io ero e sono ancora una capra… Altro dovuto al fatto che creandoti diverse cartelle per diversi branch ti sminchia percorsi ed altro
  20. Non finirò mai di ringraziare i colleghi che mi hanno aperto gli occhi Primo Agile Day, 2009 Un nuovo modo di approcciare lo sviluppo Vedere, misurare, migliorare Se ne parla, ma i colleghi cobolisti nicchiano
  21. una retrospettiva qualche (buon) consiglio e poi la stasi
  22. I colleghi cobolisti più vecchi sono diventati P.O. A fatica, ma si abbozzano delle storie La suddivisione di storie in task
  23. Nel frattempo io andavo avanti ad esplorare pratiche e metodi Ho cominciato a fare TDD, o almeno credevo… Test messi a posteriori, codice intestabile, soliti casini… Ma almeno avevo iniziato
  24. Tutti ne parlano, proviamolo! Ah, però, non è proprio immediato… Qualche prova lì, qualche prova là, ma finché non inizio ad usarlo per davvero al lavoro non lo capitò mai!
  25. fare i branch è molto semplice, è tutto il resto che è un casino... un sacco di comandi da imparare grafo aciclico?! decine di subcommands
  26. yeee!!! insomma, all’inizio la cosa che più mi piaceva erano i branch ero innamorato, e lo sono ancora! dei branch
  27. All’inzio andavo matto per i branch! GitFlow: sembra facile, ma non è difficile… :) Per una applicazione desktop come la mia, con numeri di release, beta version etc, è l’ideale Potrebbe andar bene anche per sviluppo mobile Forse un po’ overhead per applicazioni Web, ma branch “develop” può essere utile per test in ambaiente di staging Linux flow: lieutenant, blessed repository Git mantainer is Junio Hamano
  28. forse posso fare di meglio… mi sono accorto subito che commit piccolo è meglio: quando devi mergiare dei branch è più semplice collaborazione con colleghi ancora scarsa, ma ai primi approcci ti accorgi subito che piccolo è meglio...
  29. ho quindi cominciato a darmi delle regole! timeboxed ok, ma non sono ancora così bravo… Per ora i miei slot sono “a cipponi”, cerco comunque di stare nei 30-40 minuti da qui in poi elenco sfide attualmente in corso, non è che sono già così bravo...
  30. altre regole no, quel typo che hai visto non c’entra nulla con quello che stai facendo, non correggerlo!
  31. questa è la cosa più facile da applicare all’inizio! Ti permette di definire i limiti del tuo prossimo slot di coding con una certa precisione prenditi il tempo per farlo, verrà ripagato abbondantemente! Grazie Arialdo Martini
  32. nel
  33. Un buon messaggio di commit: 50 lettere per la prima riga poi le altre righe di descrizione (max 72 char per riga) eventuali bullet point su funzionalità, modifiche, aggiunte Non dire quello che hai fatto, quello si capisce dal codice! Descrivi il problema che hai risolto, la funzionalità che hai implementato, il cambiamento che hai apportato Aggiungi informazioni accessorie utili, tipo n° di ticket se usi un sistema di ticketing Usa verbi al presente; il soggetto che parla non sei tu, ma il commit
  34. un altra tecnica che ho utilizzato per aiutarmi a creare commit piccoli e significati
  35. commit di cleanup NON aggiungono valore al software ad es.: pura formattazione di documenti, indentazione, etc rimozione di commenti rimozione di dead code, file inutilizzati o comittati per errore
  36. qui è quasi da manicomio, ma può aiutarti a: esercitare la capacità di spezzare in piccoli commit mantenere il focus
  37. A pensarci bene.. Ogni commit è un micro sprint! Tratta ogni commit come un micro-sprint! Set the point: prenditi 1 minuto per verificare l’obiettivo e scrivere il messaggio di commit Imposta in maniera chiara l’obiettivo del tuo commit Appuntati i test che dovranno passare, o l’obiettivo che ti poni di raggiungere Act: lavoraci Next: ed alla fine prenditi 5 minuti per pensare, mini retrospettiva, prendi appunti e prepararti al prossimo commit/pomodoro Meglio obiettivi piccoli che non occupano tutto il pomodoro che obiettivi che ti fanno sforare! Soprattutto all’inizio
  38. Riflettete bene sull’ultimo punto della precedente slide: rifletti su quanto fatto e pianifica il prossimo commit/pomodoro Non dire “Ok, al prossimo pomodoro mi devo ricordare di fare quella cosa”, ma “svuota la mente” ad ogni commit La mente va lasciata libera per pensare, anche la nostra RAM è limitata… Scrivi i prossimi test che dovranno passare, quel che dovrai/vorrai fare nel prossimo slot di tempo
  39. in una parola… Serve DISCIPLINA!!
  40. Condividere lavoro usando branch remote Lavorare in parallelo a cose diverse Diffondere la conoscenza, favorire la collaborazione usando pull requests Confronto di idee, tecniche, punti di vista, modi di fare “codeback”: feedback su quanto fatto espresso tramite codice “di riasposta”
  41. Condividere lavoro usando branch remote Lavorare in parallelo a cose diverse Diffondere la conoscenza, favorire la collaborazione usando pull requests Confronto di idee, tecniche, punti di vista, modi di fare “codeback”: feedback su quanto fatto espresso tramite codice “di riasposta”
  42. Condividere lavoro usando branch remote Lavorare in parallelo a cose diverse Diffondere la conoscenza, favorire la collaborazione usando pull requests Confronto di idee, tecniche, punti di vista, modi di fare
  43. Condividere lavoro usando branch remote Lavorare in parallelo a cose diverse Diffondere la conoscenza, favorire la collaborazione usando pull requests Confronto di idee, tecniche, punti di vista, modi di fare
  44. qualcuno di voi ha mai lavorato in cantiere? O meglio, ha mai lavorato per davvero? :) ad es. in un cantiere con muratori, elettricisti, piastrellisti… E’ vero che alla fine si lavora tutti insieme per realizzare la costruzione ma ognuno con le sue libertà di azione ognuno con le sue priorità, modi di fare Mors tua, vita mea… “Io il mio lavoro l’ho fatto, mo so cazzi tua” un qualche accordo su obiettivi e valori comuni, il mettere insieme competenze individuali a vantaggio del gruppo.
  45. Interdipendenza positiva, Responsabilità individuale, Interazione faccia a faccia, La co-decisione: richiede di saper gestire la sincronizzazione delle azioni Il coordinamento: si esprime nell’integrazione dei contributi espressi. La collaborazione: trova la sua criticità nella progressiva convergenza delle opinioni, delle scelte e dei valori dei partecipanti. Ritrovarsi insieme è un inizio, restare insieme è un progresso, ma riuscire a lavorare insieme è un successo. (Henry Ford) La cooperazione si basa sulla profonda convinzione che nessuno riesca ad arrivare alla meta se non ci arrivano tutti (Virginia Burden)
  46. xxx