Ultimate Guide to Hiring a Software Development Company
Ultimate Guide to Hiring a Software Development Company is written by Daniel Goldstein, Bailey Busch, and many other collaborators. It was originally published on Seamgen’s Blog Here.
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 Daniel an email — dgoldstein@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.
Table of Contents
These sections are very thorough. We recommend skipping to the parts most relevant to your current situation.
1. The software development company landscape
- Pros, cons, and who to hire
- Onshore software development company
- Offshore software development company
- Nearshore software development company
- Hybrid software development company
- Hiring an internal team
2. Framing and scoping your project
- Modern Software Development Life Cycle
- Budget Backwards versus Feature Forward
- Going from feature list to final product
- How much is it going to cost?
3. Researching and contacting a software development company
- Creating an initial list of software development companies
- Initial company assessment
- Creating a short(er) list
- Contacting each software development company
- Tips on the RFP process
4. Selecting, negotiating, and contracting with a software development company
- How to ask for quotes
- Evaluating proposals/partners
- Contracts and negotiations
1. The Software Development Company Landscape
Who are the players?
Where are software development companies located?
What makes them different?
How do I know who is a good fit for my project?
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:
- Onshore: in the same country as you, often local to your city.
- Offshore: outside of your country and usually separated by several time zones.
- Nearshore: neighboring country with lower-cost development talent.
- Hybrid: onshore project management with offshore/nearshore development
** 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 SOFTWARE DEVELOPMENT COMPANY
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.
Who Should Use:
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. For more of our thoughts on partnering with an onshore development team, click here.
Local vs. Non-Local
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
Pro: Understanding of Local Design and User Experience Patterns
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.
Pro: Communication
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 inImproving 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]
Pro: In-Person Meeting
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).
Con: Cost
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 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.
Con: A vs B Teams (Plus an Example…)
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.
Tip: Ask to specifically meet with those working on your project.
Offshore Software Development Company
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.
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.
Who Should Use:
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.
Common Offshore Countries
China, India, and Pakistan are well-known options for inexpensive development resources.
Pro: Cost, Cost, Cost
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)
Pro: Project Starting Timeline
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.
Con: Design and User Experience
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.
Con: Communication
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.
Resources
For more of our thoughts, visit our blog post on choosing the right offshore developers here.
Tip: Define every little detail about your product and have a technical consultant verify what you receive.
Nearshore Software Development Company
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.
Who Should Use:
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.
Popular Nearshore Countries (From the USA):
Mexico, Chile, Brazil, and Argentina.
Pro: Recently Developed Talent
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.
Pro: Integrate Into Process
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.
Pro: Cost
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
Con: Design and Communication
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.
Recommended Companies
Tip: Integrate the team into a larger product team for the greatest level of success.
Hybrid Software Development Company
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.
Who Should Use:
Small teams needing extra help with development, who already have a product manager stateside.
Pro: Cost Efficiency
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.
Pro: Project Communication
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.
Con: Time Difference
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.
Hire Software Developers
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.
Who Should Use:
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.
Pro: Iteration Speed
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.
Pro: Subject Matter Expertise
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.
Con: Timeline
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.
Con: Cost
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.
- Mid-Level iOS Engineer: $115,000
- Mid-Level Android Engineer: $115,000
- Back-End Engineer: $100,000
- Scrum Master / Product Owner: $85,000
- UX Designer: $85,000
- Quality Assurance tester: $50,000
Helpful Resources:
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.
Hiring Employees:
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.
Recruiters:
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.
Hiring Freelancers:
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):
2. Framing and Scoping the Project
How do I scope a project?
Where am I in the life cycle?
What details do I need to know?
Do I need finished designs?
Does the project have product requirements?
Does a current software system already exist?
What tools should I use?
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.
Modern Software Development Life Cycle
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.
1. Traditional SDLC (Waterfall)
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.
2. The Modern SDLC (Agile?)
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 Backwards vs. Feature Forward
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/Timeline Backwards: These projects have a max budget or hard delivery timeline and the project team works backwards to see what can actually be finished for the allotted time or budget. These projects tend to make sacrifices in features or quality in order to come in under budget or within a timeline.
- Feature Forward: These projects are focused on the scope and work forwards to determine a timeline and budget based on the scope and features desired. It’s acceptable to spend more to launch the desired scope, and the team is willing to pay more to receive more.
“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
Going From Feature List To Final Product
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.
- Software Strategy (“Discovery”)
- Prioritized Feature List
- Annotated Designs with Technical Requirements
- Development (Sprint Plan)
- Launch
- Feature Improvement (Repeat Steps 1–5)
1. Software Strategy (“Discovery”)
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:
- Why build the software?
- What is the purpose of the application?
- Who is going to use the software?
- Walk through a day in the life of one of the users — how does this software help?
- What industry is it competing in?
- What are some main competitors?
- What platforms and/or mediums are you building for?
- Is there a history to the software?
“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
2. Prioritized Feature List
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.
Creating the Feature List
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:
Login
- As a user, I need to login to the application with Facebook and email
Signup
- As a user, I need to create an account
- As a user, I need to have social sign-in
Landing Dashboard
- As a user, I can see a summary of my team’s activities
- As an admin, I can control what each dashboard displays
Social Share
- As a user, I need to be able to share my status on social media
- Etc, etc, etc.
Prioritizing the Features
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.
3. Annotated Designs with Technical Requirements
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.
Information Architecture
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:
User Flow Diagram
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)
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.
High-Fidelity (Final Comps)
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.
4. Technical requirements
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.
- Here is the link to a mobile app project questionnaire as an example.
Development Schedule (Sprint Plan)
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.
- Here is a free tool we use in Google Sheets to estimate software projects with and without designs.
- If we have designs, we use those as a reference for each feature.
Sprints are usually planned in one or two-week increments. Take the prioritized feature list and assign each feature to a sprint.
- In the previous sheet, this would be the 3rd tab.
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.
Note–Estimates are difficult.
5. Launch
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:
- Have you load tested the application?
- How many users are you originally launching to?
- Do you have developers on queue to fix bugs?
- Is customer support set up for this software?
- What are the next features development is focused on?
6. Feature Improvement
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:
- Seamgen — Understanding the Mobile Application Development Process.
- Marc Alringer — Best Practices in Software Development
How Much is it Going to Cost to Build Software?
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.
- Savvy Apps — How Much Does an App Cost: A Massive Review of Pricing and other Budget Considerations
- Formotus — Figuring the costs of custom mobile business app development
- Sam Toole — How Much Does it Cost to Build an App?
- Seamgen — How to Cut App Development Costs
The Magic Triangle
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:
- What is the budget?
- Is it realistic for the scope we want?
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.
Variables that affect software development:
- Who are the stakeholders?
- The more people involved in making decisions, the longer the timeline.
- What are the technical capabilities of your team?
- A clear definition of who does what is necessary to get everyone on the same page.
- What is the target timeline?
- 4–6 months is a reasonable estimate for a first version of a mobile app.
- Do you need designs?
- If yes, a full service partner is best. Find an agency that can take your project from idea to strategy to design and development.
- How will you communicate?
- Where do you and your team fit into the development process — weekly, monthly updates?
- Are there any government requirements?
- This can impact the timeline and project requirements. Add 3–5 months to your projected timeline.
- When is the code delivered and how?
- This is often tied to payment terms and project milestones.
3. Researching and Contacting a Software Development Company
Where do I find a good partner?
Is there a way to sort all the information?
What is the best way to contact a company?
Should I run an RFP? How?
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:
- Creating an initial list of software development companies
- Initial company assessment
- Creating a short(er) list
- Contacting each software development company
- Tips on the RFP process
Creating an Initial List of Software Development Companies
Step One: Ask your Network for Referrals
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
Step Two: Google It
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:
- related:company.com
Use this to find related websites based on one you might already know or like. Find a software development company that you like and replace the “company.com” with whatever it might be, like related:seamgen.com - “software development” ~company san diego
Use this to find the specific phrase in “quotes” as well as results with similar words or phrases after the ~ - xamarin app development company OR companies
Use this to return search results for “xamarin app development company” and “xamarin app development companies”
(why Seamgen uses Xamarin)
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.
Initial Company Assessment
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
Creating a Short(er) List
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:
Look for Relationships
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.
Did They Actually do the Work or did They Just Write a Case Study About It?
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.
Looking at Lagging and Leading Indicators of Success
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.
Look for Red Flags
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.
Narrow the Medium-Sized List — ’The Short List’
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.
Contacting each Software Development Company
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:
- Send an email with an enticing project summary, budget, and timeline
- It’s important to properly summarize your project when reaching out to potential partners. Every software company wants to work with an organized partner.
- Set up an initial skype call or in-person meeting with multiple people at the company. You should see their faces in the call to help gauge whether they will be a fit. Request from the sales person to have technical or design people in the meeting.
- Before the call, send over the project details so you can use the call to determine if the company is a good fit
- The company should come prepared to talk about the project
- Ask the software company if they have all the necessary information to put together a bid for the project
- Clarify resource timing and ask about who will work on it
- Ask for typical project size and to provide examples
- Have the company present the proposal to you, and ask as many clarifying questions as necessary
Tip: Use the sales person as your best friend to help negotiate the proposal.
Tips on the RFP Process
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.
- Understand the type of firm you want to work with before starting the RFP
- Be honest with the companies involved in the process
- Develop relationships with the companies prior to sending the documentation
- You will receive more thoughtful responses if the company believes they have a chance of winning
- Make yourself available for questions
- Provide design and technical documentation
- If the specs are vague, allow for in-person meetings, even if it has to involve multiple software companies at one time
- If the project is vague or undefined, break the project into phases
- Don’t select a partner on price
“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
4. Selecting and Contracting with a Software Development Company
Who should I choose?
How do I evaluate a quote?
Are there general things to ask?
What parts of a contract can I negotiate?
What do contracts generally look like?
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.
How to Ask for Quotes
Get a Quote from 3–5 Companies:
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.
Evaluating a Quote/Proposal:
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.
Questions to Ask
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.
General — Things to Look For:
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.
Contracts and Negotiations
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.
- Confidentiality Agreement (NDA)
- Masters Services Agreement (MSA)
- Statement of Work (SOW)
Here are some things to look out for in each of these:
mNDA
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.
MSA
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.
SOW
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.
The End
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 Daniel directly — dgoldstein@seamgen.com or our company at hello@seamgen.com.
Seamgen on Facebook.
Seamgen on Twitter
Seamgen Homepage
Originally published at Seamgen Blog.
For more background info, check out our website: seamgen.com