When many people hire contractors to make home repairs and improvements, they just assume that the job will be done in a specific way. This may work out, but the problem arises when the contractor has different assumptions and the two do not agree on the scope of the project.
For instance, perhaps a roof is leaking. The homeowner hires a roofer, who fixes that leak. Shortly after, though, the homeowner notices another leak in a different area. They feel outraged because they assumed that the roofer would look for any additional problems and fix everything. The roofer, on the other hand, just thought they were hired to fix the one known leak and did not have any obligation to look for related issues.
This is one simple example, but you can see how the difference in expectations can lead to some serious problems, especially when someone does not feel like they got what they paid for.
The key, then, is to always use a contract. Define the job in specific terms. Talk about the scope of the project. Talk about expectations. Write it all down, along with the projected timeframe and the amount that should be paid for those services. This takes more time, but it ensures that you are both on the same page.
In addition, having the contract in hand can help either side if there is a dispute. The contract alone will not prevent a dispute in all cases, but it can help with the resolution. It is very important for those involved in these situations to know all of their legal options when both sides do not see eye-to-eye -- especially if that means the contract was breached.