Agile Technical Practices

Agile Technical PracticesStart learning Agile Technical Practices in intensive, hands-on two-day classes!

We offer a program of  technical courses for all software developers interested in learning or improving their knowledge of effective technical practices.

Guided by experienced practitioners, you will learn about technical practices like team work with Pair Programming, Test Automation and Test Pyramids, Refactoring, Test Driven Development (TDD), the fours rules of Simple Design, SOLID Design Principles, Clean Code, Continuous Integration and Delivery.

Introductory and advanced classes available.


Foundations of Continuous Delivery

DevOps and, more generally speaking, the principles and practices of Continuous Delivery are the technical essence of Agility; they allow an organisation to release a product frequently, with greater quality and safety.

In this course we will analyse the world of Continuous Delivery, starting from the principles and up to the practices to implement in the field. We will understand together what is the path to follow in order to adopt Continuous Delivery in all its forms, deepening in detail Continuous Testing as the first practice to explore.

Course Agenda:

  • DevOps and Continuous Delivery definition
  • Principles of Continuous Delivery
  • Practices of Continuous Delivery
    • Continuous Quality
    • Continuous Testing
    • Continuous Integration
    • Continuous Deployment
    • Continuous Monitoring
  • Focus on Continuous Testing
  • Test Pyramids
  • A Quality Test Suite
  • Test Suite Smells
  • Sharing a Continuous Delivery Culture

E-TDD – Effective Test Driven Development:

At the fist level, you are introduced to the fundamental concepts of agile technical practices, with particular attention to the techniques of eXtreme Programming. The course provides the necessary basis to allow the team to improve the quality of work in a sustainable manner in the long run by producing flexible, easily modifiable and maintainable code. In the course, theoretical presentations alternate with practical exercises for the application and integration of what has been presented.

The course language and the training material is in English.

Start learning Agile Technical Practices in this intensive, hands-on class. Guided by experienced practitioners, you will learn the basics of Test-Driven Development (TDD), Pair Programming, Iterative and Incremental Development, Emergent Design, applying robust software design principles, and working with frameworks and libraries.

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:

Continue your journey toward mastery of Agile Technical Practices at an advanced level, building on what you learned in the fundamental course, learning about outside-in software design, practicing more-advanced styles of Pair Programming, applying a mix of TDD techniques, …

Please note: This is an advanced course, therefore, our “Effective TDD” or a similar course is a pre-requisite!

The course language and the training material is in English.

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

Target Group:

Software developers interested in learning or improving their knowledge of effective technical practices. The classes will use the Java language for examples and exercises, but participants are free to use a different language on their own laptops if they prefer. In-house courses can be organised also using different programming languages. Please note: These are mostly hands-on courses and you will need your computer with your development environment of choice.

Trainers:

The courses will be run by renowned experts in the Extreme Programming community worldwide.

Course Format:

The course is delivered as public or in-house course. If you are interested in having this course as an in-house please tell us about it using our contact form below and we’ll get back to you as soon as possible.