Christopher Hawkins has written a great piece about 11 types of software project clients that you should fire. I think everyone who has been doing software for a while has worked with some suboptimal clients. I worked on one project where the customer was very nitpicky and detail-oriented, and yet they couldn’t make up their mind about the details! Couple that with problems on our side from a codebase that wasn’t aging gracefully, and that was an unhappy project that I worked on for more than a year.
Unfortunately, it was a strategic relationship and it was not in my hands to fire the customer. As I understand it, this project continued on for another year and a half after I left before finally being put out of everyone’s misery.
Another great link via Ian.