Drive By Requirements
This paragraph (which may or may not be in Ship It!) was inspired. I'm tired and it's been a long day, so take it for what is. :) I'd love to hear your thoughts.
This sounds like a lot of work! We're under extremely tight schedule pressure. We simply don't have the time to revisit requirements. What can we do?
Consider that by not taking the time to revisit requirements, you're instead choosing to build similar to, but different from, features than what your customer wants and needs. How close will you be? That's the dice you're rolling.
If you're really lucky, you'll be close enough to still get paid. Is the product what you agreed on? No. Is it what you promised? No. But they can use it, and your parents are friends of theirs, so, sure. You get paid. What's that you say? The next contract? No, they won't be using you again.
If you're moderately lucky, you'll be able to spin your entire team back up for "minor" retooling that changes half of your application's behavior and introduces a whole new set of bugs. Somehow the "minor changes" the customer asked for have very little in common with the "minor changes" to the code base, or the development team's sleeping schedule!
If you're entirely unlucky, you'll throw away everything your team spent the last six months building and start over. Sure, the team will tell you they reused parts, but that's to make you feel better. They won't reuse anything that couldn't be rewritten in an afternoon. And by the way? You now have six weeks or we not only withhold payment, we also sue you for breach of contract. Sure, it might bankrupt your firm, but that's your problem not mine.
So tell me.