Course Overview

We all wish our existing code were perfect. It's not, and never will be. Many companies have vast amounts of legacy code in production. Unfortunately, this code might be brittle, confusing, or otherwise hard to maintain. Often the situation continues to degrade until a total rewrite is needed to replace the outdated system. Worst of all, many of these expensive attempts end in failure. But there is another way!

This course is about how to work with your existing code, how to get it under control, and how to clean and improve it steadily while fixing bugs and adding needed features. With these disciplines and techniques, your codebase will, over time, come to look as if it had been completely rewritten. Learn the techniques and practices of working with your old code to bring steady improvement, bug fixes, and discipline so you can move forward. This is an intense hands on class working with real code to help you see the process first hand.

This course is typically extremely hands on. Students will not only be coding the entire time, but coding with each other. This will feel more like a boot camp than traditional lecture-and-listen type training.

Key Learning Areas

  • See how refactoring works in the real world
  • Learn to analyze your code base
  • Conquer advanced code cleaning techniques
  • Working with Your Code (Optional). Part of this course involves assessing an existing code base at your company. If you like, we can use your current code base and source control to do these exercises.


Course Outline

  • Overview of Agile
  • Getting Started with TDD
  • Behavior Driven Development
  • Advanced User Scenario Testing
  • Refactoring & Emergent Design
  • Seams & Dependency Injection


Who Benefits

Mastering the Art of Improving Existing Code

Any developer who is interested in becoming better at improving the quality and maintainability of their code. Any project manager or IT executive who needs to work with an existing legacy code base but still needs to advance the feature set of a line-of-business or mission critical applications – but cannot wholesale move to a new programming language or technology.


Developers who attend this course should have a basic understanding of C#.