How to Outsource Software Development Right: 12 Reliable Tips from a 12-Year-Old Provider
So, you are thinking of outsourcing software development? If you have come this far, you already have a goal, an idea, a vision, or maybe, even a written RFP (Request for proposal) with features described in some detail. You may have also determined a rough budget and timeframe. What’s next? Hire a group of folks who’ll make it happen and get started. As easy as pie.
The challenge is to successfully outsource software development. How to choose a vendor? What sort of details should you negotiate? How to compare estimates? How to avoid scams? Every business executive goes through similar questions before the project begins. We want to answer them all. We want to share the most valuable and useful tips we’ve learned after 12 years of being a service provider.
There is a wealth of information on Google around outsourcing software development how-tos but they are all the same. Here, you’ll find the results of real-world experience; a set of best practices that have been tested and proven in 100+ projects. We guarantee that you’ll increase ROI by 100% and avoid most mistakes by going through this single blog post.
How to Understand Software Development Outsourcing
First, we want to be sure that you understand what it takes to manage a project. What is the nature behind the different outsourcing scenarios, and why you may be thinking incorrectly about software development outsourcing? Let’s review the Iron Triangle, aka the Project Management Triangle model.
This model shows and describes an interconnection between the three pillars of any project in any business: time, quality, and budget. The idea is simple: these 3 parameters exist in balance, and any change in one will automatically affect the other two.
When we decide to fix one or more of the parameters, things get interesting. When you’re developing software or working on any project, understand that you can fix a maximum of 2 parameters. You can reduce time and cost but lose quality. Improve quality and reduce cost but extend time. Rapid and high quality, but at a higher cost. You can never address all 3 parameters.
Why is this important? Understanding this model will help you to build reasonable expectations.
Yes, onshore software development outsourcing will not be inexpensive. It will always cost more than hiring a team in-house. Why? Because you probably want to fix 2 parameters: quality and time. So, the cost will be impacted. In this case, you pay more because of the provider’s fee.
And generally, these fees are not an issue. You pay to avoid hiring, onboarding, training, and other related processes. Service providers deliver a reliable development team ready to go with no loss in quality. And that’s why companies choose outsourcing services. Whatever example, it will work. Whether it is a cleaning service, big data engineers, or open-space coworking, time to value is faster with someone outsourced.
What about offshore software development outsourcing? Most companies choose to outsource offshore when they want to focus on low price parameters. But, remember, you can additionally fix only one more.
When performing a project offshore, you face the struggle of a different mentality, business culture, and zero guarantees of quality and appropriate skill set. You decide how deeply you want to investigate these topics.
How to Form a Request
At the beginning of your software development outsourcing project, describe your goal and deliverables for success. Should you write down everything in detail, or is it okay to describe features briefly? Is it acceptable to have only an idea and no understanding of technical details? We came up with two ways to request software development services.
Tip #1: Choose your role: visionary or product owner
The number one option is to have a strong vision. This means to provide the essence of the future product on the molecular level. It also means accepting that the implementation details will be delegated to a service provider. The vision could be described in written format, as a presentation, or exist in your head, It doesn’t matter.
Our client Skillsetz is an excellent example of a vision.
Skillsetz is a bootstrapping startup from Illinois, US. Its founder had years of experience in business but little technical or product development expertise. By using this as an entry point, we built everything around his vision.
We were performing regular product management consultancy sessions to detail how the product would look and function. Simultaneously, we were developing the software itself and delivering it using Scrum.
Piece by piece, release by release, we tested hypotheses and polished the actual look of the vision. It resulted in a massive success and more than $5,000,000 in investments within the first 6 months.
The alternative option is to write down a list of features and how they should work. You act as a product owner by giving an outsource software developer a list, and the provider executes against the list.
You decide how you will approach the request. Remember, the two options are either being a visionary or a product owner. You should trust your solution partner and delegate details to them completely, or be an experienced professional who knows the what, why, how, and when of the solution.
Starting an online furniture business? Read this complete guide and make it right from the very first day!
How to Choose a Service Provider
Choosing a reliable service provider can be a heck of a ride. Whether you’re taking recommendations from a friend, researching by yourself, or delegating this task to experts, the chance for a poor decision is high. Here’s how we suggest tacking it:
Tip #2: Follow expertize
Watch the hands: hire an appropriate team to make a high-quality product. It’s that easy. To find these professionals, go through a framework of five whys.
Initially, this technique explores the cause-and-effect relationships underlying a particular problem. In the case of software development outsourcing, ask the future partner as many whys as you think are appropriate. There’s no reason to stop at five.
The overall process will look something like this:
- First, you make a recommendation or find a pool of different providers online using websites like Clutch or just searching keywords.
- Simultaneously, you do a simple website scan of potential providers. Go through each website to decide whether the provider’s case studies, technology stack, client feedback, values, and other business aspects align with your requirements.
- Then, after initial meetings, you start to ask questions. Ask whys until you lose interest or are satisfied. It sounds too easy but take our word for it. More than 90% of candidates will prove a poor match after the 5th or 7th why.
There is always an option to hire a consultant to help you find a solution partner. This sounds like a great option but has its issues.
How to Negotiate and Start a Project
Let’s assume you asked your whys, and now it’s time to negotiate the further workflow. You have a few providers to choose from, and they all give you an estimate, timeline, and terms of work. Here’s what to do:
Tip #3: Ask for rates and timing
Rather than just compare the totals, compare rates and timing. Ask service providers to divide their estimate into modules and estimate what it will take to develop each one. This will clarify which parts of the software are the most complicated and how different providers are handling them.
Additionally, ask about rates. There is an axiom that when a service provider says that your project will be developed only by senior developers, it’s a lie in 100% cases.
To see the accurate picture, you need to know their rates. Senior or even mid-range developers do not earn $10/hour. A service provider won’t show how much an engineer will make after agency fees, but you can roughly subtract 20%, to determine the specialist’s pay.
Evaluate the rates against the average rates within the chosen country. Commonly, the average rates can be easily searched, so you’ll be sure that the final number is more or less objective.
To sum up:
- First, ask the service provider to divide their estimate into modules and give you the number of hours each one will take, who’ll do it, and what the rates are.
- Then, go through the rate of each professional and compare it to average rates within the country to ensure they are objective.
- Finally, compare hours estimation and rates to find the most cost-effective proposition.
Learn How to Calculate the Cost of Maintaining Legacy Systems
Tip# 4: Ask for methodology
That might sound overcomplicated, but it’s essential to understand how the service provider calculated their estimate. Ask for written statements on the method of calculation. This is critical because it can show you that the numbers have a thoughtful background and logical reasoning.
Unfortunately, it’s a rare practice on the market, but it’s a positive sign if the service provider can provide you with a methodology. For example, every Maven client gets a Project Charter that explains every time and cost calculation aspect.
Tip# 5: Ask for a risk management plan
Another critical document is a risk management plan. It’s more important than the methodology. The goal is to address unknowns that might occur within the partnership.
What to do if the average rate of developers within the country rises? What is the workflow in case of an emergency or a war? How to act if an engineer unexpectedly quits? How to deal with possible legacy system migration challenges? These questions should be discussed and have a written plan beforehand.
How to Spot Scams
Throughout 12 years of operation, we’ve seen or heard about many different ways clients have been scammed. The market for software development outsourcing services is full of unreliable providers. Often, it can be difficult to understand that you’ve been fooled.
Tip# 6: Don’t trust a low price
Beware a service provider that offers an attractive price to entice you to choose their services. You’ll sign the contract, start work, and at some point, the service provider says that you are over budget and need to add extra to continue the work. You might hear reasonable arguments but don’t trust them.
A reliable partner will never go over budget unexpectedly. It will always be seen far in advance, and you’ll be aware of its reason from the very beginning.
Learn more about refactor vs rewrite
Tip #7: Don’t trust over-delivery
A less widespread practice is to put you on the hook for continuous delivery above expectations. Let’s say you signed a contract for migrating legacy applications to the cloud and agreed on 2 software engineers for the project. A provider says that only a team of two will be doing a job, but, in reality, 4 people work on it.
You are impressed by the level of delivery you receive for dollars spent. Then, the provider offers you 3 more developers for the same cost. Sure, it sounds desirable. You agree, and like previously, in reality, a service provider used 10 people instead of 5 to work on your project. Again, you’re amazed and ask for more. But now the service provider says no.
You agree on a team of 10, and 10 coders are actually working on your cloud migration project. You see a 50% drop in speed and effectiveness, but it’s unreal to drop such a massive team of 10 people. So, you have no option but to continue to work with the same provider delivering less.
How to Spot Failure
Congratulations! You’ve successfully chosen the right partner, and now the process has begun. How to spot if the project is at risk of failure? Are there any patterns or common mistakes for projects? Yes, and we have them all.
Tip #8: Scrum eliminates success or failure
Most software providers will offer you the Scrum framework as a magic wand to help you achieve success quickly and smoothly. Yes, it helps, and that’s why it is offered.
Scrum eliminates failure. You cannot fail, in common sense, using Scrum. It’s due to the nature of the framework. Projects fail when, by the time agreed, nothing is delivered.
The Scrum framework provides a client with the most valuable part of a product first and then, step by step, the rest is delivered. It means you always have something delivered, but the question is whether it’s the final product you expected or did the provider fail and deliver less than expected.
What could also hurt you is when you start to implement an off-the-shelf solution with no analysis beforehand. Find out why in our blog post: How Does Off-the-shelf Software Hinder Retail Business Growth?
Tip #9: Check for punctuality
The first and the most notable sign of failure is punctuality. The framework is simple: all the meetings and other pre-planned events should happen on time and as planned. If you see that the service provider is always late and unprepared, it’s a sign to investigate the overall project state.
Tip #10: Provider should keep promises
Another notable sign is when you see that a provider sticks to their promises. It starts with little day-to-day tasks and goes to the significant parts or even the whole project.
Analyze the little promises. If the developer told you that some feature that helps with managing technical debt would be ready for Friday and gives it to you by Monday next week, it’s a failure. If you are receiving small parts of a function with a delay, it’s likely that many other tasks are also delayed.
Second, you should expect regular adjustments to the projects. At the end of the day, the question is not whether a provider missed the December 31 deadline as you agreed. The question is did you regularly meet and discuss how accurate these plans are and what may be affecting them.
A project is a marathon, not a sprint. It’s a long and challenging process that will always go through different changes and stages.
How to Spot Success
If spotting failures seems to be a natural process, it’s also essential to know how to determine success. We have an obvious and less obvious tip for you to consider.
Tip #11: Transparency in everything
Transparent communication, financing, and management are the signs of a reliable solution partner. If the provider is confident in its operation and the project is proceeding as planned, there is no reason to hide details from you. You should know everything you consider essential and have access to everything you need.
Transparent relationships equal successful relationships!
Tip #12: Analyze your state
At Maven, we’ve learned that a successful project is about a successful client. The client is successful when the roadmap is clear, the growth points are apparent, and the strategy is determined. That’s what a good service provider should aim for.
A great example would be our client, Babypark. First, they came with a task to migrate a store to a newer version of an eCommerce platform.
The vision behind this task was that the company’s growth was stalled, and Babypark thought that by updating the technology, the problem would be solved. We analyzed and found out that the problem was much deeper in the software architecture. The problem was with the legacy software that the client was using.
After making a detailed application modernization roadmap, we developed a custom solution and unlocked the company’s growth. The organization became 300% more effective, but what is more critical is that they discovered the actual state of their software, knew it was interfering with their goals, and now know what to do next to keep growing. So, they started with very little understanding of a situation and went all the way to complete control over it. It’s what makes the project successful.
Outsourcing software development is not a piece of cake. A successful project combines in-depth analysis, effective execution, and reliable delivery. You might say that a portion of luck is important too. The more knowledgeable you are about the process, the better you choose a partner and the less luck you require.
We know how difficult it is to put your vision in the hands of some coders who aren’t even your employees. By doing it correctly, you’ll achieve results that will satisfy you personally and as a business. Call Maven today, and we will take your vision and create beauty out of it!