Sponsored Link •
Bill Venners: I think one problem with getting people to care about design is that people change jobs. The developers who originally created the 11-page while loop had left the company by the time we had to clean it up. I think often programmers figure the chances they will actually experience the pain of dealing with their bad designs are slim, so they don't necessarily have an incentive to care. And even if a programmer does care, design is still hard to do well. Good design takes time, and it seems like there is always time pressure.
Martin Fowler: I don't agree that it takes longer to create well-designed code.
Bill Venners: Why not?
Martin Fowler: It is a curious thing. We seem to have a notion in the software industry that doing a good job slows you down. And yet when I think about working to keep code well-factored and writing tests, I find that makes me go faster.
I think people look at the time spent cleaning up a design as lost time. They don't see the time they gain when they change the code later and it is so much easier. It only takes a few minutes to make the change when it otherwise would have taken a couple hours.
People also underestimate the time they spend debugging. They underestimate how much time they can spend chasing a long bug. With testing, I know straight away when I added a bug. That lets me fix the bug immediately, before it can crawl off and hide. There are few things more frustrating or time wasting than debugging. Wouldn't it be a hell of a lot quicker if we just didn't create the bugs in the first place?
Refactoring: Improving the Design of Existing Code, by Martin Fowler with Kent Beck, John Brant, William Opdyke,
and Don Roberts is at Amazon.com at:
To Be Explicit, an article by Martin Fowler first published
in IEEE Software:
Public versus Published Interfaces, an article by Martin Fowler first
published in IEEE Software:
The Pragmatic Programmer: From Journeyman to Master, by Andrew Hunt
and David Thomas, is at Amazon.com at:
IntelliJ IDEA, a Java IDE with refactoring support:
Eclipse, an open source IDE with refactoring support:
A catalog of summaries of refactorings mentioned in the book, Refactoring:
A refactoring portal maintained by Martin Fowler contains links to refactoring tools and other refactoring sites:
Martin Fowler's links to extreme programming resources:
Articles written by Martin Fowler about XP and agile methods:
Patterns of Enterprise Application Architecture, by Martin Fowler is at Amazon.com at:
UML Distilled: A Brief Guide to the Standard Object Modeling Language, by Martin Fowler and Kendall Scott
is at Amazon.com at:
Planning Extreme Programming, by Kent Beck and Martin Fowler is at Amazon.com at:
Analysis Patterns: Reusable Object Models , by Martin Fowler is at Amazon.com at:
Martin Fowler's website contains many articles, book chapters, and other information from Martin: