To register, please provide the following details and email us. Group rate (for companies) available for 5 or more.

  • First, last name and email of attendee(s)
  • The workshop(s) to attend
  • Company-sponsored or self-sponsored (40% off)*
  • Payment method: bank transfer (preferred) or credit card

No. of seats left
Tech. Debt. NA
Beyond.. Sold Out
About this initiative

Michael is best known for his work on Working Effectively with Legacy Code, he is also a frequent invited speaker and well known in software development. For the second time in Singapore, we can learn directly from him without travelling to America. The following are the workshops we planned to organise while he is here. You may find out more about him at his LinkedIn.

This is a volunteer work and all profit will go to Agile Singapore to support future events.


PARKROYAL on Kitchener Road
181 Kitchener Road, Singapore 208533 (map)

Reducing Technical Debt
25 to 26 May, 1300 SGD

Technical Debt is a catch-all term that we use for entropy in software development. Systems grow, become unruly, and difficult to work with. When this happens, we often know that we can do better, but it is hard to take concrete actions which help us get a strong a sense of control over the evolution of an entire code base.

In this course, Michael Feathers will outline what he has learned about making big changes in large software projects. You'll learn techniques all along the continuum of team coordinated refactoring, rewriting, and advanced team practice which help you maximize the potential of your existing code base.


By the end of this course, you will:
  • Identify various types of technical debt
  • Assess the amount of technical debt in your codebase
  • Develop design plans for large-scale refactoring and debt mitigation
  • Alter team and organizational process to make refactoring a first-class practice

Target Audience

For managers and developers with knowledge of software development. There will be no actual coding in the course, but people must have reading knowledge of code.

What to bring?

A laptop computer with text editor.


9am to 4:30pm for both days

Beyond Error Handling - Using Design to Prevent Errors
27 May, 650 SGD

It would be easy to say that error handling is a black art in software development but that implies that there is some secret stash of knowledge out there. The truth is that we tend to think of error handling as a "lesser concern." If we know how to throw and catch exceptions, we feel that we are okay.

The fact of the matter is - we aren't okay. Error handling in applications is often a symptom of incomplete design. This course will focus on techniques you can use to systematically increase the robustness of code by rooting out potential errors and designing them away.

Topics will include

  • Survey of Error Handling Mechanisms
  • A Model for Robustness
  • Trusted Cores and Type Tunneling
  • Reducing Variation
  • Dealing with Concurrency and Distribution
  • Guidance for Exceptions/Null Objects/Options
  • Design Inversion

Workshop Format

The format of the course is lecture, with team exercises and discussion.

Target Audience

This course is for developers. There will be extensive coding exercises. Participants should have experience in Java, C#, or C++.

What to bring?

A laptop computer with a Java, C#, or C++ programming environment. The exercises will translated into all of those languages.


9am to 4:30pm