Introduction
I’ve been a part-time freelance developer for two years. During this time, I have encountered all sorts of obstacles. Writing code can be really difficult whenever you can’t figure out why XYZ is happening. However, the most difficult part of the process, for me, occurs before I write any code whatsoever. Accurately pricing a project request is extremely difficult to do if you do not take your time.
You have new mail!
You get an email in your inbox from an eager individual looking to have the new groundbreaking piece of software developed . The individual explains what they are looking for and their description can usually be categorized into two groups:
25 word description or 12 page PDF
You need details
If you received an email fitting to the first category, your first step is to ask for more detail. You simply cannot give an accurate quote if you don’t think you have the necessary amount of information to build the application from start to finish. Yes, you can always questions as you go along, but if anything vague sticks out, ask for more information! It is only fair to you and the client that you have detailed documentation. It ensures you are paid correctly for the work that you do and that the client receives a product as close to what they were expecting as possible.
Take your time
Yes, you really do not feel like spending half an hour reading through documentation, but you have to do it! The client took the time to write you an email containing very specific details for their project request. Chances are they are serious about hiring you. Treat them as a serious client and break down their documentation.
I typically break down documentation into milestones. Find the key features the application requires and estimate the time each of those milestones will take you.
To-Do Application Request
- Task management
- Add item
- Remove item
- Profiles
- Signup
- Bio
Take this todo app for example. Looking at the app as a whole—although the app is small—it can be difficult to accurately estimate the amount of time it would take you if you’ve never done something like this. However, this extremely rudimentary documentation for a To-Do application can be broken down into two milestones:
- Task management (Time ????)
- Profiles (Time ????)
It is still quite difficult to estimate the amount of time each milestone will take. Its doable, but lets get even more precise—it will be worth it.
- Task management (30 minutes)
- Adding items (15 minutes)
- Removing items (15 minutes)
- Profiles (1.5 hours)
- Signup (1 hour)
- Bio (30 minutes) Total: 2 Hours
Now we can see that adding and removing items will probably take me around 15 minutes each. The task management milestone should be completed in half an hour. The signup and biography components shouldn’t take more than an hour and a half. Now we have an accurate estimation of 2 hours for our project.
Extra time
After my first months of pricing projects I noticed I was often spending more time on projects than expected. Now all developers know that programming is not a silky smooth road. You will encounter a bump on every road—even if its a small one. Note: You also have to take into account your environment setup and adequate planning.
I always add a little bit of extra time onto my quotes to give myself some breathing room. The amount you add is up to you, but 10-20% of the price you came up with beforehand is common.
Conclusion
A completed project, a happy client, and a sufficient paycheck is the best trio a freelance developer could ask for. Never be nervous to ask for more information and never be sluggish breaking down documentation.
Thanks for reading!
You can keep up to date with me here:
Matt (@HM04_) | Twitter
matthewmarion | Github
Top comments (2)
Very good basis in principle Matthew.
Do keep in mind that shipping quality code includes testing / iterations / deployment. And that should be reflected in your time. Client asked for working piece of software, not draft-quality code.
I definitely agree. I don’t completely forget about it. The extra fee of 20% or so usually includes items like this. Maybe I should start estimating that more accurately as well :)