Workshop poster Request a Quote

Have Any Questions?

Legacy Code

Nearly every company is confronted by substantial bodies of existing, poorly designed, hard-to-maintain, yet critical legacy code.

Too often, a legacy codebase is like a spaghetti-code jungle. Merely comprehending such code can be a daunting task and developers are reluctant to make changes for fear of breaking existing behavior.

The Legacy Code Workshop teaches how to effectively understand and improve such code by offering a hands-on introduction to the tools, tactics and techniques for reviving legacy code.

You work entirely in your code for this workshop. The workshop is 70% exercises, and those exercises use your tools and your code. We teach you how to solve the problems that show up in your specific codebase.

The remaining 30% of the content is reflective discussions to extract insights and phrase them in easy to remember ways.

Agenda

  • Day 1: Refactoring for Legibility
  • Provably Zero-Bug Refactoring
  • Read by refactoring
  • Naming is a process
  • Have an Insight; Write it Down
  • Day 2: Getting Dirty… Cleaning Up Legacy Code
  • Fix Your Own Legacy Code
  • Day 1: Refactoring for Legibility
  • Provably Zero-Bug Refactoring
  • Read by refactoring
  • Naming is a process
  • Have an Insight; Write it Down
  • Day 2: Microtesting and Breaking Dependencies
  • Test as Spec
  • Context Neutrality
  • Dependency Elimination Principle
  • Mock-Free Unit Testing
  • Breaking 3rd-Party Dependencies
  • Day 3: Getting Dirty… Cleaning Up Legacy Code
  • Fix Your Own Legacy Code
  • Concerns Specific to Your Code and Company
  • Day 1: Refactoring for Legibility
  • Provably Zero-Bug Refactoring
  • Read by refactoring
  • Naming is a process
  • Have an Insight; Write it Down
  • Day 2: Microtesting and Breaking Dependencies
  • Test as Spec
  • Context Neutrality
  • Dependency Elimination Principle
  • Mock-Free Unit Testing
  • Breaking 3rd-Party Dependencies
  • Days 3-4: Getting Dirty… Cleaning Up Legacy Code
  • Fix Your Own Legacy Code
  • Budgeting to Pay Down Debt
  • Concerns Specific to Your Code and Company
  • Prevent Defects
  • Becoming #BugsZero
  • Day 1: Refactoring for Legibility
  • Provably Zero-Bug Refactoring
  • Read by refactoring
  • Naming is a process
  • Have an Insight; Write it Down
  • Day 2: Microtesting and Breaking Dependencies
  • Test as Spec
  • Context Neutrality
  • Dependency Elimination Principle
  • Mock-Free Unit Testing
  • Breaking 3rd-Party Dependencies
  • Days 3-4: Getting Dirty… Cleaning Up Legacy Code
  • Fix Your Own Legacy Code
  • Concerns Specific to Your Code and Company
  • Prevent Defects
  • Becoming #BugsZero
  • Day 5: Strategy and Alignment
  • Budgeting to Pay Down Debt
  • Measuring Improvement
  • Celebrating Success
  • Visualizing Progress Towards Strategic Investments

Course Details

Transfer
Knowledge: 25%, Skill-Building: 75%
Learning outcomes
  • Reduce the risk involved in changing designs. Execute design changes without adding bugs.
  • Read code faster, reducing the cost of today's story.
  • Reading code now makes it better, reducing the cost of future stories too.
  • Become fluently proficient with your tools. Change code faster and with fewer mistakes.
  • Understand when to revive and when to replace a legacy system.
  • Make classes testable by reducing dependency between them.
  • Make strategic, long-term architectural changes without breaking the system and visualize progress along the way.
Method of Instruction
Work in your code (mobbing and pairing), Interactive dialogues, Question and answer
Target Audience
Primary: Programmers, Front-End Developers, Architects, DevOps, and Designers
Secondary: Technical Managers, Testers, Technical Writers
Course Level
Intermediate
Course Prerequisites
Required: Some legacy code to work on, the uglier the better. A story that requires changing that code. Optional: At least one student who is moderately familiar with the code we are changing.

Requirements

General Requirements

To ensure a successful class, we require the following facilities:

  • VGA projector (1024x768 minimum)
  • Projector screen
  • Speakers (to connect instructor's machines. Sound should be audible to the whole class)
  • White board
  • Dry erase markers
  • Flip chart and stand
  • Ample room for students in terms of room size and set up (prefer U-Shape seating)
  • At least one standard development workstation per 20 students that is set up for development of the target code
  • Ability to check in to source control from learning room
  • Optional: at lesat one development workstation per two students if pairing is desired

Development Tools

Students need to have their development environment set up before class begins.

Supported Browsers

  • Latest Firefox
  • Internet Explorer 8+
  • Latest Chrome
  • Latest Safari

Operating Systems

  • Windows
  • Linux
  • Mac OS X

Flash 9 (or higher) is required to watch our videos — download for free.

Each student will need a pair of headphones to watch our videos.

Once an agreement for the workshop is confirmed, we will work with your designated contact to ensure that the environment is configured properly prior to the workshop.

Request a Quote