Choosing the Right Software Development Partner
Finding the right custom software development firm for your project is a tough job. Even a thorough RFP process won’t save you if you’re not looking for the right things.
Software projects are notorious for being late, over budget, and frustrating. Why? Making useful, valuable software products takes a lot more than technical know-how. Your team also needs good project management, experienced product development, great people skills, and more.
So how do you find a firm that has all these skills? And understands your industry? And works well with your management structure? And offers the kind of support you need down the road?
Whether you’re writing a software development RFP, calling a list of recommended firms, or doing research for your procurement team, the principles are the same. The most important thing you can do is ask the right questions. And that means asking about the company first. The details of your project can come later.
Evaluate the Software Firm First
I’ve been working in custom software development consulting at Atomic for 15 years and have helped hundreds of companies evaluate us as a potential development partner. Many are entirely focused on their project and want us to lay out a detailed approach—based on very limited information.
Before you ask for this kind of information, I recommend evaluating the firms themselves. Ask the questions below (and in subsequent posts) and choose your partner based on the strength and fit of their response. Then work with that partner to create a detailed engagement plan.
Were I in your shoes, there are four things I would look for in a software development partner:
- Longevity: A company that is going to be around to support me in the years to come
- Great People: Skilled, qualified people assigned to my project
- Experience: Relevant, organizational experience solving a problem like mine
- Engagement Management Process: A process and tools that allow me to make decisions on scope and budget throughout the project
This post focuses on longevity, but in the coming weeks, I’ll discuss the other areas, as well. The entire series will give you tools and insider information from the perspective of a consultancy, with a goal of helping you evaluate potential partners at a more foundational level and eliminate wasted time sifting through unnecessary details early in the evaluation process. Please feel free to directly use this content in your own process.
Below, I’ve outlined the questions I would ask each of the firms I’m evaluating. I’ve also included my experienced perspective on what kind of answers I’d like to see.
Evaluating Longevity
I want to pick a partner that is going to be around for years to come. I want my partner to be able to help with future work and maintenance if necessary.
I’m going to be investing time into this relationship. After my first project, my partner will know my business, and we will have a strong working relationship. I want the investment in this relationship to pay dividends when I work with my partner on other projects.
To get a better idea of a potential partner’s longevity, I’ll ask about the following criteria.
1. How many years have you been in business?
This question helps me gauge my interpretation of other questions related to longevity. A younger company is riskier to work with when it comes to longevity. A company that has been in business for many years has already demonstrated longevity, so I can ask additional questions about the work they’ve done to ensure continued longevity.
2. How has your company grown in the last 10 years (or applicable time frame)?
I’m interested to know if my potential partner has demonstrated the ability to mature and grow so they can stay competitive in the market and serve their clients better. Evidence of past growth is a strong indicator of continued growth and future market relevance. I’m equally interested in learning about growth in client-facing services and skills and internal, operational processes.
Growth in people shows that the company is able to attract and retain people. I want to see healthy growth, though. I believe sustained organic growth over 30% in a services company is a smell. Scaling a professional services business is hard. A professional services company needs to be selective in hiring and intentional about on-boarding and training. Growing too fast can result in dilution of culture and attrition of people.
3. What is your company’s strategic direction?
I might expand on this question by asking, “Will you stay focused on consulting? What services do you plan on providing in the next five years? Will you be growing in size?”
I’m interested to know if my potential partner is going to stay focused on consulting and custom software development. It’s not uncommon for service companies to try and transition to becoming a product company or extend their value chain into other services like strategic consulting or managed services.
Knowing a company’s plans for new services helps me know if I might be able to work with them on additional needs I have. It’s valuable to me to have fewer partners that can offer a wider set of services related to a common need.
There’s a balance between having a wide value chain and losing focus, though. A company’s growth plan for new services will reveal how focused they are and if there might be risks related to shifting the focus too far from their core.
Plans for growth in size will help me know if the company will likely be a stronger player in the market or if they might be taking risks due to accelerated growth. Growing too fast can lead to poor hires, poor culture, and a distracted management and leadership team. It’s extremely hard to scale a professional services firm, and it’s a bad sign if your potential partner is trying to grow quickly.
4. What is your company’s ownership structure, and how is your company planning for succession of owners and key people?
This question helps me understand if there is risk related to the succession of key people.
Big companies care about this question and commonly include terms in their master services agreements that put warranties or restrictions on significant changes in ownership or control.
Many companies do a poor job of succession planning, but changes in ownership or key people can drive significant changes. For example, what if your competitor acquires your software development partner? What if your partner’s owner sells to private equity and key people start leaving because they are afraid of a culture change?
I want a company to demonstrate a plan for ownership succession that will preserve its culture and values. I want to hear how a company is investing in a talent pipeline for internally hiring future managers and leaders.
5. Over the past three years, how has your revenue broken down by industry?
This question will help me see if a company is overly weighted in a small set of industries.
I believe strong consultancies work in a broad set of industries. Serving many industries reduces financial risk stemming from demand volatility in any given industry.
I’m not too concerned if I don’t see experience in my industry, as long as the company has worked on a project of similar complexity. Innovation can come from applying lessons learned in other industries to my problem or opportunity.
6. Over the past three years, how many clients did you serve per year, and what percentage of revenue was your top client?
This question, in addition to my next question about historical revenue, helps me see if a company is too dependent on a single client or small set of clients. Being dependent on too few clients can represent financial risk if those clients disengage. As a compounding risk, such dependencies usually mean that a company doesn’t have a fined-tuned process for gaining new work.
7. What is your company’s historical revenue for the last 10 years (or applicable term)?
Seeing a company’s history of annual revenue shows me two important things:
- Annual revenue and number of clients per year (from above) helps me understand the size of the company and likelihood of an unhealthy client dependency. I can see if there is financial risk from losing a client suddenly. For example, if a small company working with three clients loses a client suddenly, the impact can be very high.
- I can see if the historical revenue is smooth, has an interesting spike or dip, or has a sawtooth pattern. I like to see smooth revenue patterns, as they usually mean intentional, disciplined growth. A spike or dip can be a conversation starter that might lead to me learning more about how a company handled an interesting situation or opportunity. A sawtooth pattern is a bad sign for me. Sawtooth patterns can imply things like staffing up quickly to win a project or being stuck in a vicious cycle of growth and attrition.
8. What contingencies do you have in place to manage cash flow issues?
It’s a sign of maturity in risk management for a company to have contingencies in place to navigate short-term cash flow issues.
I like to hear that there is a process in place for using cash reserves, a line of credit, partner capital calls, etc. I’m not interested in knowing absolute dollar figures, rather a process and source of cash framed as being able to support the company at X% of team utilization for Y months.
Evaluating for Great People
Defining “Great People”
I would look for two big things:
- Generalist product developers – I want to work with people who specialize in software product development and who take a generalist approach to technology. This is not the same as specializing in a certain software language/tool/technology. Being flexible across technologies means my partner’s team can use the best tools to help me meet my goals.
- Engaged, experienced consultants – Custom software projects are filled with tradeoffs and value decisions. I want to work with people who care about helping me find smart answers–people who are capable of meeting product development challenges and guiding me through the project.
Asking the Right Questions
There is a wide range of talent in the technology industry. However, talent is difficult to measure, especially when you want to hire a team that is capable of working in many technologies. To learn more about my potential partner’s people, I’d ask seven questions.
1. Please describe a project that falls into your company’s sweet spot. For such a project, describe the team members and expertise they bring. Are team members selected based on the technology used in a project?
I like the open-ended nature of this question because it lets my potential partner highlight what they do best. I can then determine if my needs match their skills.
I want to hear that my potential partner mostly engages in custom software product development projects. This type of partner is different from a firm that mostly focuses on large e-commerce or marketing websites and occasionally takes on custom product development projects.
I want to hear that the team is composed of developers, designers, testers, and someone managing the product development effort (Atomic calls this person a Delivery Lead). That management role is something I’m particularly interested in understanding. I want a team member with product development expertise who can help guide me through the constant series of options and tradeoffs that come with software product development projects.
I want to hear indicators that the developers are software generalists and full stack developers. This means they can write code from the user interface layer all the way down the database layer and backend services. I want developers that can work across different technology stacks like mobile and web.
I believe smart generalists are more valuable than specialists when it comes to most software development projects. A generalist can better design, and work across, an entire software system or application. A generalist will seek to create a well-designed architecture instead of making their area of the codebase simple only to push complexity into another area where someone else is responsible.
It’s a red flag for me to hear I’m getting a team of specialists including a blend of specialized mobile, web, front-end, and back-end developers.
It’s also a flag for my potential partner to recommend a specific technology based on their company’s relationship with a platform provider or focused professional training of their team. I want my potential partner to pick the best technology for my product needs.
Overall, my questions are a bit of a ruse, as they seem to indicate that I want team members who specialize in a narrow set of technologies. In reality, I’m looking for reassurance that my potential partner will staff my project with technology generalists who have a blend of career experience levels. Such a response helps me understand that my potential partner shares my belief in the value of software generalists.
2. What percentages of your overall headcount are employees and subcontractors?
I like to know if a company is weighted toward employees or subcontractors. I believe it makes a strong statement of the company’s and employees’ long-term commitment when the subcontractor headcount is low.
Companies can grow a culture and hone their process when they have long-term employees. An employee-based team can be more engaged and have higher professional standards when they share goals and a culture.
An employee-based team is an indicator that the company doesn’t quickly staff up with subcontractors to take advantage of a project opportunity. A willingness to staff my team with employees also says they have confidence in my project’s success, since directing employees to focus on my project may mean turning away other opportunities.
3. What’s your process and criteria for hiring employees and/or subcontractors?
I like to know that my potential partner has an established method for this task. A lack of hiring process or standards represents a risk of hiring-under qualified people. It also indicates that the company’s management team may not take quality or risk management seriously enough.
I’m suspicious about a heavy use of subcontractors, and this question allows me to see how a company mitigates the risk of hiring an under-qualified person (if they do use subcontractors).
I’m interested to know about the employee hiring process and criteria because it demonstrates the baseline of qualifications for someone to start working at the company. For instance, is the company hiring people directly out of coding academies, or do they prefer hiring individuals with industry experience or college degrees?
Does the hiring process focus on behavioral and emotional intelligence skills in addition to vocational skills? I want to see evidence that my potential partner is hiring qualified software generalists with experience in software product development.
I also like to know who’s involved in the hiring process and how decisions are made. Are employees hired based on the judgement of a single manager, or are there many team members involved in the process? I believe hiring decisions are better (and on-boarding new employees is more successful) when a broad cross-section of the existing employee team is involved in the decision.
4. How does the experience on your team break down? How many people have less than two years, two to five years, five to ten years, or over ten years of experience?
Due to the ongoing mix of active and inbound projects, scheduling and committing teams to projects can be dynamic. It’s silly of me to ask for a guarantee on specific people, especially if we are early in evaluation or proposal phases of developing our relationship.
What I really want to know is that I’ll have the right blend of experience levels on my team. When I see that the company has a good range of experience levels, it indicates that my project will likely get staffed with the right blend.
I like seeing junior team members in the mix because they are hungry to learn and have lots of energy to pour into their new careers. The junior team members can stay focused on hammering out features. Seeing mid-level and senior team members tells me the team has the experience and wisdom to navigate complex product development projects and make proper technology, systems architecture, and application architecture decisions. Seeing a blend of junior and senior team members is an indicator of an engaged team that’s actively participating in teaching and learning.
5. Tell me a story or two about why you have let someone go from your company.
I like to hear stories about this because it tells me that the company has standards for what it means to stay on the team.
It’s not uncommon for management teams to live with bad team players or under-qualified people because they don’t want to engage in difficult conversations about performance. Companies also allow poor performers to stick around because they would rather deal with the “devil they know” than expend the effort to let someone go, experience a temporary capacity deficit, and do the work to hire someone new.
However, keeping poor performers around is toxic. The team suffers in silence, and everyone waits for management to take action. Top performers eventually leave because poor performance is implicitly deemed acceptable, and they would rather work with other top performers.
This is not a situation I want with a potential partner. I want to know that the company will do what it takes to show that poor engagement isn’t acceptable, fixing hiring mistakes when necessary.
Hearing how someone was let go also tells me about the company’s culture. I want to hear that employment transitions are done with compassion and a desire to truly help an employee find their best fit.
6. How do your people engage in professional development? How do you support your people’s professional and career development?
Continuous professional development is an indicator of engagement and ongoing maintenance of professional qualifications. Technology moves quickly, and I want a partner that keeps up with industry trends and capabilities.
I want to work with people who are curious, love to learn, and keep their skills sharp to remain competitive. I want to work with a company that has expectations and supports (through cash, time, or both) continued professional and career development.
I want to hear that professional development is spread across a variety of domains like technology, design, business, consulting, and product development, and that it also has a wide focus. It’s a flag to me if my potential partner believes that getting everyone certified by Microsoft or Amazon is the complete answer to professional development (although it can certainly be part of the answer).
7. How do you know if your people are engaged? Are you using any tools or techniques to measure engagement?
I believe engaged people are more innovative and productive and will care about my success. It shows a certain level of sophistication for a company to care about, and measure, employee engagement.
I also want to hear if my potential partner is using any tools or techniques to measure the engagement, cultural health, happiness, etc. of is employees.
Evaluating Experience
I want my partner to have relevant organizational experience with projects and companies like mine.
I would share as much as possible as I could about the vision for my product or project, the complexity of my company, and the expectations I would have from partners. Then I’d ask the three questions below to help me evaluate my potential partner’s fit based on their experience.
1. Can you provide three examples of how you navigated the contracting and engagement process with a company of my size?
I want to hear stories of my potential partner helping companies like mine find success. If my company is large, I’m interested in how my potential partner has worked through software contracts in the past. Are they able to accommodate my company’s payment terms and insurance requirements?
If I’m a small company, does my potential partner have a master services agreement and statement work terms? I like to see these standard materials in place so I don’t need to invest in creating my own.
If I have a lot of stakeholders, how will my partner help drive alignment? If I’m a product manager with a high degree of autonomy, how will my partner act as my trusted guide?
2. Do you have experience in the technical domains I plan to use?
I favor working with seasoned technology generalists over specialists because generalists understand higher-level patterns and know how to apply the best technology for a specific problem. Specialists tend to apply their specialty to any general problem.
That said, I want my potential partner to have experience with some technologies in the domain I plan to use. For example, if I’m building a mobile application, I’d like my potential partner to have mobile development experience.
Maybe I want to use a cross-platform mobile technology that my partner hasn’t used before. I don’t think this is a big deal; a good generalist service provider should be able and willing to work with my preferred technology stack. It’s more of a risk to hire experienced web developers with no mobile development experience to build a native mobile app or vice versa.
3. Please provide three examples of how you have created products or worked on projects of similar complexity to mine.
Many people naively believe that their problem is uniquely complex due to industry or knowledge domain. But while it’s true that every industry has its own jargon and knowledge domain, the underlying problems that technology solves are common to many industries.
I believe it’s a good idea to hire a generalist development partner with experience in many industries. They may help me see solutions from other industries that I wouldn’t be aware of otherwise.
It’s not important that my potential partner has solved a problem just like mine in my own industry. What I really want to know is if my potential partner has worked on a project of comparable complexity.
For example, if I want to create a cloud-backed mobile application with a consumer and administrative web interface in the health and wellness industry, I’d be excited to see that my potential partner had built a similar solution suite in the financial industry. I’d rather see the experience with technical complexity than experience in the health and wellness industry.
The Engagement Management Process
Elements of Engagement Management
As a client, I want to create the most value for my budget. I’d like to have some level of assurance from my potential partner that my project goals can be met within my budget.
Custom development is ripe with risks. The devil is in the details, and everyone is at the point of maximum ignorance at the start of the project.
Therefore, I don’t expect a development partner to give me a fixed quote or bid on a project. Fixed quotes are more appropriate for pre-developed software purchases or subscriptions. Instead, I’d rather see a development company’s hourly rate or a per-week rate for a given team.
I’ll also want to know if my potential partner has worked on projects of similar complexity (as discussed in Part 3 of this series), if they believe my budget is adequate to achieve my goals, and what processes they use to manage scope and budget. I’ll ask the four questions below to help me evaluate my potential partner’s engagement management process.
1. Given the high-level description of my project, how will you determine if my budget adequately funds my project?
I want to know if my budget is in the ballpark to meet my high-level goals. I know my project will include tradeoffs, and I’ll always have more ideas than budget. But I want to make sure I can fund a minimum level of success that generates value and helps me secure future investment.
I’ll want to see my potential partner apply methods that help me validate my budget. I like to see budget models and validation methods, such as applying historical project data from projects of similar complexity (as discussed above), bottom-up estimation of big chunks of work, and high-level estimation of a team structure and hours over time, based on their experience.
It’s important for me to understand their budgeting methods so I can collaboratively shape the budget target and possibly compare with other budgeting work. Having a budget model gives me much more insight and early management tools than getting a simple budget figure as a quote.
2. What is the structure of the team you would assign to my project? What are roles of the team members? What’s the average weekly cost for the team?
This question helps me understand my potential partner’s assumptions about the capacity and skills required to do my project right. Seeing these details will help me collaboratively tune the capacity and skills needed.
For instance, my potential partner could be under or over-allocating project management (or delivery lead) capacity. Perhaps my potential partner budgeted for only a half-time project manager, but I believe my project needs a full-time person based on the stakeholder communication and alignment work I’d like them to take on. Or perhaps I have the capacity to serve as the project manager on this project, and I’d like to remove those hours from the budget model.
Having a grasp of my potential partner’s average weekly team cost and capacity can help me shift my mental model to thinking of the project engagement and team as an internal team and considering a pro forma profit and loss model. I can extrapolate the monthly expense of the team, consider how much value the team can likely produce over time, and determine when milestones need to be hit.
Instead of thinking of a fixed set of scope for a project budget, I can start to think about having access to a delivery pipeline over time. I’ll look at how I can incrementally produce the most value, which will eventually exceed the cost of the team. This model of thinking provides a timeline and value structure for better scope management, risk management, and prioritization.
3. What is the basis of your billing model?
I want to know the basis of my potential partner’s billing method, as it’s at the core of their budget projections.
Many custom software development companies use an hourly rate or charge by the team week based on the type of team:
- If my potential partner uses an hourly rate, I’d like to know the rate and whether that rate varies for different team members.
- If my potential partner invoices by the team week, I’d like to how the underlying team effort is managed and how many hours I’m likely to get from each team member. Being able to calculate an effective hourly rate from a team-based billing model allows me to compare with potential partners who have an hourly billing model.
My personal preference is to have a team that bills by hours worked and has a common, blended rate for all team members. I believe getting charged for actual hours worked is the most fair way for a partner to charge for their time. The blended rate encourages flexibility and doesn’t create any disincentives for the team to fluidly self-manage task assignments. For example, a designer could take on some project management responsibilities without anyone worrying about how slightly different billing rates might impact the weekly cost.
4. What is the process you use to track scope and budget and to help me make tradeoff decisions early, so we can effectively manage the project?
I want my potential partner to have a good process and tools to help me manage the scope to fit my budget and schedule. Seeing examples of tracking and reporting tools and knowing the frequency of progress updates will help me understand the level of granularity I’ll be able to participate in and manage.
For custom software development, I’ll want to see that my potential partner is using Agile methods of some kind and that I’ll be able to participate in sprint planning and review sessions if needed. I’ll want to see status reports that identify risks, progress, and extrapolations for the future. I’ll want to see that tradeoff decisions will be detected early by the team and that the team is capable of bringing me recommendations when tradeoff decisions need to be made.
We’ll send our latest tips, learnings, and case studies from the Atomic braintrust on a monthly basis.