Finding a good match for your custom software development needs isn’t easy—but once you link up with the right partner, it will be worth every penny and more.
Clients looking for a custom development shop are typically trying to balance the risk-reward equation. Many development firms are located offshore in places such as Eastern Europe, India, or China. These companies often charge very low prices, sometimes as low as $15 per hour.
Meanwhile, “domestic” firms located in the U.S., Canada, or Western Europe can have rates 10 times as high for what appears to be the same service. When you work with a domestic firm, your price tag is higher but you also greatly reduce your risk and you make it easier to collaborate, thanks to shared languages and time zones.
Either option can make sense for your business, depending on the scale and importance of the software project. If you just need someone to redo a non-essential website, for example, then you might feel comfortable accepting a higher level of risk since the project isn’t mission-critical. On the other hand, if the future of your business depends on the success of the project, then you should spare no expense to work with a high-quality, knowledgeable, experienced company.
No matter what kind of development firm you ultimately choose, it’s important to look for a few key characteristics when you’re on the hunt for a partner. In this article, we’ll discuss 7 traits that you should always look for in a custom application development firm.
1. Passion for Testing
Because writing a good testing suite takes time away from new feature development, many companies prefer not to devote much attention to unit testing. However, this is only setting yourself up for more problems and technical debt down the road when you encounter a persistent issue whose root cause you can’t immediately uncover.
Any new software product needs to undergo both manual and automated testing. First, the development firm should create an in-depth, comprehensive unit test suite that assesses the entire code base in search of errors and performance issues. The more complex the software becomes, the more important it is to create a test suite to verify that the software is actually working as intended.
The product should also be manually tested with the client to make sure that the software’s user experience is consistently high-quality. Clients should evaluate new features as early and often as possible to make sure that the dev firm is on the right track.
2. Effective Communication
The quality of the final software deliverable is highly dependent on the quality of the communication throughout the project. If the dev firm doesn’t understand the client’s real needs and priorities, then much of the budget will be wasted and the client will receive a suboptimal product.
Any good software development firm should set expectations for communication up front and make sure that the client is on board. At Very, we have daily stand-up meetings to get everyone up to speed, as well as weekly iteration planning meetings that are longer and more in-depth. In addition, our development team is always reachable over Slack for quick bursts of communication.
3. Agile Practices
Even clients themselves don’t know all of the details about how a software development project will play out. It’s not uncommon for objectives to start shifting within a week or two of beginning development—for example, a conversation with a key stakeholder may cause the client to reevaluate the software’s most important features.
If you don’t structure the entire project with this need for adaptability in mind, then you’ll be more likely to fall victim to the obstacles along the way (and there will be obstacles). That’s why here at Very, we use the agile and lean methodologies to make our development practices more flexible and resilient.
As a corollary to the second point about effective communication, both the development firm and the client must be transparent about issues that arise during the project. Lack of transparency only becomes more and more painful over time, and is one of the biggest factors in timeline and cost overruns.
For example, human beings have the unfortunate tendency to be overly optimistic when making plans for a new project. If integrating with an API or using a third-party tool becomes much more unwieldy than anticipated, then the dev team has the responsibility to communicate these problems to the client and readjust their estimates moving forward.
Surprisingly, having experience with a particular new technology is less important than having great engineers with experience across several technology stacks. The world of software development changes very quickly, and good developers must always be ready and able to learn how to use new programming languages and frameworks.
Potential clients should look for dev firms who aren’t afraid to get their hands dirty and start working with a new technology. However, there’s likewise a balance to strike: engineers should also have the discipline to be familiar with certain subspecialties of software development, such as machine learning or the Internet of Things (IoT).
Although different projects call for different levels of security, every dev firm should follow IT security best practices in order to make sure that their products are secure. A large majority of good cybersecurity is merely retracing the same steps, such as knowing how to protect malicious users from gaining administrative access.
Certain industries, such as healthcare, finance, and retail, have specific legal regulations with more elevated standards for protecting users’ data. If things such as HIPAA or PCI compliance are important to you, make sure to work with a development firm that has previous experience meeting these standards.
Good communication and transparency are essential building blocks for collaboration. The more the client and dev firm communicate and share information, the easier it will be for both partners to work together.
In addition, both partners should know the rules for how they will collaborate. Even though you’re paying for someone else to do all the work, clients still have obligations throughout the project. For example, clients need to go over every new software feature once the dev team has finished working on it, and then explain in detail why they have chosen to approve or reject it.