One of my main problem with freelancing is that some of my clients ask me to add new feature in the middle of project when we have reached an agreement about tasks and price. So basically I'm adding these features for free. If the task is big I usually ask for extra money and time but for small tasks I do them for free and when the project is finished I realize that I have added tons of tiny features basically for free. So how should I deal with clients who ask for extra features?
Keeping the flexibility to add and change on the fly makes the job more like an R&D job, and an hourly bill rate is better suited. Fixed-price contracts work well if the job is well defined and agreed upon up front,
I typically do a mix of both, if the client requests a fixed price. I suggest we plan that I work for time-and-expenses to prepare a job specification we can agree on, then negotiate a fixed price for me to do it. The fixed-price contract states that any changes may require renegotiating the price.
Specify in the contract that each extra features and changes have a value by its difficulty between 1..5 that determined by developer and the value has a certain coefficient, for example n*5
In developing process completly document extra features or changes requested by employeer and set the difficulty value. At the end add all numbers and multiple them by your coefficient explained in agreement , this is the price which employeer must pay for extra small features and changes.
For example the collect of all the extra requested features is 17 and the coefficient explained in agreement is 5, so the employeer should pay 17*5 = 85$ for the small changes or features that was not part of original agreement.
The price for big feature or changes calculate in separate agreement. This formula is just for small changes or features.
I always create a document of requirements. The document is created after a discussion of all areas of the website has been made to fully understand the scope. This will also get them to think ahead and will likely bring up those extra bits from the future to the present. For example they might say I was this information on the page. And then I would break it down and say ok do you want any images? Are there any links? Where do you want them to go? Give them questions so they have to think about what they want. Most clients dont even know what they want until they see it in the flesh and then they start deciding. After all this is done, and every page, element and feature has been discussed, I then write the document that explains EVERYTHING. Yes, this takes time, and I usually add the charge to quoted price. And yes there is a possibility that they cancel the website request before even starting, and you have wasted your time on the document. But if the project goes through then it's worth the time. Although it is risk to spend time on the document requirement, the discussion you have before hand will help the client in making their mind, and they are more likely to go ahead with everything once they have discussed and thought everything through.
Get them to read the document before signing or agreeing and any changes they make you can make that change in the document and also change your fees if necessary.
In the future, if they request more additional features, you can say this goes beyond the contract and you have agreed to do what the requirement says (which is also what the fee is based on), and state if they wish to add/change a feature, it will require X extra because the price you quoted is based on Y time.