Extracted from www.pinterest.com
A friend of mine called Ruben SanRoman has decided to start working as freelance Full-Stack (front and back-end) developer.
He told me that has to struggle with many issues. First of all, he has to deal with how many dollars charge per hour but after working with many different projects he set a fair rate to him (he has never mentioned about the happiness of his clients).
Secondly, he started to struggle to get the payment on time (he has got most of the payments at the end of projects) but he has made an agreements with his clients to get a check every Friday.
Thirdly, he faced with a well known issue in IT: clients change (updated, add and remove any features and so on) originals requirements during the project.
Why are the clients doing that? Well, he delivered software each week in order to provide evidence of his work (remember the check he got each Friday). and as soon as clients got an increment of the product they wanted a different final product so his “estimation” about how many hours will demand him to develop the code become useless that made him crazy.
After Ruben told me his problem I suggested Ruben to do the following agreement to his clients. Clients need to think carefully how much they want to invest in the product. Then clients have to dedicate time to build and prioritise a Backlog of requirements (their wish list).
Later, with the rate of Ruben clients can imagine how many hours Ruben will work with them (budget /Rate per hour (from Ruben) = number of hours).
With this approach, the client will have the chance to stop the project earlier (saving money) if he feels the increment of product is good enough to the market or invest more money if he considers to add more features.
To conclude, as soon as the client got the product he will know how far is from the final product and he will request more features (and change others) because of that estimate with few details is a waste of time.