The reasons projects fail are plentiful. Poor architectures can lead to applications that are extremely brittle and difficult to enhance beyond the initial feature set. Misalignment of priorities can lead to building the wrong features that don’t solve the primary needs of the end-user. Poor communication can lead to unexpected scope creep and blown-out budgets and timelines. These things happen all the time.
When preparing to take on a new software development project, you are faced with the difficult decision of selecting a vendor you will entrust to build an application critical to your business’s future. And, the stakes are high. Failure means not only wasted money but also wasted time. Below, I’ll share my advice on how to select a software development partner that you can have confidence in to build the application your business needs and set you up for success in the future.
Experience and Reputation
When you’re evaluating software vendors, you’ll want to select an organization that has ample experience running successful projects. I firmly believe that the biggest challenge in software development has nothing to do with technology. Rather, it is one’s ability to manage effective communication. An organization that has built thoughtful processes around communication both within the team and with the project’s stakeholders is much more likely to succeed. Establishing such processes takes time. It also takes experience, retrospection, iteration, creativity, and emotional intelligence.
There are a couple of ways to assess this aspect of an organization:
Websites like Clutch are a great place to read about the experiences other folks have had working with an organization. Clutch creates reviews through direct interviews they have with customers of the reviewed business.
Ask for references.
If an organization has successful project outcomes, they should have no problem providing you with references for happy customers. Ask if you can connect with one of their most recent customers. When you reach out to that previous client, ask them to rate how well the organization handled communication during the project. Were there a lot of surprises along the way? Did they actively manage risks? Did they fully understand your business’s goals and effectively leverage their expertise to ensure that they were building the best application for you?
Ask about their entire process
In addition to reviews and references, here is a list of questions I would be sure to ask:
- How do they achieve alignment within their team?
- What methods do they use to manage track and manage risk?
- How does the team prioritize work?
- Does their process allow for changes to priorities?
- How frequently will the team be delivering functioning software?
- How frequently do I get to provide feedback?
In addition to excellent communication, a high-functioning team will have extreme care for quality. Automated testing is a critical component to building a quality application. A healthy test suite provides the following benefits:
- Ensures code functions as expected
- Prevents against future regressions when the team makes changes down the road
- Leads to code that is better architected
- Serves as documentation for developers
The team can conduct automated testing at various levels and at various points during the development process. It’s a widely-accepted truth that the longer it takes to discover a software defect, the more expensive (in time and money) it is to fix. For that reason, testing code as it is written is extremely advantageous.
Ask your potential partner what their practices are around testing. Ask them to describe the forms of testing they use and what the purpose of each is. I would also ask what other practices they use to ensure quality. For example, are code reviews or pair programming incorporated into their routine? Are there mechanisms in place for sharing knowledge and best practices across teams?
Specialization in the custom software world is largely a marketing tactic. As the product owner, you’re responsible for bringing the product and industry-specific expertise to the table. After all, you’re building something unique that’s never been built before, and you should be an expert in whatever that is. If that’s not the case, you should be buying and/or customizing an off-the-shelf product.
What you really want from your software partner is for them to be experts in modern software development technologies and in human-technology interactions (aka Software Product Design).
Your product should be built using modern yet widely embraced technologies. This will help ensure that your product remains functional and easily maintainable well into the future. If you plan on transitioning development in-house in the future, this will make it easier for you to hire your development team.
Finally, design is absolutely critical to building the right features, workflows, and interactions that will allow end-users to accomplish whatever it is that they need to do simply, intuitively, and enjoyably. Design is also important when it comes to conveying your business’s brand to the market.
Support For Your Long-term Plan
Regardless of what your business’s core product or service offering is, if your building a piece of software for the business, you are becoming in part a software development company. All software requires a continual or periodic investment over time to keep it in a healthy, operational state. Also, many software products will continue to be expanded and enhanced over time as they find success in the market. If you plan to eventually take over maintenance and enhancement of your application internally, talk with your potential partner about how they will support that transition. If you plan for someone else to be responsible for long-term maintenance, be sure to discuss upfront what that will look like.
Selecting a Software Development Partner
Many other factors will come into play when selecting a software vendor, including cost, location, organization size, etc. Given the size of the investment you’ll be making in terms of both time and money, it’s crucial to select a partner you can trust to make the most of that investment. The factors described above are the ones I believe will have the most significant impact on the success or failure of the partnership.