Michael Feathers is the author of
Working Effectively with
Legacy Code.
The book contains
proven strategies

for maintaining and enhancing legacy code!


Michael Feathers

Senior Trainer, Mentor and Consultant


Michael Feathers is a senior member of Object Mentor team. He provides training, coaching and mentoring services in Agile/XP programming practices, test-driven development, refactoring, object-oriented design, Java, C#, and C++. Michael has over 12 years of experience in developing world-class software solutions. Prior to joining Object Mentor, Michael designed a proprietary programming language and compiler as well as a large multi-platform class library and a framework for instrumentation control.


Michael is an active member of the Agile/XP community. As a contribution to this community, he developed and maintains the CPPUnit — an open source C++ port of the JUnit testing framework. He is a member of the ACM and IEEE. He regularly speaks at software conferences around the world and has been the acting chair for the Codefest event at the last three OOPSLA conferences.


When Michael isn't engaged with a team, he spends his time investigating new ways of altering design over time in codebases. His key passion is helping teams surmount problems in large legacy code bases and connecting with what makes developing software fun and enriching.

Work Experience

Object Mentor Incorporated, 1999 - Present

Senior Trainer, Mentor and Consultant


Coulter Corporation Hematology Research and Development , 1995-1999
Senior Software Engineer Level II
Authored departmental system development process. Became the designer and lead programmer for the Instrument Control and Data Acquisition project: a multi-application, multithreaded Windows NT-based framework using COM components to accommodate instrument hardware variability. Delivered five milestones of functionality to internal customers. Co-designed and mentored the development of COM components suitable for reuse across departmental software. Gave in-house talks about Catalysis and Martin Fowler's Analysis Patterns. Joined a product development team and participated in the design of a distributed system with proprietary middleware.


Coulter Corporation Applied Research, 1992-1995
Software Engineer II, Sr. Software Engineer

Designed and implemented the second-generation of an object-oriented class library for hematological data analysis. Carried the project through a full lifecycle using IEEE standards. Supervised the work of two other employees on the continued development of the library. Initiated research into alternative multivariate data analysis techniques. Oversaw the transition of the library from a research tool to production software. Developed proprietary data analysis techniques currently in use in production software. Developed a prototype instrument control and data acquisition application for research instruments. Mentored coworkers on various object-oriented projects.


Coulter Corporation Applied Research , 1991-1992
Programmer Engineer I

Designed a programming language for the development of hematological data analysis algorithms. Implemented a re-targetable compiler for the language using C++ and YACC. C++ was the first target language.



B.S. Computer Science, 1991
Florida International University


M.S. Computer Science, Thesis In Progress
Florida International University


Selected Publications

Factoring Class Capabilities with Adjectives
Journal of Object-Oriented Programming, April 1999



Stability through Change
OOPSLA 1999, Accomplishing Software Stability Workshop

System Tunneling with Data
OOPSLA 1999, Meta-Data and Active Object Model Workshop

Member of the ACM and the IEEE Computer Society

Member of the OOPSLA99 2000 DesignFest Organizing Committee.

Organizer of BoF Sessions at the JavaOne 2000 Conference.

Currently writing a book about concrete techniques for use with legacy code bases.

©2006 Object Mentor Inc | Privacy Statement | Terms of Use