What to avoid in custom application development
You’re going down the road of custom application development. You’ve evaluated your business and looked at off-the-shelf software options available but they don’t meet your business needs (If you haven’t already, read our post on how to decide if custom software is right for your organization).
Custom software gives you more control over what you get which can lead to a better experience for your customers and your staff. You won’t need to change your business procedures to fit a pre-developed product. That said, designing, creating, and implementing a custom application comes with its share of challenges if not executed properly. Here are some of the most common pitfalls to avoid when working on a large-scale implementation and especially on custom development projects.
Changing requirements over time
Large-scale technology implementations frequently have long timelines and custom solutions can be even longer; it’s common for the scope and requirements to change over the course of the project. Your organization may discover things they’d like to add or revise during the process. If those needs aren’t communicated clearly to your development team, the final product might not meet the necessary requirements of all stakeholders or take much longer to complete.
If your development team is having a difficult time creating an accurate project timeline and estimate, it could be because you need to define the vision in more detail. It’s important to spend time gathering requirements from stakeholders across your organization, create accurate project timelines, and make sure everyone understands them. Start the project with a clear vision and create an active cadence for check-ins with your development team along the way. Discuss any changes in depth and the adjust the project timeframe as needed to accommodate.
Picking the right development methodology
Even with a clear vision and thorough requirements gathering, changes to the application requirements may occur that needed to be implemented. To help absorb the impacts of this risk, choose a team that leverages Agile and DevOps methodologies, and microservices architecture. This combination of approaches provides a foundation of continuous integration and deployment allowing for adjustments in small, containerized portions of the application without rebuilding from the ground up. Applications that are developed with containerized architecture can be updated much more easily, as compared to standard waterfall architecture; updates to one component have a much smaller impact on the global application. These methodologies will allow you to navigate changing priorities and it will also help mitigate risks and potential issues.
Risk management and timely escalation
Proper risk management can make or break any project, but this is especially true with large-scale implementations. Task estimation should be done carefully and not be taken lightly. Estimates should be reviewed regularly to avoid running behind and identify early signs of slippage.
Recognizing and escalating issues early is key because it is extremely difficult to make up lost time with software development projects. This is due to the steep rate of diminishing return when adding heads to a team past its optimal size (for more on this, read The Mythical Man Month by Fred Brooks, a classic collection of essays on Software Engineering whose insights from the 1970s largely ring true today).
Thorough evaluation of integration processes will help avoid surprises during implementation. Don’t underestimate the process integrating into existing frameworks, tool sets, enterprise landscape. This might create a situation of poorly mixing legacy technology and new technology, platform conflicts, impact choice of software/tools for the project. Data model, data migration, data integrations and proper data patterns should also be considered. Experienced development teams will match tool maturity and platform maturity to avoid conflict and start with a clear data governance strategy to eliminate risk around integration. Each project should start with full data and technology audits to ensure that that a new piece of software will integrate with legacy infrastructure.
Staffing the right team
We cannot stress this point enough. A large project needs analysts, developers in the right proportions, testers, internal team QA, architect, and executive oversight. Resources and roles should be picked carefully.
Staffing is not only limited to the development team, but the organization’s stakeholder team as well. As you move through the process, any changes or revisions will need to involve a reevaluation of tasks and regular review of the estimates. Your stakeholders should be empowered to make decisions. The business owner, product owner, support team need to interface with the project team doing the implementation.
Testing is an integral part of the application development process and one that many development teams underestimate. The implementation must be testable and have a clearly defined testing cadence with carefully selected tools and comprehensive test cases. Testing should include functional, integration, and performance test as well as comparison testing for user experience. Test automation should be considered; it streamlines the process and can be very valuable for regression tests and other use cases.
Designing and implementing personalized solutions requires the right team of people and a good deal of time. When you choose to build custom software, be sure to look for a team that has the experience, expertise, and technology to help you create the software application that fits your needs
Follow Anna on LinkedIn