Extreme Programming for Software Development

This immersive, twenty-four-hour, hands-on software developer training course presents key developer practices from Extreme Programming (XP) that will enable you to build higher-quality software more rapidly and with fewer defects and make you a more valuable contributor to any development team.

You’ll learn essential practices and expert techniques to create more maintainable, extensible software. You’ll see how test-first development informs design decisions and gain the tools for exploring the best design trade-offs for the tasks at hand. You’ll discover the secrets to finding patterns in problems, find easy ways to identify abstractions, and master several techniques for emerging designs.

The course includes six hands-on programming labs in which you’ll demonstrate the techniques you’ve learned by building a system and seeing your design unfold. Examples apply to any programming language, and the exercises can be done using Java or C Sharp. By the end of class, you will have a thorough understanding of how  to improve your software development, along with the knowledge and skills to make it happen.

Course Benefits

Completing this Extreme Programming training course will give you a deeper understanding of how to build higher-quality software on a Scrum development team and enable you to:

  • Employ expert techniques for analysis and design
  • Read and write the most useful UML diagrams
  • Estimate development tasks more accurately
  • Deliver valuable software in sprints
  • Create flexible designs that can be easily changed
  • Apply simple strategies for refactoring legacy code
  • Identify code qualities that improve maintainability
  • Recognize pathologies in code and how to fix them
  • Experience emerging designs using test-first development

Who Should Take This Course

This course is for all team members and has the greatest impact when the entire team attends. This course will benefit Architects, DBAs, Designers, Developers, Development Managers, Directors, Product Managers, Programmers, QA Engineers, Software Engineers, Technical Analysts, Technical Leads, Technical Writers, and Testers. Familiarity with basic Object-Oriented (OO) concepts and terminology is recommended. Those who participate in the programming exercises and fulfill the additional training requirements are eligible to become Certified Scrum Developers and require the ability to write simple programs in Java or C Sharp.

Agenda

In Three Full-Day (8-Hour) In-Person Sessions

Session 1 — Analysis

  • Introduction: Scrum versus Waterfall development
  • Development Essentials: Scrum and XP practices
  • Test-First Development: TDD driving design
  • Lab 1: “Iteration Zero—Intro and set up of case study
  • Lab 2: “Coding Test First—Experiencing TDD

Session 2 — Design

  • Design Review: Group discussion of the previous day’s labs
  • CREATE Software Quality: Critical code qualities; recognizing and getting more out of them
  • Development Practices: Simple techniques of rapidly building quality software
  • Lab 3: “Adding Optional Behaviors—Using requirements to find patterns in problems
  • Lab 4: “Encapsulating Complex Business Rules—Using compound patterns

Session 3 — Development

  • Design Review: Group discussion of the patterns in the previous day’s labs
  • Testing Techniques: Advanced techniques for writing more-testable software
  • Refactoring and Emerging Systems: Techniques for refactoring legacy code
  • Lab 5: “Mocks and Shunts—Techniques for writing mocks and injecting dependencies
  • Lab 6: “Refactoring Legacy Code—How to clean up code by identifying code smells
  • Concluding Remarks

In Five Half-Day (5-Hour) Online Training Sessions

Session 1 — Analysis 1

  • Introduction: Scrum versus Waterfall development
  • Lecture: Development Essentials: Scrum and XP practices
  • Lecture: Test-First Development: TDD driving design
  • Lab 1: Iteration Zero—Intro and set up of case study

Session 2 — Analysis 2

  • Design Review: Group discussion of the patterns in the previous day’s labs
  • Lecture: CREATE Software Quality: Critical qualities; recognizing and getting more out of them
  • Lab 2: Coding Test First—Experiencing TDD

Session 3 — Design 1

  • Design Review: Group discussion of the patterns in the previous day’s labs
  • Lecture: Development Practices: Simple techniques of rapidly building quality software
  • Lab 3: Adding Optional Behaviors—Using requirements to find patterns in problems

Session 4 — Design 2

  • Design Review: Group discussion of the patterns in the previous day’s labs
  • Lecture: Testing Techniques: Advanced techniques for writing more-testable software
  • Lab 4: Encapsulating Complex Business Rules—Using compound patterns

Session 5— Development

  • Design Review: Group discussion of the patterns in the previous day’s labs
  • Lecture: Refactoring and Emerging Systems: Techniques for refactoring legacy code
  • Lab 5: Mocks and Shunts—Techniques for writing mocks and injecting dependencies
  • Lab 6 (Optional): Refactoring Legacy Code—How to clean up code by identifying code smells

Your Instructor, David Bernstein

David BernsteinMy continuing passion for software design and construction has led me to train more than 10,000 professional software developers for clients that have included Fortune 500 firms such as Microsoft, IBM, Yahoo, Boeing, AT&T, Sprint, Medtronic, SunGard, State Farm, Vanguard, and Weyerhaeuser. As a longtime IBM consultant, I trained software engineers around the globe, giving them the skills to write the next generation of applications and operating system software while earning one of the highest satisfaction ratings in the history of IBM education. Since 2006, I’ve devoted my consulting practice to providing organizations with training and coaching for software developers and teams transitioning to Agile, Scrum, and Extreme Programming practices.

Praise for David’s Training

“This was a great class! First, David distills a vast amount of Agile related information into successful practices with direct application in our work. Second, the hands-on labs get us over the learning hurdles of TDD implementation as quickly as humanly possible. Lastly, David is clearly passionate in his concern with the overall condition of code quality in the software industry. He will go to no end with his class, we voted to do two fourteen hour days to get the lab knowledge and David supported us and stayed with us the whole time. Thank you!
—Mike Jassmann, IT Manager

“Not knowing what the latest tools to use or books to read, this class allowed us to understand the latest practices and tools and how to apply them in our current working environment.”
—Doug Parris, Senior Software Engineer

“This is a great class that will start you on the path to becoming a great programmer and an invaluable asset to your company.”
—Vincent Quiles, Programmer Analyst

Become a more proficient developer— register for the next session or contact me to arrange a private, on-site session for your team.

View a pdf version of this course description