Well, for sure that's right, but as I ask if this wasn't clear from the beginning that this feature should be implemented I very often get told: "Yes, but I thought..." And that's the point when I really start thinking... Did you ever think about what you do or did you plan this project properly??? And the answer is NO for multiple reasons. So, let's take a closer look on how to analyse, plan and project a client's solution and why it's important to do for successful development
Do you understand your Client?
First of all, it's most important to understand that your client is not a programmer, developer or CMS specialist. If he were, he would do the job by himself. So listen to your client's ideas and explanations carefully, don't expect him to describe everything the way you'd expect it from a professional. He will tell you his needs in a simple and very often "wrong" way. Let's make a small example. Your client tells you: "I want to have two versions of the website. One for selling clothes and one for selling shoes". Now it's your job to analyse if he really wants to have two separated websites (we assume he does not) or if he just wants to change the style of the site to change according to the part of the website where clothes or shoes are sold, which will just end up in the use of two different templates or CSS styles.
Well, this is a very basic example, but you can imagine where this might end up if we added some more complexity. Need an example? Well... here we go: "I need a facebook button." you are told. OK, so far. But... what exactly is meant and wanted? Does your client want a global facebook "share" button to share the website with the main URL? Or does he want a "like-it" button for his facebook fan page? Or, assumed it's our clothes and shoes seller, does he want to share each product with individual "share" buttons and do you want to insert any of those buttons manually? Got the idea behind what it means to understand your client? It's important!
Do you have a Concept?
As you now have a clue on what your client really wants, you might develop the first ideas and concepts. But... stop! As professionals we must analyse if things are possible the way they were mentioned and discussed to develop a solid product and solution. This is where your plan comes up. So first, write down and merge everything you discussed with your client and sketch your first ideas, each point, on how you want to realize it. This is your conceptual plan for the project. It ensures you don't forget anything later or run into difficulties, and it builds the basis for the development process. But this comes later... and yes, professional development also means a lot of paper work.
For each point that you don't know how to solve, or you are not sure on details, start your evaluation there. Note any dubiety, classify and sort code, components or extensions you might want to use, and review the possibilities on your doubts and requirements. This gives you a good overview on what to use and how to connect everything so it works seamlessly and is integrated. Based on these facts that you now have collected and cleared, you are able to write your final concept.
How about a Project?
For sure you want to tell your client now how much everything will cost and how long it will take to be finished. So it's time to start to project everything. You have collected all you need with your concept, so start with a timeline for your project. For each phase your timeline has, calculate three times the time amount you might have in mind. As a small example: You think the screen design will take two or three days. Plan nine or ten days. It's a fact everywhere that additional effort will appear as new ideas, or wishes will come up, so try to stay on the safe side.
Also, be clear and note the responsibilities if you work with different people on that project. Who does what, and does he agree with the durations you set, and what does this cost you, as well as what do you want to earn with this particular job. Finished? Now you can calculate the project on time and money and create the offer.