How to pin down requirements of a coding project
Well in your freelancing career as a coder or programmer you shall find many clients who will ask for a quotation for the job at hand. Many times you shall have to make a quotation for a freelance job spending hours together with no guarantee that you shall win the freelance contract. But the truth my dear friend you shall still have to give out quotations since if you don’t many others would do it and steal the contract away from you.
Sometimes in your freelancing career you will understand that some people ask for quotation to get the “best deal”. In the bargain you loose out on your precious time with no guarantee that you shall get the freelance work in question. Still if you refuse to give out a free quote you stand no chance to win the freelance job! So quotations are necessary evils that will stay in the system and you have to deal with it.
For building an good quotation you need to first look at the fact whether all the requirements are well defined by the client or not. In my freelancing career I have found that most clients are themselves not sure about their project. They do not have a well defined scope of work ready with them. Refrain from bidding on such projects in the first place. Tell the client that if the requirements are not well defined then you can’t bid on it. Offer to work with the client so that you can get an exact scope of work which will enable you to offer and estimate or quotation for the freelance job.
The steps for arriving at an intelligent and almost accurate estimate for the freelance work are outlined as under. The reason why I say almost accurate is because requirements do change during the course of the job.
Requirement analysis approach
Let us take the example of coding a website. Now that you have spotted a potential client who will offer your freelance job, your next step would be to approach the client and brief him about your freelancing services of coding and designing. During the advancement of conversation, be it telephonic or through email or chat (if you are working for overseas client) the client is bound to ask you for a quotation or estimate for the job at hand. Then starts the process of scoping the project. A few steps are generally followed for quoting for the project :-
Pinpointing the requirements for the job at hand
Breaking down the whole project into smaller milestones for accurate estimate
Figuring out how much time each milestone task will take to achieve
Summing up the time requirement factor for all milestones
Estimating overhead time estimation in case something goes wrong
Assessing the total cost of the project by putting together the above factors
Determining the requirements is sometimes a task in itself. Most of the time you shall find that the client himself does not have a very clear idea about what needs to be done. In these cases conversation and interview sessions with the client is the only way to get a fix on what is to be done or what the client expects to be done. Do call, email, chat or visit the client in case of a local client to get what he wants.
Please keep it in mind that you won’t get the full picture in single meet in most cases. You shall have to visit, chat or talk to the client multiple times in order to get the full requirements picture. In each meeting you shall find out many important points which you need to make a note of. Also after a point of time when you have a fairly good outline of the project it is a good idea to send a copy of the same to the client and getting it approved. This tells you that you are moving in the right direction.
Let us take the example of a website development project and analyze the whole thing.
Number of pages in a website
If the client wants to get a website built then you have to figure out how big the site will be. It might just be a website for a shop with just a Homepage, an About Us, a Contact Us page or an elaborate ecommerce store having 500 products with full payment gateway integration. It’s anybody’s guess that the pricing for both these sites will be different. You also need to know whether initial data entry have to be done by you or will your client get someone else to do it. Like for an ecommerce website the entry of 500 products is a big job.
Graphics requirements of the job
Make sure if you need to use stock photos and graphics while building the website. Also make sure that your client is going to pay for the stock graphics arts when you buy stock photos or vector graphics. If he doesn’t then you have to include that in your estimate.
Custom built graphic requirement
Make out how many buttons, icons, navigation bars, tool bars you have to design or code. Also take in account custom menus. If you need to build custom menus then take that into account and make an estimate of the time required to build it.
Does the site require flash or is it design oriented?
Some people do have a lot of fascination for flash oriented websites. Though flash oriented websites are bad from the SEO point of view but still some people like full flash websites. Such websites will definitely cost more when compared to a plain vanilla HTML based website. Also if flash needs to be integrated with database it becomes even more complex.
Forms and interactive quizzes
Find out if your client needs forms in his website. If he needs a simple contact us form with name, city, country, email, phone and comments it’s no big deal but what if he needs an interactive or a form with lots of fields then the story becomes different. Find out about it while pinning down requirements for the website.
The very deceptive photo gallery requirement
Sometimes a client casually says that he needs a photo gallery to showcase his company photos on his website. Do make sure to understand clearly what kind of photo gallery he is looking at. Is he looking for a simple 5 thumbnails which enlarges on clicking or is he looking for a flickr like fully functional photo gallery with photo upload feature from the backend?
Is your client looking for a database driven application?
If your client is looking for a static website then it’s one thing but if he is looking for a full fledged social networking website then it’s a different ballgame altogether. Dynamic works are difficult to estimate and you need to figure the system requirements or scope of work first before you can land up in a definite estimate. At least try to assess the number of screens to arrive at a rough estimate. Then try to make an intelligent guess about the database structure that might be required. Also try to figure out the number of queries you need to write and the backend or admin panel complexity of the application in question.
Who takes care of domain registration and hosting?
It is best to ask the client to register a domain for you or else you can do it yourself. So this is yet another factor for planning a quote or doing a requirement analysis. Freelancers should ask this question in the very beginning because say you are doing a coding work in PHP. You should have the hosting information from the beginning. Some servers use PHP 4 some use PHP5. There are compatibility issues which surface at implementation stage since the developer might have worked on a different platform. After you upload the final work to the client’s server you find some features of the dynamic website not working. To fix this you might have to go over the whole coding and make huge changes. This will throw your work schedule off gear and you might loose money. So e careful about this.
Summary
Requirements of a project also change during the course of the work. Website clients are known for the bad reputation of changing requirements during the execution of the project. You should prepare your quote or estimate accordingly and mention it explicitly that the quote is for the requirements outlined in the quote document. Any extra work or changes will be billed separately as per actual. While you chat or talk to the client it is necessary that you mention this a few times so that the client understands this well. So the bottom-line is be specific, elaborate and as detailed as possible while pinning down your requirement document. Happy freelancing!
links


