Agile Technical Practices

Agile Technical PracticesImpara le Pratiche Tecniche dell’Agilità grazie a questo corsi di due giorni!

Offriamo una serie di corsi intensi e pratici sulle pratiche tecniche agili per tutti i software developers interessati ad imparare e/o migliorare le proprie conoscenze.

Guidato da professionisti esperti, apprenderai tutto quello che di importante c’è da sapere sul lavorare in team con il Pair Programming, Test Automation e Piramide di test, Refactoring, Test Driven Development (TDD), le 4 regole del Simple Design, SOLID Design Principles, Clean Code e Continuous Integration e Delivery.

Sono disponibili classi introduttive ed avanzate, entrambe di due giorni.


Continuous Delivery

Il DevOps e in generale i principi e le pratiche di continuous delivery sono l’essenza tecnica dell’Agilità; permettono ad un organizzazione di rilasciare un prodotto in modo frequente, con maggior qualità e sicurezza.

In questo corso analizzeremo il mondo della continuous delivery partendo dai principi di base fino alle pratiche da usare “sul campo”. Capiremo insieme quale è il percorso per arrivare ad adottare continuous delivery in tutte le sue forme, approfondendo in dettaglio il Continuous Testing come prima pratica da esplorare.

Programma del corso:

  • Definizioni: DevOps e Continuous Delivery
  • Principi di Continuous Delivery
  • Pratiche di Continuous Delivery
    • Continuous Quality
    • Continuous Testing
    • Continuous Integration
    • Continuous Deployment
    • Continuous Monitoring
  • più in dettaglio: Continuous Testing
  • Test Pyramids
  • Quality Test Suite
  • Test Suite smells
  • 
Condivisione di una cultura di Continuous Delivery

E-TDD – Effective Test Driven Development:

Come primo corso, verrai introdotto ai concetti fondamentali delle pratiche tecniche dell’agilità, con particolare attenzione alle tecniche di eXtreme Programming. Il corso tratterà i concetti di base necessari per un team al fine di migliorare la qualità del proprio lavoro in un modo sostenibile. A lungo termine i concetti raccontati produrranno flessibilità e codice facilmente modificabile e manutenibile. Il corso sarà un mix di presentazioni teoriche ed esercitazioni pratiche per applicare e integrare quando è stato presentato.

La lingua del corso e il materiale saranno in inglese.

Possible Course Agenda:

  • TDD as a software design technique & testing tool
  • Where TDD fits in the overall picture of software testing
  • History of TDD and when to use it
  • Concepts of unit testing and microtesting
  • Code isolation
  • Detroit school or “classic” style TDD practicum
  • Inside-out design
  • Test coverage metrics – meaning and use
  • Characteristics of effective test cases
  • Organisation and naming considerations for test suites
  • Test-driving code that interacts with frameworks and libraries
  • IDE and VCS integration
  • Value of collaborative work
  • Pair programming basics, anti-patterns, different styles
  • Test suites as design documentation
  • Up-front and emergent design and how to balance them
  • Software design principles
  • Behavior-focused vs. implementation-aware tests
  • Guiding design through microtests – practicum
  • Branching strategies

M-TDD Mastering Test Driven Development:

Continuando il percorso verso l’apprendimento delle pratiche tecniche dell’agilità, basandoci su ciò che abbiamo imparato al primo corso, imparerai outside-in software design, diversi modi più avanzati di Pair Programming, ad applicare un mix di diverse tecniche diverse di TDD, …

NB: Questo è un corso avanzato, ed è da intendersi come proseguo del corso E-TDD o simili; aver partecipato al corso E-TDD e/o simili è un prerequisito.

La lingua del corso e il materiale saranno in inglese.

Possible Course Agenda

  • Outside-in and inside-out design
  • Test doubles – mocks, stubs, fakes
  • Test case design guidelines for outside-in design
  • Balancing inside-out and outside-in design
  • Guiding outside-in design through microtests
  • Review of software design principles
  • Common code smells and remedies
  • Establishing a test baseline: Golden Master approach
  • Establishing a test baseline: Read by Refactoring approach
  • Identifying seams in code
  • Writing characterization tests
  • Breaking dependencies to enable microtesting
  • Practicum:
    – identifying code smells – finding seams
    – breaking dependencies – building test coverage

A chi si rivolge:

Software developers interessati all’apprendimento e al miglioramento delle proprie conoscenze di pratiche tecniche. Durante il corso useremo Java come linguaggio per esempi e esercizi, ma ogni partecipante è libero di usare un diverso linguaggio a piacere sul propri laptop.

NB: Questo è un corso prettamente pratico, quindi avrai bisogno di portare il tuo computer con l’ambiente di sviluppo a tua scelta configurato.

Trainers:

I trainer del corso saranno esperti noti nella comunità eXtreme Programming mondiale.

Formato del corso:

Il corso oltre ad essere pubblico è fruibile anche in-house. Se siete interessati ad organizzare il corso nella vostra azienda –> contattateci, vi risponderemo quanto prima.