This is a common question posed by product owners is. The quick answer is: it varies!
Developing a piece of custom software depends on what the final product will do and how it will be used. However, in our experience custom software projects typically take anywhere from 4-9 months, from inception to completion of testing and release.
While that may seem long to some people, the truth is that a well-designed and durable software solution requires careful engineering in order to guarantee it is sustainable and extensible. The following sections will cover the details involved in custom technology development and why it might take longer than you expected.
The Discovery Phase
The first phase in the custom development process usually takes 2-4 weeks and is focused on designing the product. Much like a construction project, you have to start with a thorough engineering plan, build the structure, and then complete the project in compliance with your product’s requirements.
We call this The Discovery Phase, as it provides the developers with a clear vision of what to build and how to build it. Emphasis is placed on defining the core features and the user’s requirements. During this phase, you’ll work with your development team to establish the following:
- System requirements and/or core features
- End User definitions and their experience with the application
- Various interface requirements
- Initial scope of the project – what will be built in the first, second, third, etc. sprints
The length of this phase is variable and highly dependent on the availability of the client to answer questions and make decisions as the development team designs the plan. At the end of this phase, both the developers and the client will have defined the architecture of the new solution. It’s critical to thoroughly work through this phase to minimize surprises during the building and release phases later on.
The Development Phase
With a blueprint in hand, development of the product can be started and this will take around 3-6 months. This is The Development Phase, and just like construction projects it needs a general contractor to coordinate craftsman. In this case, project managers are needed for custom development projects to keep the engineering team organized and on track. Additionally, there are crucial roles for the team – software developers are needed for writing the code, technical architects for designing the framework, and designers to help with user interface and/or user experience. This phase culminates with a fully built product, even if it’s lean, that meets all of the requirements of the blueprint designed in the first phase.
Before the actual building can begin, the project manager will dedicate 3-4 days to planning the team’s schedule, assigning tasks to sprints and backlogging any tasks that aren’t critical to the first release. The Project Manager is also in charge of identifying risks and mitigating them to keep the project on budget and on time.
Some of the risks that a project manager might monitor include:
- Requirement changes or scope creep, after the project has started being built
- Timeline delays resulting from lack of responsiveness from third-parties, such as not providing critical documentation, credentials, etc.
- Fuzzy scope line items, requirements or system design items – these will make it harder for development to build and will require additional time for clarification
- Too many cooks in the client kitchen, i.e., unclear direction from the stakeholders
- Bad data from an existing product or errors in the migration of data to the new product
The first item to be built is a structure, or framework, to determine which technologies will be used and how they’ll work together. This task is the responsibility of the technical architect and is typically accomplished in 1-2 weeks, depending on the complexity of the system integrations or if any unusual technologies are incorporated.
Once the product design and architecture are finalized, the longest phase begins – the actual coding of the project. This will usually take around 3-6 months. If the client needs the product to be built faster, additional developers can be added to the team to tackle the tasks. However, there’s a tipping point in adding additional developers in that too many on the team will result in the project’s timeline actually growing longer because the management of the larger team will be more time intensive.
The Compliance Phase
The last phase in the process of custom software development usually takes 3-6 weeks and involves testing and comparing the final product against usability and coding standards. In construction terms, this is analogous to the final inspections for safety code compliance, the creation of a final punch list, and the completion of all remaining tasks.
The types of testing needed for your product will vary, but all projects should, at a minimum, undergo the following:
- A coding review ensures that the code was written for growth and extensibility. Inspecting the code provides the client a chance to see if the developers were following well-known styles and protocols and if the final product will be stable, easily managed and/or ready for future updates.
- End-to-end testing involves using all of the features of the application, as it would be used by the final users. This test also provides the developers an opportunity to see how the different modules of code and integrated technologies work together. During development, features are tested in isolation, but end-to-end testing brings all of the pieces together to ensure they function cohesively.
- User acceptance testing (UAT) is a detailed inspection by the client to make sure the final product meets the initial requirements; think of this testing like a final walk-through on a construction project. The client is also looking for things the developers might have missed during their testing.
Beyond the three tests mentioned above, the client may elect, or the developer suggest, that additional tests be performed. These may include testing the application on different computer operating systems, on different devices and/or with different web browsers. If the final product will be used by many different people at the same time, or if it will process a lot of data, then additional testing of load times and high-traffic performance should be performed to ensure the product will remain stable. A final type of electable testing is checking to see how it will integrate with third-party systems and handle various situations, like a timeout, invalid data value or corrupt file.
In addition to the application’s core features and required integrations, the overall size of the project will impact the length of development. We consider a project to be large and complex when it has the following:
- Admin portal and user application
- Usable on different devices (desktop, tablet, smartphone, etc)
- Works with third-party systems (CRM, ERP, POS, etc.)
- Data migration from an old application to the new product
- Data warehouse is required
- 25+ screens in use
Measure twice, cut once
Think carefully about your desired outcomes before you begin a custom software project. Spending extra time to plan and design the product will yield a smoother development process. It’s wise to bring in a team to aid you in this endeavor and help you answer all of the questions necessary for a successful project.
Clear Launch is a technology services company dedicated to building technology solutions that ensure greater business success. We’ve aided dozens of companies in the pursuit of custom software development. Contact us to discuss engineering your new project and guiding you through the product development process.