Despite the wide adoption of Agile frameworks, many development teams are not reaping the benefits of agility because of the poor quality of their code and the high volume of manual, error-prone, tasks. While Scrum—for example—is deliberately nonprescriptive on how the software is built, its adoption is rarely successful without applying good technical practices. Development teams that mistakenly ignore good technical practices keep snowballing technical debt and are unable to add new features and respond to change within a Sprint time-box. This seminar provides hands-on experience on proven engineering practices, design principles and patterns that will enable developers to deliver high-quality, valuable, working software frequently while accommodating changing requirements.

Note: this seminar focuses on engineering practices and techniques. To get the most out of it, we encourage you to bring a laptop loaded with your preferred development environment (IDE/editor and a unit testing framework at minimum). For some hands-on labs, we provide sample code in C#, Python, Ruby, and Java for you to choose.

2-day seminar

Highlights 

  • Automated Testing
  • Continuous Integration (CI)
  • Continuous Delivery (CD)
  • Behavior-Driven Development (BDD)
  • Test-Driven Development (TDD)
  • Clean Coding
  • Individual Productivity
  • Refactoring
  • SOLID Principles

Reviews

Stars 4.5 210 Ratings

"Most Valuable: Course materials and labs. The material was helpful to me as an evaluation of where I currently stand vs Agile best practices, and the materials give me many "jumping off" points for further learning." -- Dave M, Cisco 

"The instructor was very knowledgeable and articulate. He was also very responsive to questions and allowed plenty of time for discussions." -- Stacy Dimeo, Developer, Strasz 

"Very excellent instructor with solid knowledge. Very well done, Melvin!!!" -- Parminder Kocher, Senior Manager, Cisco 

"Always great (Melvin!); always great amenities - lunch, breakfast snacks." -- Bob, Database Engineer

Benefits

At the end of this seminar, participants will be able to:

  • Automate tests to efficiently ensure software code is working
  • Understand the benefits of automated builds and continuous integration
  • Develop code using Test-Driven Development to ensure testability
  • Write clean code to ease maintenance and avoid unintentional rework
  • Improve the quality of the code continuously via refactoring
  • Refine requirements to improve planning and remove ambiguities
  • Design effective and efficient test cases

Who Should Attend

Software developers who are, or will be, part of an Agile team

Location

All of our public classes are held at the Construx Training Center

Clean Coding

  • Coding standards
  • The Telephone Test
  • Programming by Intention and the Compose Method pattern

Code Metrics

  • Static code analysis
  • Measuring complexity
  • Measurable code smells

Design Principles & Patterns

  • Single Responsibility Principle (SRP)
  • Don't Repeat Yourself (DRY)
  • Open-Closed Principle (OCP)
  • Dependency Inversion Principle (DIP)
  • Law of Demeter (LoD)
  • Strategy Pattern
  • Hexagonal architecture

Test Case Design

  • Contract tests
  • Domain testing
  • Decision Tables
  • Capturing test scenarios in Gherkin

Automated Testing

  • Test Automation Pyramid and Testing Quadrants
  • Design for Testability (DfT)
  • xUnit test patterns
  • Test Doubles
  • Refactoring test code
  • Code coverage

Refactoring

  • Emergent Design
  • Rules of Simple Design
  • Improving names
  • Removing duplication
  • Refactoring to Patterns

Test-Driven Development (TDD)

  • Acceptance Test-Driven Development and Behavior-Driven Development (BDD)
  • The Red-Green-Refactor cycle
  • Three Laws of TDD

Continuous Integration (CI) & Continuous Delivery (CD)

  • Essential practices for CI
  • Trunk-based development
  • Essential practices for CD

Melvin Perez-Cedano

Melvin Pérez-Cedano is a Senior Fellow at Construx Software where he provides training and consulting services that help organizations and individuals to successfully ...