Table of Contents

Chapter 1. Removing duplicate code

Chapter 9. OO design with CRC cards

Chapter 2. Turning comments into code

Chapter 10. Acceptance test

Chapter 3. Removing code smells

Chapter 11. How to acceptance test a user interface

Chapter 4. Keeping code fit

Chapter 12. Unit test

Chapter 5. Take care to inherit

Chapter 13. Test driven development

Chapter 6. Handling inappropriate references

Chapter 14. Team development with CVS

Chapter 7. Separate database, user interface and domain logic

Chapter 15. Essential skills for communications

Chapter 8. Managing software projects with user stories

Chapter 16. Pair programming