Michael Feathers
in Singapore
23 to 26 Sep 2014

We have sold out the workshops! If you want to be in the waiting list, please provide the following details and email us.

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

No. of seats left
WELC Sold Out
Symbiotic.. Sold Out
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 first 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 any profit will go to Agile Singapore to support future events.

Venue

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

The venue is proudly sponsored by

Working Effectively with Legacy Code
23 to 24 Sep $1300 SGD

Test Driven Development and Refactoring are powerful tools. With them you can add new code to systems and make existing code more maintainable. However, refactoring code without having tests in place can be hazardous. This class presents a collection of dependency breaking and test writing techniques that can be used to get existing code safely under test for refactoring. These techniques can be used in conjunction with Test Driven Development to breathe new life into large existing code bases. This class is structured as a set of lectures, discussions, and hands-on exercises.

Objectives

By the end of this course, you will:
  • Understand what legacy code is
  • Understand how to break dependencies in legacy code
  • Learn a variety of techniques for breaking external dependencies
  • Learn a variety of techniques for breaking internal dependencies
  • Understand when to employ each of the techniques
  • Learn a variety of strategies for code refactoring
  • Learn how to identify change points
  • Learn how to find an inflection point
  • Understand the concept of test coverage for inflection points
  • Understand how to write effective tests for legacy code

Course Outline

Day 1
  • Introduction / Testing as a Programmer’s tool
  • Seam identification
  • Breaking Dependencies – Sensing and Separation
  • Breaking Hidden and Manifest Dependencies
  • Characterization Testing
  • Refactoring Toward Understandability
Day 2
  • Strategies for Getting Large Methods under Test
  • Dealing with Deeply Nested Conditionals
  • Planning Large-Scale Refactoring and Technical Debt Reduction

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.

Timing

9am to 4:30pm for both days

Symbiotic Design Practice
25 Sep $650 SGD

Agile and Lean are transforming software development, but both of them miss a key fact about software - it is extremely sensitive to its environment. Team structure, day to day process, and the interface between business and development all affect the quality of design and the quality of code. And, at this point, we should be beyond the idea that code quality doesn’t matter very much - it does. Technical Debt cripples many organizations.

In this course, you will learn about how design changes over time in response to organizational forces. You’ll also be given a set of practices that you can use to keep your development free of Technical Debt and sustainable over time.

Topics will include

  • Design Forces around Software
  • Expanded Facets of Conway’s Law
  • Effects of Build Environment
  • Refactoring Efficacy and the Incremental Growth Model
  • Team Adjustment To Influence Growth
  • Communicating Technical Debt
  • Feature Selection for Sustainable Development

Workshop Format

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

Target Audience

This course is for Managers and Senior Developers. Although there will be no coding exercises, the ability to read code is assumed.

What to bring?

A laptop computer

Timing

9am to 4:30pm
Beyond Error Handling - Using Design to Prevent Errors
26 Sep $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.

Timing

9am to 4:30pm