Ultimate Guide to Hiring a Software Development Company is written by Daniel Goldstein, Bailey Busch, and many other collaborators.
Hiring a software development company can be a brutal process, and frankly, it doesn’t need to be.
The goal of hiring a (custom) software development company is to find the right team, for the right type of project, at the right time. Yet, the wrong partner is often chosen for projects based on misaligned estimates for vague project scopes.
Why is the process so difficult? Why are common, expensive mistakes repeatedly made? Why are timelines frequently derailed? What is the right way to pick a partner?
These are the questions we are here to help answer—and not just “we” as in Seamgen. This piece is corroborated by serial entrepreneurs and Fortune 100 employees that have also learned these lessons over the years, along with lots of valuable content from others around the web.
Who is this guide for? Individuals looking to understand how to navigate the software development landscape, properly scope a project, and efficiently vet/communicate/negotiate/hire a software development company. This post is designed to lift the lid on selecting a software development company.
We’ll cover the tools, details, company perspectives, rates, cost, various company business models, templates, example contracts, and recommended negotiations.
If you follow the process outlined in this post, you will be in a 10x better position when choosing a partner for the road ahead.
Treat this as your navigation manual.
We didn’t invent this process, we’ve only tried to document it as thoroughly as possible to help you hire a software development company.
Is there a shorter version than this 9000+ word guide?
Sure, send me an email—malringer@seamgen.com
Besides that, not really. Building successful software takes coordination, talent, time and skill; and an understanding of what’s being built and by whom. Each project may have a different ideal partner.
*What do we mean by “software”? This guide is specifically for custom web and mobile application development—although it can apply to any software.
These sections are very thorough. We recommend skipping to the parts most relevant to your current situation.
It is important to know the different types of software development companies that exist.
Each type of software development company can be an appropriate fit depending on a variety of factors; and have a huge impact on the delivery and quality of the project.
Here are the different buckets a software development company can fall into:
** Hire: If you don’t want to hire a company, you can always hire an Internal Team—employees or contractors
Each model has its tradeoffs. Let’s talk about these options in more detail.
Onshore means the development is completed by resources in the same country as you.
Onshore companies are known for higher quality, higher cost, and more hands-on customer service. Clients are typically assigned a dedicated project manager, account manager, and have the ability to meet face to face with the software team. Onshore companies come in different sizes—boutiques of 5-20 people, companies of 20-75, large agencies of 75+.
Rates vary by region in the US, but you can expect somewhere between $115-$200 per resource-hour at a full service software development company.
Onshore full-service agencies are best for growing companies with a design/development budget >$150k.
An onshore software development company will tend to be the best route if the project needs a high-quality product within a tight timeline (3-12 months). Almost all large companies will use an onshore software development company at some point and long-term partnerships are often established since projects continuously vary in size, timing, and pressure–or software isn’t a core competency. More of our thoughts on partnering with an onshore development team.
When thinking about onshore, decide if the company needs to be local or non-local.
Local – any company within a commutable driving distance.
Non-local – same country, but requires a flight to be face-to-face.
This seems to be a personal preference. Do you like being in the same room as the team you’re hiring? Do you prefer using Google Hangouts for all team interactions? Do you plan to take the team to lunch, dinner, or drinks? How much face-to-face time do you want? Is a 2-3 hour time difference a factor in the decision?
Great onshore companies will have communication patterns and habits to accommodate clients anywhere, but sometimes it’s hard to replace weekly face-to-face time with the team.
It sounds cliche, but our recommendation is to choose the right team for the right job.
If the right team exists in the same city, that should be a preference. Most major metropolitan areas have at least one local software development company. But, location shouldn’t precede capabilities or past performance.
“Personally, I look for companies that are within driving range. Technology is great, but it just can’t bridge the gap of a face-to-face meeting for me throughout a project.”
–Andrew Davis, Project Manager
The ever-changing mobile paradigms and consumer habits are oftentimes regionally or culturally dictated.
What a user expects on a mobile device in the US is different than Asia, which is different than South America.
As a result, an onshore software development company tends to understand local user problems better. Knowing what you are building and for whom, from a design and technical perspective, is crucial.
An understanding of the culture, ecosystem, and paradigms can be essential to success.
Timely and clear communication is another benefit of hiring an onshore firm. Communication directly correlates to the quality of the software. This is especially important when building technology that is core to the business function. Communication is a key factor in Improving Developmental Workflow.
Because onshore teams work during the same business hours, communication tends to be more efficient. Onshore teams can better integrate into existing communication patterns of the organization–i.e. scrum, kanban, waterfall, etc.
Although, modern communication tools (Slack, Skype, Webex, Go-to-meeting, Join.me, Google Hangouts, JIRA, etc.) make it easy to collaborate from anywhere, it’s nice to be in similar working time zones. [why we love JIRA]
If you prefer to meet in person, a local software development company will be the best option. All of the tools for collaboration may still not be able to replace the efficiency of in-person meetings.
From whiteboard sessions to impromptu code or design reviews, it’s helpful to be within driving distance to sit down with the team and drill into the details of the project. Plus, it decreases the number of conference calls in your life (which is always a good thing).
From an hourly cost perspective, onshore companies will be more expensive.
You can estimate onshore rates to be approximately three times more expensive than offshore/nearshore resources. You get what you pay for as each project is supported by project management oversight. It comes down to cost of resources. Resources hired and living in the United States will cost much more than other places, and this applies to regional differences as well—San Francisco, CA versus Austin, TX, for example.
If you are looking for the cheapest option, an onshore software development company is probably the wrong approach. We’ll cover more about cost and provide comparison in the section on Framing and Scoping the Project.
Top development talent has been increasing in demand over the past decade. It can be hard to tell whether an agency is devoting its top talent to your project or a crew of new hires.
Thus, vast years of software development company experience may not matter if junior staff is in charge of building your product. This happens often at companies that have grown quickly over the years, as the staff is generally newer and hasn’t worked together as long.
Remember the Chicago Black Sox?
Offshore refers to development completed by resources outside your country.
An offshore software development company likely costs much less than an onshore one, but they typically need detailed product requirements and project management. They also have a reputation for low code quality, which is not always true, just something to be aware of. There are many talented resources offshore, but the sheer quantity of bad resources has made finding good talent very difficult.
Careful consideration and some extensive research will help you find the right team. Review this checklist for hiring the right offshore team to make sure you’re partnering with the right people.
There are a variety of sites that help manage offshore resources—Upwork, freelancer.com, etc. Rates vary by region, but you can expect to pay $15-$30/hour.
People with incredibly defined projects. This is often small to medium sized companies with tight budgets ($30k or less), or organizations building large, well-managed teams for multi-year projects (>$1M). The catch is that you need to have someone on your team who is capable of hands-on project management. Failing to understand what it takes to manage a software project can cost your entire budget and leave you with nothing to show for it.
These types of projects need a dedicated project manager, detailed requirements, and completed designs.
Hint: Startups often build an MVP with an offshore team as a way to prove their concept before raising money.
China, India, and Pakistan are well-known options for inexpensive development resources.
An offshore software development company tends to be much cheaper than any other option—usually 10-20% of an estimated onshore cost. Certain regions have specific technology strengths, and it is possible to find great software engineering talent in developing countries.
A lot of companies are trying to make outsourcing development much easier by offering insurance and guarantees. As businesses come up with better solutions, outsourcing will become more attractive.
“I’ve worked with individuals all over the world that are incredibly talented. They are everywhere, and in the affordable countries, you just need to find them.”
–Rob Ross, Formerly Xamarin (Acquired by Microsoft)
Offshore companies can turn around small projects because they have a larger available workforce.
Offshore firms can keep more people “on the bench” and ready to go than onshore companies. This is because labor costs are much cheaper and the volume of work is greater.
As a result, an offshore company can usually start a project much sooner than a local company.
Offshore is a not a good option if you are looking for a partner to help you with the design process. Software design is about solving the end user’s problem in the best way possible. And it is difficult for many offshore development teams because they are not as well acquainted with the problem due to cultural differences.
As a result, you need to have defined user stories and establish very strict requirements and acceptance criteria. Once you get the product built, it is a good idea to use a technical consultant onshore to verify the quality and viability of the code.
To offshore a project well you need to be good at managing the design process and the project timeline remotely.
Due to the quantity of offshore software development companies and the language barriers, it is very difficult to find a quality offshore firm.
Offshoring a project can add unnecessary communication and time barriers. These barriers can make it difficult to include an offshore firm into the mix.
For more of our thoughts, visit our blog post on choosing the right offshore developers here.
Nearshoring is an interesting compromise to offshore. Nearshore refers to development located in a neighboring country in relatively the same time zone.
It is pricier than going offshore, but can be cheaper when considering all the other costs involved. Nearshoring can be a good option for a staff augmentation model in order to meet larger project timelines. Nearshoring rates range from $30-$75/hour.
An existing team working on a project who needs a few extra players to help get the software developed. In this case, a nearshore staff augment can be a better fit than working with a full service agency.
Mexico, Chile, Brazil, and Argentina.
Places like Mexico and Central and South America have become larger players in the nearshore development industry.
Companies like KPMG, Accenture, and more have established tech centers in Latin America. Such tech centers have created strong talent pools in Guadalajara, Lima, and Sao Paulo. Going nearshore for development can be a good option if you find the right partner.
Like offshore development, you are the project/product manager. The developers integrate into your existing team.
Nearshore resources are usually within the same(ish) time zone as you. They should be able to integrate into your process without a lag in communication. Thus, daily standups, sprint planning, slack questions, pull requests, etc. don’t have to change.
From a cost perspective, nearshore companies will charge around $30-$60/hour. This falls right between the rates of offshore and onshore development. It can be a cost efficient solution for an established team to augment resources. And it costs much less than hiring local talent.
“There are incredibly talented developers everywhere. We’ve seen success working with clients to stand up heavy-lifting, very competent developers out of Guadalajara—and our clients love it.”
-Dave Ferrell, UnoSquare
Nearshore development still requires you assume the roles of UX/UI design, technical spec writer, and project manager. Nearshoring your entire software development project is not recommended unless you have people who can perform the above roles on your team already.
Some firms have taken on a hybrid approach which offers onshore project management in combination with the reduced costs of nearshore/offshore development.
With the hybrid model, the project/product manager (PM) is here in the states and the development team is nearshore or offshore.
Small teams needing extra help with development, who already have a product manager stateside.
This is a common model many startups use to bootstrap an MVP. A small technical staff sits stateside and manages a team of developers who work overseas. This hybrid rate is often less than $100/hour, which is significantly cheaper, without having to assume the role of project management.
Since hybrid firms have local project management, this decreases the communication gap between the offshore team. These working styles that the local company has established are invaluable for working with an offshore firm. Just as any local agency has variance in quality, communication styles are something to look for in a hybrid firm.
The time difference can create long working hours for many of the team that sits stateside. In order to manage the developers, the PMs need to be available for questions very early in the morning or late into the evening.
It is important to know how a company works and what type of model they use so you understand the process of development and how quickly something can be built or fixed throughout the project.
An alternative is to not hire a software development company at all; and hire W-2 employees or W-9 contractors instead. This post isn’t intended to detail this process, but we will provide some high-level commentary.
As counterintuitive as it may sound, this is sometimes the better route to go if software is to become a more central aspect of the business model.
Hiring a team is the best idea for companies with an evolving product. This is particularly true post-launch because there will always be product and maintenance needs. But hiring takes time. Hiring a team is best for companies that don’t have an immediately pressing timeline.
The reason to hire an in-house team is to create a faster development cycle that iterates over time. A change-order with an agency may wait until the next business day or over the weekend before it’s addressed. In-house teams are able to change things on the fly and can move more quickly than an agency.
Using an internal team can save significant time when making future product changes. But, to do this well requires you to build and retain a solid development team.
The timeline for acquiring a quality team, onboarding, and developing the software will take much longer than working with a software development company. If the project has a tight timeline, this may crunch the selection time, causing you to hire resources that may not be the ideal fit for the team in order to deliver results.
And the cost is a big factor. The average salary for hiring a software engineer is nearly $100,000 according to Glassdoor, with UX, UI and project/product managers not far behind. This doesn’t take into consideration overhead—typically +25% of salary per employee. This makes the actual cost of a $100,000 employee closer to $125,000.
To have a successful development team, a cross-functional team is needed, and this cost accumulates.
Here is an example team for an iOS and Android mobile application.
The total salary cost is a little less than $600,000 for the year—this example represents a minimum team size with conservative salaries and no overhead. 3X or 4X this team size for large projects.
If hiring is the right route to go for your project, then here are a few resources you may find helpful.
This section is by no means exhaustive. It is simply to point you to a few great resources for hiring individual candidates on a full-time or freelance basis.
Several SaaS resources have emerged recently to help companies find and hire top development talent. Their pricing varies, but here are a few options worth looking into:
If you are serious about hiring, you will need a tool to track candidates that apply. This is called Applicant Tracking Software. Here are a handful of companies who produce great content and have resources to help you find and hire the right person for the job.
Don’t forget about real human recruiters, they are still very much alive and active, especially in the technology industry. They find and vet candidates ahead of time, and personally match them to your needs. This is a good way to find talent but this service usually costs a premium.
Mark Suster, of Upfront Ventures, has a great set of Snapchats on working with recruiters. He is focused on startups, and we think it applies to all tech recruiting.
Tip: Find a recruiter that you can trust, who understands exactly what you need, and doesn’t just send you tons of resumes.
Here are two companies Seamgen has used successfully in San Diego:
You may also consider “renting” the talent from a company–this is commonly referred to as a staff augment. Instead of hiring an agency to build your software, you negotiate a price to rent their staff. In this scenario, you manage the project and integrate the developers into your team.
Lastly, you can hire freelancers. This is more of an ‘on-demand’ solution and is great for project-based work. The hard part is finding good freelance talent. If they are really good, then they are usually in high demand, and cost a premium.
Resources for hiring great freelance developers (and even designers):
If none of these options fit your business plan, you can take a more hands-on approach and become a full stack software developer in as little as 12 weeks with the Woz U, Full Stack Software Development Program.
These are important questions to answer. The goal of answering them is to pinpoint where you are in the software development life cycle (SDLC).
Scoping a project is paramount when selecting a software development company.
Imagine telling a waiter you want something savory and getting a dish that is sweet. Some might find that fun in a restaurant setting, not so much when it comes to software.
Time spent defining what you want to order will only help you in the long run. The more prep work put in up-front, the more accurate the quote and expectations will be from the software development company.
This section will help define the Software Development Life Cycle to give you a starting point in the process.
We can think of software as pre-internet software and post-internet software. Modern websites and mobile applications are developed in shorter cycles than traditional desktop or enterprise software.
Traditional software development tends to have more rigid principles and process than modern software development. The traditional way to develop software was to completely define a product at the beginning, and then design and develop directly from the specifications.
This is a traditional SDLC: Requirements, design, development, testing, and maintenance.
It’s more rigid than modern software development in how it handles change throughout the development cycle. There is little room in this process for pivoting based on new information.
The rigidity of the process doesn’t lend itself to emerging technologies and modern software paradigms as easily—things change too quickly now to completely define a product up-front.
The modern software development life cycle follows a similar ‘process’ to the old way, but it leaves room to quickly pivot based on changing priorities. Many people might call this ‘agile’, but it tends to be more of a truncated waterfall—especially when working with a software development company.
Every company that says they run Agile actually runs some sort of Agile-Hybrid, and uses the word Agile to mean high-communication and some of the Agile Principles. These principles still largely define the intent behind the modern SDLC.
It’s a continuously iterative process that starts with strategy, has release cycles along the way, and doesn’t technically end.
The idea behind the Modern SDLC is to ship a product as quickly as possible and to communicate transparently along the way.
At Seamgen, we tend to use an Agile-Hybrid and this guide uses it as an outline.
“The old way moved slower due to the requirement to define everything up-front. That, and the size of software projects used to be larger, with more required in the first version and very little room for change throughout the project. Technology moves too fast for rigid process now.”
–Bill Lukefahr, CIO
Budget, scope, and timeline are the three variables in every software project. From this, we have two primary types of projects that define the lifecycle of a product.
Most projects meet in the middle between these two approaches, but it’s important to identify which variable is known and the highest priority in order to fill out the rest of the equation.
“Budget backwards is similar to walking into a car dealership knowing the max I can spend. Sometimes I want a Tesla Model S, but I only have enough money for a Model 3. Guess what? I’m going to end up with a Model 3, and that’s not Tesla’s fault.”
– Mike McDonnell, Group VP
We are going to outline a frequently-used process to develop software. When contacting a software development company, it’s important to know exactly where you are at in this process so you can choose the right potential partner.
It has a few steps, and each step is detailed below.
At one point, every product started at this phase. If the product is undefined, a Discovery Phase is the best place to start.
The time it takes to complete the discovery phase depends on a number of factors, many of which may deal with your firm’s organization and approval process.
Much like designing a home, you work with an architect who outlines the blueprints, the plot of land, the elevation, the foundation, the house systems, etc.
A product strategy is the why behind your software. To help define your product strategy answer these questions:
“It really doesn’t matter what you plan to do if you don’t know who is going to use your product. You need a target to design for, and ‘everybody’ isn’t a good answer”
– Jeff Vaccaro, Sr. Project Engineer
After landing on a software strategy—which includes user types—the next step is to create a prioritized feature list. Write out the must-have features of this software, in the order of importance. And focus on details that pertain to the user.
Feature lists need to have enough detail to guide design and establish technical requirements. If your feature list is vague, it increases risk, as most features need to be ‘discovered’ during the design phase.
If you don’t know where to start, think through the day in the life of one of your users, and how they will access and interface with the software.
Make a bulleted list of every single feature you want in the software with as much detail listed as possible.
Very brief example:
After all of the desired features are listed, you need to create feature priorities. This can happen in buckets.
The first bucket should be a cannot-launch-without-these-features bucket—otherwise known as the MVP (Minimum Viable Product).
Henrik Kniberg and Fred Voorhorst have both created popular visuals for an MVP. And depending on the Product Definition, either visual might suffice.
The idea is to simplify the product down to the minimum acceptable product for the market, and build it as version 1.
Henrik Kniberg
For a loosely defined product—such as “improve transportation from point A to B”—this is a visual that helps define MVP.
Fred Voorhorst
For a more narrowly defined product—such as “create a car”—this visual helps explain MVP.
After the feature list is determined, the software design needs to travel from low to high fidelity.
A User Experience (UX) Designer turns the prioritized feature list into a general architecture and flow before creating low-fidelity designs.
Low-fidelity designs are frequently called wireframes and outline the key functionality on each screen.
High-fidelity designs—called ‘comps’—are the final designs that are passed to the development team. These can be created by a Visual Designer.
This whole process is often the same person with help from a technical liaison.
IA is usually referred to as the backbone of any site or application. It can be extremely helpful and often necessary to create.
IA is more frequently required in web applications than mobile applications.
It outlines very specifically how the application may flow or what information may be on each page.
Here is a partial example:
Similar to an IA, a user flow diagram is a screen by screen process that a user can follow. It often is used to determine navigation structure for mobile applications.
In the mobile application user flow diagram below, you’ll see gesture-based navigation between screens.
Here is a partial example:
Let’s look at both in more detail.
Low-fidelity wireframes are incomplete designs that provide an outline of the product.
These designs explain the flow of the software features from a user perspective. This can be drawn on a whiteboard or built using a design software like Sketch.
This is an example of a hand drawn wireframe. As you can tell, it’s very low fidelity, but it helps establish features and flow.
Below is an example of a wireframe created in Sketch. It doesn’t always have to have this much detail, and it’s still not the final design that you can see below.
These are final designs that are ready to pass along to development. They are pixel-perfect and annotated with technical specs for the engineers. These designs would come with annotations detailing what happens throughout each screen.
These are built by outlining the details of the product from a technical specification. We have some useful questionnaires for both web and mobile software products.
A development schedule (or sprint plan) assembles both a timeline and an engineering team. First, estimate the total amount of hours it will take to complete the project. Once you have a total, that number can be broken down into sprints with assigned features.
Sprints are usually planned in one or two-week increments. Take the prioritized feature list and assign each feature to a sprint.
The more defined the designs are, the lower the risk. But, the project still hinges on how skilled a development team is at building software.
All of the hard work is paying off and you are ready to launch one of the releases. This is typically a milestone in the overall development plan.
Things to think about during launch:
After one of the releases of the product, the product team should focus on the next set of prioritized features. This most-likely starts in Step 2, but can also start back in step 1 to define the strategy behind the next set of features.
Other resources we’ve written on this:
If you Google ‘how much does it cost to build an app’ it will return a ton of results.
To make life simple, Google provides this excerpt as a credible answer:
“Apps built by the largest app companies, the “big boys,” likely cost anywhere between $500,000 to $1,000,000. Apps built by agencies like Savvy Apps [Onshore Software Development Company] cost anywhere between$150,000 to $450,000.”
We think this is a pretty accurate summary. If you want to dig deeper, here are the articles that we think are the most helpful.
It is difficult for an agency to estimate the cost of a software project if you don’t have a basic outline, which is why it is important to define the scope of your project.
Picture asking how much it would cost to build a custom home without knowing how many bedrooms. How about bathrooms? One story or two? Is it a remodel or a ground up build?
As you already know, understanding your project is the key. After nailing down a few important details, choosing which type of firm you should hire is much easier.
When talking about cost, a helpful diagram is the ‘Magic Triangle’. Theory suggests you cannot expand one side of the triangle without affecting the other sides. Time, cost, and scope are not mutually exclusive.
Important questions for any project are:
In summary, a professionally built app will usually take around 4-6 months and cost somewhere between $150,000-$550,000 depending on complexity.
Variables change the price. Understand the variables and you will be much less surprised when a quote or timeline changes.
It’s helpful to know what to look for when hiring a software development company. Signing a contract means you are buying something from them and believe in what they are selling. We wish there was a short answer, but if you’ve never worked with a firm that you trust, you will need to do your research, ask for referrals, and read reviews.
This process can be followed with or without an RFP to develop an initial list.
This section focuses on a few elements of the process:
People can be a much better resource than a Google search. Not only can you get a recommendation, but you can likely get a review too – whether it be personal or professional.
Send an email or write a post on Linkedin asking your network for recommendations. Think of competitive companies that have great products, reach out to their product people and ask, ask, ask. It’s free, and it’s one of the best initial steps.
Many people have a list of vendors they use regularly and are happy to share. It’s an act of goodwill on their part and an intro makes them look good.
“I’m part of a few peer groups, and the first thing I do when hiring for a new project is ask my peers who they have previously worked with and recommend.”
– Dave Markle, Seasoned Product Manager
Obviously, a Google search is the next thing to do.
If you want to take your search abilities to the next level, try some of these advanced Google search queries. Here are three:
The goal is to compile a list of 15-20. Add the companies you find to your list. Do a quick scan of the website.
There are a couple basic questions that quickly come to mind when doing an initial company assessment.
Are they good at eating their own dog food?
Is their website on point?
Do their projects speak for themselves?
Are they producing industry leading software?
If the answer is yes, then add them to your shortlist. If they are deficient in one or two areas, make a note of it so you can ask them about it later.
It may be helpful to create a spreadsheet to track the companies you are evaluating.
Factors to consider when browsing a company’s website:
Work – Look for quality, depth, and size of projects, not just brand names.
Quality – Does the company pay attention to the details on their own site?
Experience – Does the company employ experienced people or new grads.
Social – Look for a strong company culture of excellent work.
Blog – Do they produce quality content? Are they a thought leader in the space?
Give each company a score, say 1-10, in each area. Add up their score, then sort.
“Make judgements on all the information you have access to. If they are a design firm, look at their website and product’s design. If it’s purely engineering, you’ll have to look at their code. It’s very important to vet the actual work quality with experts in the required deliverable format”
– Brett Morrison, CTO / Entrepreneur
You’ve Googled and asked around and have a list of 15-20 agencies you are interested in working with. You’ve ranked each company with an arbitrary score, and have a sorted list–now what?
Now it’s time to do some research.
When researching, also be on the lookout for a few things:
Existing relationships can be a great start. Do you know anyone who has worked with the agency or know someone who works there? But remember, an existing relationship doesn’t mean they are necessarily the best partner for the job.
Many times companies will create a mock case study for a spectacular client. If you glance at a portfolio it may look like a list of high-profile clients, like Coca-Cola, Nike, and Apple. But if you take a closer look you may discover it was a creative exercise and not their actual client.
It is normal for a company to provide a disclaimer, so you need to read between the lines of the case study and not assume.
Past work and performance are good to look at but they represent a lagging indicator of success.
Yes, a portfolio can help you gauge whether the company will be a good fit. But remember, only the best case scenarios turn into case studies. These should not be the only factor you look at when making your decision. Here is our example of a recent work page
Instead, look to the things that fuel consistent and quality work.
We tend to agree with Scott Rayden, the Chief Revenue Officer of 3Q Digital, who suggests looking at company culture and vision as leading indicators of future success.
Why are leading indicators important? Software development and the digital landscape are ever-changing and move quickly. The hot new development trend today could become the next industry standard or be a total bust—all in the matter of a few months time.
Finding a company with a strong culture is an important indicator because it means they are able to retain top talent.
Strong company culture and vision are necessary to create a high functioning team. These are strong indicators your project will end up as a future success story.
Also, search for reviews, complaints, and lawsuits. But interpret with care; you are looking for specific details. Try to discern what the issue was and if/how it was resolved. Plus, keep in mind that many people will write a bad review before they write a positive one.
You should now have a good feel for what a few agencies are like. Sort your spreadsheet based on the new information and scores you just added. Pick the top 3-5 agencies. This is your ‘short-list’.
Now, it’s time to send some emails.
Most software development companies have generic emails that go to a sales department of sorts. It’s important not to waste a ton of time in a variety of identical phone calls.
Steps:
First things first, if you can skip the RFP process, do it. Pass go. Collect $200. It takes a lot of time, and doesn’t necessarily deliver incremental gain. It’s required in most capitalized corporate projects, and it can often be a black hole for time consumption.
“Don’t be fooled by the size of the company. Some of the best agencies in the world have founders that used to be superstars in the corporate or agency world and decided to go on their own. These can be diamonds in the rough.”
-Joseph Drambarean, Fortune 100 Sr. Product Manager
You understand the landscape, you’ve scoped your project and have an idea of budget and timeline, and you’ve found a few potential partners.
How do you select one?
This can be especially hard if you like all your options. Schedule to complete the decision making process in less than a month.
There is no one factor that will uncover the best candidate. But there are some healthy indications and principles you can follow to help make the decision a bit more obvious.
Next step is to get a quote; and a good quote is an accurate one. In order for the agency to be accurate you will need to have a clearly defined scope.
Ideally, you’ve read through the scoping section, done your homework and have a detailed document to provide the account manager/sales people with. If not, now would be a good time to revisit that section.
Send the company your scoping document, and follow up to ask if they have any questions. This will help you to understand where there may be gaps in your scope planning.
You want to get a couple options. Check the agency landscape and seek to understand the differences between proposals. Big price differences mean you don’t have enough clarity around the scope of the project.
Or, a company is proposing to deliver a lot less than you might expect.
Always be honest with the firm – “We are talking with X companies, this is what we like about each company, and this is how we are making our decision”.
Explain who they are competing against and what the pros and cons are in both relationship. This can help to clear up miscommunication around deliverables.
Sales people at the company can be your best friend and a powerful negotiator for you. The terms of a software project are not always hard and fast. Lean on the sales people to come up with creative solutions that are a win-win for both parties.
Here is a great breakdown of questions to ask a software development company.
Sam Toole — The best questions to ask software development companies
Seamgen — 5 Questions to Ask Before you Hire an App Development Company.
Here are some other generic things that you should be looking for:
Are they good at communicating with you?
This is a big one. Communication in the development process is key. You want a partner you can trust and one that is able to answer your questions promptly and honestly. How well an agency communicates upfront can show how things might go if and when the project gets tough.
Verify the agency’s tech stack / speciality / capabilities.
Each agency has a specialty. Make sure their abilities align with your project requirements. It is possible for an agency to take on too big of a project. That is why it is key to qualify their abilities, before signing a contract.
What’s currently happening at the company right now?
Unfortunately, agency politics can have an impact on your project. Red flags to look for–partner disagreements, key talent departure, and cash flow problems. It is unlikely they will tell you, so you will need to read between the lines. And don’t be afraid to ask some probing questions.
Are there any current staffing restrictions?
Cash and talent are the lifeblood of an agency. Understand their current staffing situation as much as you can. Key talent departure can kill a project. Make sure the agency has enough developers on hand before starting your project. That way there is no impact on the project if one or two people leave the organization.
You are going to have to sign a contract, or a set of contracts. Below are the probable contracts you’re going to have to sign. We’ve tried to outline the must-know details, and provided the contracts we use as references.
Here are some things to look out for in each of these:
The key with an NDA is to make sure it’s mutual and doesn’t include any obligation other than secrecy. These aren’t redlined very often, and most are pretty straightforward.
The MSA is the master governing contract that will have many of the clauses that apply to the overall relationship. Here are the places you have room for negotiation with a software firm:
Payment Terms
This is the most obvious and powerful item for negotiation. Most firms operate with NET-30 terms along with a deposit of some sort. It’s possible to negotiate rate discounts if you offer to pay earlier, or larger deposits. Software development firms are cash-flow businesses, so cash in the door is a good bargaining chip.
Some firms also operate with retainer-only business models.
Non-Compete
Try to keep this in most contracts. You don’t want the software company working on your project and then going to a competitor 3 months later and selling the same team that just built you a proprietary piece of technology. Put a multi-year non-compete in place to protect your software.
Non-Solicitation
This is a pretty standard clause, but if you can remove it from the MSA for any reason, it opens the door to you being able to hire the product team in the future.
Intellectual Property
Make sure you own all of the IP. Everything created should be considered “work product” and you should own all of it at the end. Be careful with modules or plugins that potential partners may include in your product. Make sure you know who owns what part of the final software.
Portfolio Use
If you are a larger company and you’re hiring a small boutique software development firm, this could be a great way to negotiate the price down by offering to let the company use your software in their portfolio.
If you aren’t using it for negotiations, and there isn’t anything proprietary, our suggestion is to let the software development company use it for their portfolio. This has two parts. One, the team that works on it will have more pride and therefore a higher probability of working above and beyond. Two, it’s free advertising for your software. Obviously, if there is something confidential in the software, then you’ll want final approval on all public imagery.
There are a few different types of SOWs. The two main types are Fixed Bid and Time and Materials.
Fixed Bid—a certain set of deliverables for a certain price. This price is fixed and does not fluctuate with the project without a change order. It is very difficult for a software development company to put together a fixed bid for any project over $50k, or 3 months in length. If using a Fixed Bid approach on a larger project, it may require dividing into smaller, defined increments over the course of a project.
Time and Materials—a less defined set of deliverables that is billed for the time spent on the project. This is a pretty standard way of contracting with a custom software development company. You are essentially buying a team over a period of time in order to aim for a target set of deliverables. It can be scary, and this is why selecting the right partner has huge consequences.
We tried to include anything and everything that may help you on your journey toward hiring a software development company. We would love to hear from you. Comments, opinions, a different process, helpful tools, please share! Feel free to email me directly— clandrum@seamgen.com or our company at hello@seamgen.com.
Seamgen on Facebook.
Seamgen on Twitter
Seamgen Homepage