Choosing the right software development company for your product is like hiring a crew to build your new house. Triple check the contractor with whom you will work with over the next few months, or sometimes even years, and more importantly, may decide on your success or failure.
I failed with many digital products while working with software development companies, marketing agencies, and design agencies. This helped me to figure out a bulletproof checklist to verify a business partner with whom I’ll potentially work with.
It cost me a lot of $$$ to get where I am – Use this so you don’t repeat my mistakes 🙂
Below, you will find a pattern and a set of questions we used at Brainhub to find a software development company for our ventures beforehand.
# Quotes – Reject the cheapest
It’s like buying products on eBay or Amazon – each time when you buy the cheapest iPhone cable, it’s broken after a week or two.
The same with buying services.
If you choose the cheapest offer, you will ultimately pay more at the end of the project.
There are a few reasons:
- Technological Debt – Poorly written code, lack of tests, difficult to work on or maintain, lack of documentation.
- Source Code Ownership – You don’t own the source code; you will get only a bundled code or the company will offer you to license the product, despite you paying for the development.
- Poor Communication – Lack of experience of the offshoring/nearshoring team, poor English level, lack of transparency in the development process.
You don’t want to buy the cheapest service, but the most cost-effective. If you focus on spending less money initially, you will pay 2-3x times more in the future (the worst-case scenario – rewrite the app from scratch).
# Integration and communication
Find a company that puts pressure on constantly improving the development process and values retrospective meetings.
It’ll be a faster and more cost-effective way to integrate your external development team from day one if they can clearly articulate what they expect from you and what you expect of them.
Based on a report from Accenture – Communication and quality of service are more important than price for customers today.
Based on our experience, the most popular areas in IT to have similar processes are:
- SCRUM/Agile Development Process – Nowadays, 80% of IT teams work in SCRUM. So, things like daily standups, sprints, and a similar definition of done are simply a must. Your outsourcing partner should have it.
- Tools – It doesn’t matter what project management tool you use (Asana, Trello, Jira or even Taiga) – it helps if your partner uses them. More important is to understand your external team should be accessible; you should feel almost like you’re working in the same office – communicate with them daily on Slack or Mattermost during normal working hours.
Read more about the process we came up with at Brainhub over the last few years.
# Are using the word “No”
You want to have a straightforward partner who is able to say ‘No’ if needed. Avoid yes-sayers.
- No, you shouldn’t make this feature first – it’s a waste of money and your precious time.
- No, you should consider different tools….
# Rule of similar sized company
I learned this advice from a book “Built to Sell: Creating a Business That Can Thrive Without You” by John Warrillow. Choosing a company similar to yours has a few advantages, the most important of them is:
You want to be treated as a VIC – Very Important Customer. If the company is too big, they may not give you enough attention. If they are too small, they may not have enough experience to work on such a scale.
# Technology stack
You want to have a focused software development partner. They should be experts in the technology in which they work.
To build a front-end in React, find a company working with React.
If you want to have a backend in Node.js, find a company working solely in Node.js on the backend.
If you see a software development company’s landing page has a ton of logos of different technologies, like RoR, PHP, Node.js or .Net – Don’t choose those guys. You cannot be an expert in 10 languages (maybe if you are a huge enterprise).
# Partner chemistry
We strongly believe in relationship chemistry.
We work with our partners (yes, partners, not clients) as closely as possible, discussing the shape of the product.
Once there is chemistry and we are on the same page by having extensive transparent communication, the pitfalls can be avoided, and we can pursue our partner’s business success.
# Frequent deployment
The company should be eager to show you their progress as soon as possible. Each sprint should be finished with a demo of the product.
It speeds up the development! The developers are motivated to demo weekly/bi-weekly results of their work. They feel the pressure each week. You, as a client, have the same pressure to deliver information/specification/mockups for the following week’s sprint.
Weekly demos are part of the development process and have a huge influence on the quality of the process and speed of development, in our case.
# A partner who understands the business
During the last 7+ years, we’ve built and failed with many of our own startups. Two-sided marketplaces, mobile apps, SaaS businesses, E-commerce, B2C/B2B platforms, and more.
As serial entrepreneurs, we’ve learned it’s not all about the code and technology behind your product – it’s about the business.
Your development partner should understand that and challenge the new features you develop, help you focus on priorities, advise you from a technical perspective, and connect with you as partners in their network.
Do as much as they can to make your business succeed.
I’m always saying: “Success of our client is our success. So, we should do whatever we can to help his business succeed, not only build the product.”
# Ask for recommendations
Ask the company for recommendations; look for reviews over the internet (ex. Clutch, Facebook, Google+).
Dig deeper into a local community during Meetups – ask them about their opinions about the company. Look at LinkedIn and which of your contacts have the founders of the company in their network – ask them for opinions.
Check reviews to get some different points of view.
You don’t want to feel a language barrier – English is a must, nowadays. You want to have a software development company as your partner – to advise you, not only to write the code.
Creative problem-solvers with great language skills – Those are the guys you look for. Therefore, think twice before outsourcing your product development to India/Philippines/Vietnam.
A great technology is around 30-40% of a business’s success.
Therefore, look for a partner who can advise you, not only write the code.
Based on HackerRank, Poland is in the top 3 of the best developers in the world.
Where would you like your external software development team to be based? 🙂
# Flexibility vs. inflexibility
If you don’t have exact mockups, specification, user stories, project plan, and a well-documented product with a few years of experience building similar products – Don’t choose the fixed price model.
It will simply cost you more money than a time & material based project.
If you choose a fixed price, most of the software development companies will add 25% or more to cover the risk of not knowing the exact scope of the project.
Time & Material is the pricing to go with for most projects. Read more about the benefits of Time & Material, Compared to Fixed Price.
Checklist of questions to ask your potential Software Development Partner
- How do you work? Tell me more about your process/approach to creating an application. (Tip: Get a big picture of the approach.)
- How do we communicate during a project to know the PPP (progress, plans, problems)? (Tip: There must be a mechanism/procedure that ensures you know what’s happening in the project. You must be updated at least on a bi-week basis. You NEED to know when things go wrong. Dig deeper using the next question.)
- How do you ensure we know when things go wrong? Helper question: tell me how you handled a project in the past that went wrong. (Tip: First, nobody wants to deliver bad news. Make sure they have a mechanism in place. Second, nobody’s perfect, so there must be a case that went wrong – listen to what they took out of it. Third: no one likes surprises – the best is to be prepared for the challenges.)
- What do you expect from us and what should we expect from you during the cooperation? (Tip: See what the roles are in the new-forming team. There’s no one way to set it up, but it is good to know what to expect. It’s great to know from the beginning what is the scope of responsibilities for each party.)
- How do you try to deliver the product that will match our and our markets expectations? (Tip: See how they work on figuring out what you really need.)
- What collaboration tools do you use during the project? (Tip: Tools are not that important; however, it’s great if they use something other than email to communicate fast and collaborate in a group (you + them + anyone interested in the project)).
- Will we use an instant communication system? (Tip: It is great to communicate often and ask questions just around the time they appear.)
- Will the developers assigned to my project work on any other project at the same time? (Tip: It is way more efficient when a developer is committed to one project only.)
- How do you ensure software quality? (Do they use, for example, peer code review or automated tests?)
- Will I own the source code? (Tip: check the agreement.)
- Do you work on technical documentation?
- Could you provide me profiles of the assigned developers? (Tip: They will be anomyzed – with no personal/contact data.)
- Can I talk to the best-skilled person on your team?
- Tell me how you will solve/build a…. (Tip: Give an example of a tricky part of your app and ask the potential software development partner how they will approach it.)
- Could you share with me your best practices for writing the code? (Tip: ex. we have it written down as a handbook and use an ESLint company file….)
- Why are you better than other software houses? What makes you special? (Tip: ex. Sometimes, it could be a PM or QA or Senior/Architect Mentoring.)
- How easy will it be to scale a team by 1/3/5 developers? How much time do you need? (Tip: if you plan to scale the team, communicate it to the software development company ASAP. Around 1-3 months should be enough to scale the team.)
- What is your pricing per Man-Day? What does it include? (Tip: ex. Sometimes, it could be a PM or QA or Senior/Architect Mentoring.)
- Have you done any project similar to mine, regarding the Industry/Technology/Product Features?
- Could you provide any testimonials/references from your previous clients? (Tip: Check clutch.co, have a Skype call with one of the customers, check Facebook Reviews or simply google it.)
- What is your experience working with Startups/SMBs/Enterprises? (Tip: Ask about the size of companies they worked with, ask to give you examples of projects.)