Often when sitting down with a client looking for software development the first questions they ask are “How much?” and “When can you get it to me?” Many clients don’t understand what goes into developing software, and why should they, when that is my job. But it does help to know the behind-the-scenes fundamentals of software development, so that when these two questions are tackled, there is an understanding of how we answer them.
Being able to give an exact costing and an exact timeline is not possible. Although as an experienced software development company we try our best to give an answer that is close to the truth, though coming up with this answer is not as easy as clients expect it to be.
Behind-the-scenes of software development
When determining a timeline, there is a difference between effort and time. Effort is the number of hours it can take for the task to be completed. If a project takes 60 hours of effort, it can either be done by one developer over 60 hours or split between six who tackle 10 hours each. However, this timing cannot be the final answer as external elements such as loadshedding or a client’s reluctancy to provide information can stop work and add to these hours and move the finishing line.
As an experienced software development agency, we are usually able to use our experience and foresee any possible problems. But sometimes even we are surprised. The amount of effort and the amount of time to complete the project can be very different.
Know all you can about the project
When it comes to deciding on the costing of software development the type and size of the software project and the size development teams need to be determined:
- The type of the software project includes projects such as software development, software modification, software integration, and web development. Each of these would require a different team with different capabilities. Also, each project requires different effort times to complete them.
- The size of the software project is determined by how much effort is going to be needed to complete the project. A small project only involves minor adjustments or tweaks and minimal interaction with the client. A medium project should have a well-defined scope of deliverables and are standalone projects. These have only one source of data to work with and interaction with the client might include a few weekly check-ins and meetings.A large project is more in-depth and complex. You may need to integrate with multiple systems, address security, have a database component and require logging features. This could be a multi-party app that can work across various platforms. With a large project interaction with the client will include extended design meetings and milestone catch-ups.
An enterprise project is the big deal. These are built on an underlying-framework, and have rigorous security, logging and error handling. Continuous interaction with the client Is required.
- Development team size can be determined once the type and size of the project is known. Each project requires a project manager, UI/UX lead, scrum master a developer and a QA tester. Depending on the size of the project, one person can fill two roles, while in bigger projects there may be a need to have multiple people taking on the same role.
Image reference taken from Fresh Code IT
The final step
Now that you know what you need to know about the project, the two initial questions still remain. A set calculation to work out the final costing would be a dream; however, it is not always this simple. A calculation wouldn’t work in instances when one person is working more than one role or if some team members aren’t work fulltime. So unfortunately, there is no quick fix calculation.
If your project needs a team you are paying for a mix of skills. This way your team is coming to you at a value because the members are only charged out for the effort they are required to put into the project. On this note, I should add that a dedicated team is very important. With projects stopping and starting all the time it is always hard to get back into the swing of things.
An estimate can be given in the beginning by taking the type of the project, the size of the project and the amount of team members needed and comparing that to what each team member according to their skill would likely cost. It is very important to make it clear to your client that this is an estimate and there may be some changes in the future.
When working with clients I find that being open and honest is best. A clear and comprehensive outline for expected work to be done needs to be agreed upon by all involved from the start so that everyone is on the same page. Keeping clients involved throughout the process also eliminates any future arguments over time and costing, and as long as they were made aware in the beginning that an estimate is just that, then they are more open to receiving changes.