What We Look for in a Client
When it comes to developing custom software, the success of a project often hinges on how well both the software development team and the client can collaborate.
Because of this, there are some of the key qualities we look for in our clients. These are qualities we also bring to the plate, and we have found time and again that prioritizing them leads to not only a better process for all, but in fact, more performant software and better software longevity.
We look for clients who:
- Have a high level of empathy and kindness and are generally pleasant to work with
Collaboration is more effective and enjoyable when everyone involved is respectful and supportive. By fostering a positive working relationship, we can address challenges, resolve conflicts, and create an environment that encourages open communication and understanding. - Understand the significance of what they are undertaking in choosing to develop custom software
Developing custom software requires a significant investment in terms of time, money, attention, and ongoing maintenance. We seek clients who truly understand what they are taking on, not only in the initial design and development process, but in ongoing maintenance as well. By recognizing and appreciating the commitment required, clients can better align their expectations, make informed decisions, and actively participate in the software development process. - Understand that all budgets and timelines are estimates and are subject to change
Unlike, for example, building a house, the software development process often involves plunging into unknown territory and creating and combining elements of system architecture that haven’t been combined before. And with house building, even with as many known variables as there are, and even with the number of times it’s been done before, construction projects still rarely hit their targets for timeline and budget. Building software has an even steeper uncertainty curve: it’s like building a house on unexplored terrain with new and in-flux building materials and blueprints that change as you zoom in on their details.
While we strive to provide accurate estimates for budgets and timelines, it's essential for clients to understand that these can change based on unforeseen circumstances, evolving requirements, or technological complexities that can impact the original plans.
In fact, one of the most common reasons we encounter for change is that a client will change their mind about how they want a feature to work. In most cases, this is a good thing, because as we get deeper into building a piece of software, clients usually start to figure out better ways to achieve what they want.
It’s also worth noting that engagements based on fixed-price statements of work have just as many unknowns. A “fixed price” is an illusion designed to create a false sense of security. The reality is that these statements are inevitably amended many times throughout a project, because budgets and timelines change no matter what. See Why We Engage Almost Exclusively on Retainers.
We prefer to be transparent in how we approach the uncertainty inherent in software development, and we value clients who can meet change with flexibility, adaptability, and a willingness to collaborate with us on finding the best solutions within given constraints. - Have the financial, time, and attention resources to build good software and maintain it long-term
Building good software and maintaining it long-term requires time, attention, and financial resources. We seek clients who can allocate these resources effectively.
Software development is a team effort: we will need a client’s input and feedback every step of the way. While it would be great if it were possible to just hire an agency, wait a year, and then receive software exactly as imagined, the truth is that ongoing collaboration is necessary. We need to communicate with our clients regularly to ensure that what we are building matches their vision.
Sufficient funding, dedicated team members, and the willingness to devote the necessary time and effort are all crucial for successful software development. By having the resources for the scope of a project, a client can position themselves for long-term success and growth. - Are building a product that seems truly useful to people rather than pursuing a fad and trying to get rich quick
Our team aims to create genuinely useful products. We are committed to partnering with clients who prioritize creating value for their target audience rather than jumping on a trend or looking to make a quick buck. We’re most inspired and committed to working with clients who seek to solve real problems.
When we choose to work with a client, we are choosing to build a strong and enduring relationship between our teams. Our goal is to forge an authentic, collaborative, and mutually supportive relationship that results in the best possible outcome for the software and our client’s business.