How to make Web App Estimate which will Suck Less
When you develop a Web Application for a client you need to estimate the project. Your client needs to know how much time and money will take to bring his idea to life.
Most of the time your estimate will be far from the real unless you have dozens of apps launched. As a result, it will create a bunch of frustration for both parties.
I guess that I got what was the reason for wrong estimates and how to solve it. To be honest, I still sometimes suck in my estimates, but I think I am getting better in this. So I want to share with you how to avoid this problem.
Why correct estimates even matter?
As for the developer, incorrectly estimating project volume can result in being underpaid, overworking and even losing a great client.
From the client’s side, they won’t have a real understanding of how much resources are needed to launch an app. At very least they will have a feeling of stress and frustration because of unmet expectations. In the worst case, the client will run out of resources before finishing an app and stuck in the middle of nowhere.
As you see nothing pleasant for both parties.
Why Estimates in Development sucks and what to do about this?
As I find out from the experience, the major cause of braking deadlines is — not taking into account some features. I make this mistake when I try to estimate a project as a whole. In this case, it is very easy to miss some part of the app. While estimating a small task won’t be a big deal.
The feature you will miss won’t be so obvious and will be hidden under the surface. When you have experience in the development of a particular type of apps, it will be easier for you to set a more precise deadline.
But there are times when you need to build a type of app you haven’t build before.
In this case, you need to try to divide the app into the small building blocks you already familiar with. The smaller the blocks the better. This will help you better understand the project, and avoid not taking into account some important features.
As I found out even using this approach, I wasn’t able to set deadlines correctly. So, for now, I am adding 30% time to my initial estimate. Since usually things don’t go as they are planed :) Yet, I didn’t have any case when I overestimated the project.
Process of development for better estimates
Don’t make a mistake of jumping right into the development. First, you need to spend more time on the planning of the application. This will help you to avoid setting unreal deadlines and save you from wasting your time.
My process of the building application looks like this:
- Understand an Idea
- Audience Research — understand who going to use the app and what are their needs.
- Market Research — explore what competitors offer, how the app can stand out from the competition
- Define the most important features of the app to deliver value for the target audience and stand out from the competition.
- Creating a written document which represents an architecture of the application
- Designing
- Development
- Iterations, improvements
Common Building Blocks of the Web Application
To help you with your estimate, below I wrote a list of common things where the time goes when building a web application.
Authentication
This is a common part of most applications. If your app will include Authentication also think about these parts of the development.
Backend API for:
- Authentication
- Registration
- Password recovery
- Email Confirmation
Front end:
- Sign up page
- Log in page
- Password Recovery Page
- Email Confirmation Page
Email Service
Email service also an important part of the web application. If you have authentication in your application you by default will need to have an email service. So take this module into account when developing an app.
DataBase
If you need to store some data in your app, you will need to spend time setting up a database. Also, you will spend time on the database architecture design.
Backend API for CRUD Operations
To access and manage data from the database you will need to develop backend API. Usually, you will need to develop functionality like Creating, Reading, Updating and Deleting for each data entity.
Image Processing and Storing
Don’t forget about image processing. Services like Amazon S3 simplifies the process of storing the images. But don’t forget about the front end part. In some cases, you need to let user crop, scale or rotate an image it, which can take quite some time to develop.
Deployment
Deployment of the application on the production server takes a lot of time unless you already have proven ci integration in place. For me, deployment of the app is still a huge time sucker. So include time for deployment in your estimate.
Payment System
Take into account the time necessary to integrate the Payment System. For now, the most popular one is Stripe.
Admin Panel
Don’t forget that in most cases you will need to develop an Admin Panel for managing your application.
Front End
These are common parts of the user interface of the web application
- Thank you Pages
- Form Validation
- Photo Editors
- Mobile Version
- Modals
- Notification System
- Data Tables
Thanks for reading! :)
I am Vova Pilipchatin, a freelance Software Engineer and Web Developer.
If you are enjoyed this article, please follow me on Twitter.
There I share what I learn about how to launch successful SaaS projects and build a freelance business :)