I was at a networking group one morning and someone said that they were working with someone who had a serious problem. I set up an appointment to see them the next day. They had a custom application which had lost some of its functionality. There had been a major disagreement with the developer and he had the application programmed to first stop performing certain functions and then to not run at all. It looked like we had 3-4 weeks before the last condition was met.
We quickly determined that the only possible route to save the business from a serious outage was to build a replacement application as soon as possible. The most critical functions were identified and these were developed first. It was also necessary to create a program to extract the data from the current application.
The new application was completed and tested and the customer started using it before the old application stopped working entirely. Additional, less critical functions were added at a more leisurely pace!
This was certainly a rare situation, but could happen to anyone. We prefer not to work with such deadlines, but if we must, we are able to identify and focus on the critical functions and get the customer up and running with as little disruption as possible.