What is a software outsourcing company [SOC]?
Software development outsourcing is about hiring a team of developers (or just one developer) to take over the entire software project or its parts. Besides programming services may include consulting, training, testing, technical support or really anything related to software you need the partner to do for your company.
Benefits of outsourcing include cost savings, access to the talent pool, time savings and more.
The outsourcing company can be local, offshore, nearshore or hybrid (combination of local and offshore). Check here to find out about differences between them as well as advantages and/or drawbacks of each model.
There are 3 main reasons for engaging in outsourcing:
- Hire an outsourcing team to work on a specific project. In this case, the SOC has to provide all resources starting with Project Managers and ending with developers and QA/documentation.
- Extend your current team with developers from the outsourcing team to work on a project or for a period of time. This is also called a Staff Augmentation model. With this model, the hiring company will be the one who is managing the work of developers, even if they are offsite.
- Hire SOC to maintain existing applications. Some companies want to free their own people to work on more important business activities and outsource legacy software and support.
Depending on the reason for hiring the questions you need to ask them before committing may vary. I will comment separately when any questions are unique to specific cases.
1. What kinds of companies do you typically do work with?
I’ll ask about the size of companies with whom they previously worked and the kinds of projects they did in the past. If I am a startup I need to know if they had experience working with startups.
2. Does SOC have experience with projects similar to mine?
When hiring I am hiring for expertise. And expertise does not mean only programming skills, I want developers to be knowledgeable in my domain or domain close to mine.
If I am developing an online ordering system, I want SOC with experience in payments and various requirements for accepting credit cards online like PCI compliance. And I need the developers that worked in my domain to be on my project because SOC may have hundreds of developers and not all of them are equal.
Furthermore, I expect a detailed answer to the question. If the answer is not full enough, I’ll ask follow-up questions like, “how long did the project take?” or “did you have any challenges implementing specific technology?”. If the example project was short or was done by a single developer, and mine requires a team for an extended period the SOC may not be the right choice.
3. Can you provide examples?
Like with any developer it’s not always possible to show the work they’ve done for all clients because of NDAs. But if the company was in business long enough, they should have some samples publicly available. What I am looking here is for a breadth of types of projects completed by SOC. But keep in mind, this does not mean that the people who worked on those projects will also work on mine.
4. Are you big enough to scale when need, but small enough to care about me?
There are a lot of outstanding developers in India. The problem is most of them work for big companies like Oracle.
When our company was looking for SOC our leadership knew that for best outsourcing companies in India our company would be a small fish. This means that SOC will provide the best talent to their biggest and most important customers and we get second and third tier programmers.
That’s why our leadership decided to go with the SOC in Sri Lanka which had development team bigger than ours but not 20 times bigger. So when needed the SOC could quickly add more resources, and they tried to provide their best developers because we were their biggest customer.
5. How much will it cost?
I was told many times that I shouldn’t look for a cheaper option, but rather look for a good fit. I agree with this assertion up to a point. In fact, cost savings are the primary reason to consider SOC at all.
And I don’t agree with the premise that I have to pay a premium for premium developers. Nobody can convince me that good programmer in Durham, NC is less capable than a good one in Silicon Valley, but the fact is that the latter will be more expensive.
Another example is hiring a home remodeling company. When I was planning to upgrade my kitchen, I immediately rejected the highest bidder and went with a more competitive option, both in quality and pay.
Anyway, if I am hiring SOC individuals to augment my team I am looking for hourly rates. If it’s a project, then I am expecting quotes on the entire project or different phases: consultation, prototype, development, and maintenance.
6. Which services are not covered under my contract?
If I am contracting for a project, I expect that main services like development, testing, and project management are covered. I may or may not care about documentation or deployment, but I need to know what I am paying for.
7. What if I’m not satisfied with the quality of the product?
If I never outsourced before or I never worked with this particular SOC I want to make sure that I have an exit plan. If for whatever reason the partnership didn’t work out, I want to know the fees associated with canceling the contract.
8. If your company makes a mistake how will that be dealt with?
Nobody is perfect, we all make mistakes, but at the same time, nobody wants to deliver bad news. The last thing I want is SOC to hide their mistakes. I expect transparency and honesty.
If there is a problem I prefer to be notified immediately and the issue to be fixed as soon as possible. I need to make sure that there is a mechanism in place. I will ask for an example of things gone wrong and how they handled it.
And I want to know if I will be reimbursed in case if SOC is responsible for the error.
9. What makes your company unique compared to others?
Each SOC has a sales pitch they tell all customers so answer to this question cannot convince me to choose one SOC over another, but it gives me some idea if a SOC is a good fit for my company.
10. How long have you been in this business?
They used to say that no one ever got fired for choosing IBM. I am very conservative when choosing a business partner because there is money and opportunity is involved. It’s always best to outsource to an established, financially stable provider. I want to make sure that SOC will not disappear in the middle of the project.
11. Can I speak with some of your previous clients?
It’s good to know SOC’s client list. Who are their largest clients? How long their current client base has been working with SOC? What percentage of clients would refer to them?
As in any interview checking referrals is extremely important. I will contact former SOC clients and ask about the SOC’s strengths and problems. Specifically, I want to ask about areas that are critically important to the success of my company. I will definitely ask follow-up questions. In addition, I will check Facebook and Google reviews.
12. What is the minimum duration of the contract?
Naturally, SOCs prefer longer contracts as we all do. So the SOC may not agree to take a small project. If my project is too small, then my options may be limited to finding individual programmers instead of SOC.
13. How do you estimate the project duration?
The cost of the project is a product of duration and hourly rates. Longer the project takes – more I spend. So, it is possible that if more expensive SOC can do work faster, than the overall cost could be lower than with cheaper SOC working longer hours. Furthermore, time to market may be more important than the cost.
14. How many people will work on my account?
The number of people working on a project typically depends on the complexity of the project and less so on its duration. Nine women cannot deliver a baby in one month and similarly adding more people does not always speed up the work because some tasks cannot be parallelized.
15. What does the application development process look like?
I want to get a big picture of the process approach. Are you using Waterfall or Agile? If Agile, then is it Scrum or Kanban? Do you have CI/CD implemented for each project? Do you have staging, testing and production environments? Which performance indicators (if any) did they establish?
How do you ensure software quality? Do you use peer code reviews or pair programming? Do you develop applications using TDD (Test Driven Development) methodology? Do you have automated tests or do you test manually?
If I have an in-house developer, I want him to be engaged in this conversation.
16. What technologies are you specialized in?
I had an SOC reached out to me because they had a team of React developers was finishing their current project and they were looking for a next one. When I replied that I am only interested in .NET she said that they have a .NET team as well.
Most programmers know more than one technology but they normally very good in one main stack and know some about others. So, if I am hiring .NET developers I want to make sure that .NET is the main expertise of the development team, not secondary skill.
17. How do you find and hire developers?
After TopTal’s success, I often hear individual SOCs claiming they hire only the top 3% developers. This claim allows them to charge higher rates. I want to know how they decide if a developer is in the top 3% and not say in the top 15%.
Personally, I don’t believe in interviews that Microsoft used to conduct – asking a candidate to solve a puzzle. I’ve seen very little correlation between the ability to solve puzzles and building software useful for customers. The good thing is that with developers past performance normally indicates future performance (unlike stocks).
18. How often do you train your employees?
Best companies invest in their employees. If SOC is not spending on training, then they cannot claim that their developers are in the top 3% level. Or maybe they are not investing in training because employees do not stay with the company long enough?
19. Will I be able to interview developers?
If I am hiring SOC as an extension of my existing local team I want to be able to interview each developer and decide if he or she is a good fit for my company. The process is the same as if hiring local developers with additional requirements for communication skills. I will have a top developer in my local team to conduct technical interviews. And I will assess if they can fit well in our team.
20. Where are developers located?
Even if the company is technically located in the States the development team may be somewhere in Ukraine or Argentina. If I never worked with foreigners, I may need to weigh the pros and cons of working with offshore/remote developers.
This may be a viable solution if I am outsourcing the entire project especially if SOC provides a project manager on site or locally. This may not work if I want to add more resources for my team because existing local team members will have to work with remote developers.
Even outsourcing maintenance requires frequent contacts between 2 teams which may not go well mainly because of intrateam communication issues.
21. Are your developers fluent enough in English?
If my team is going to work with SOC developers directly I want to make sure that they speak English well. I want them to understand the local dialect as well.
22. Do your developers offer new ideas?
One fear with outsourcing contractors is they normally just do what you ask for. We usually depend on our employees to drive innovation. Ideal SOC will be the one that works as a partner, educates when needed, helps to choose proper technologies, advise and offer new ideas.
23. How do you try to deliver the product that will match our and market’s expectations?
This one is related to the question above. I want to know if the SOC will simply follow my directions or they will truly work on figuring out what we really need before starting working on implementation.
24. Will I own the source code?
I’ve heard a lot of horror stories about SOCs keeping the source code after finishing the project to themselves as a way to ensure getting maintenance gigs after project completion.
Ideally, I want to have the source code stored in the cloud source control platform like GitHub. Git is a distributed system, so I can keep a copy of the entire code locally on my pc.
This way I know that even if developers delete the project in the cloud, I can always restore it to another cloud from the local copy.
An additional advantage of using a source control system is that I can see how much code is being produced on a daily basis. Seeing daily changes in the cloud gives me confidence that SOC is making progress.
25. Will the same developers assigned at the beginning of the project be on the team till the end of it?
Some SOCs practice bait and switch tactic when they first show their top developers to get the contract. Once the customer agrees they switch top developers with juniors and customer pays a higher rate for inferior resources.
I want to make sure it doesn’t happen to me.
26. What is the turnover rate at your company?
I understand nobody works for the same company forever. But I am concerned with the possibility of losing a developer in the middle of the project and with the developer leaving important knowledge of the domain and the application gets lost as well.
If the turnover rate is higher than 10% it’s a red flag. I also want to make sure that the replacement was trained by the developer before he or she leaves.
27. Will they be happy to maintain my existing code?
One of the reasons to look for outsourcing is having someone to maintain legacy code while my main team can focus on new priorities.
When I was talking to one SOC and asked about resource retention she mentioned that if I give their developers exciting projects then developers will be happy to stay. I told her that projects I have are not exciting and she responded that may be the SOC is not a good fit and I may need to look for other options.
That’s actually was a good honest answer.
28. How much time would you need to scale up the team?
I want to make sure that when I needed 2-3, or even 20 developers the SOC can support me. While finding 20 developers is not easy, adding 2 more developers should not take more than a month. After all, the ability to scale up quickly was one of the primary reasons to consider SOC.
29. How do you communicate during the project?
If I am only communicating with the Project Manager (PM) how often will I get updates? I want to have demos every week or two. I also want to make sure that PM available for phone calls.
If my dev team is working directly with SOC developers I want to have single instant communication channel like Slack in addition to emails. I want to know the hours when developers available.
Ideally, I want at least 4 hours to overlap between my team and SOC. And if I am working with programmers directly, I want them to be able to access the Project Management/Sprint Planning tool my team is using.
30. Is PM dedicated for my project?
I should know if the PM (if there is one) shared between multiple projects or only working on mine. It is way more efficient when a person is committed to one project only.
Obviously, if the SOC team I am working with consists of 2 developers I can’t expect a dedicated PM, but if I am hiring a fairly big team then this is not an unreasonable expectation.
31. What security procedure do you have in place to protect my data?
SOC must have a list of security measures spelled out in the contract. Do they have a data recovery plan? What about a business continuity plan? Do they store data in the cloud or on-premise? What happens when an employee leaves the company? Is there a standard procedure to disable all accounts of the terminated employee?
32. How do you see my role in the project?
SOCs love engaged customers. When a customer is engaged the risk of project failure is less than with a less interested party. I understand this and I want to know what my obligations would be as a client.
How much time should I devote to working with PM/developers? Would I have to meet any deadlines? It’s great to know from the beginning what will my responsibilities be.
33. How often should I visit your employees?
If the project is long enough, I need to establish contacts with key personnel by visiting them in office. If developers are working offshore, then I should visit them at least when the project is initiated. Read here about the importance of visiting offshore teams.
34. Will you support during off hours?
The software is not only about writing code, testing it and deploying to production servers. Software tends to break at times least expected. Servers do not always heel themselves after reboot.
During the first couple of weeks after the software has been installed, there were will be multiple instances when programmer’s assistance is needed.
Or maybe I operate a 24-hour business and I need support during the night. I need to make sure that someone is always available on the SOC side and they can handle my needs.
35. Do you offer long-term support?
Similar to the question above I need to sign a long-term support contract. I wouldn’t work with any SOC that does not provide it.
I hope the list I put above will be helpful when you decide to go with the outsourcing company. I want to conclude this with one final point about the cost.
While cost is very important choosing SOC solely on the base of cost may backfire at the end. At the same time, I do not suggest that more expensive SOCs producing more quality code.
As with any contractor you have to interview several of them, get quotes, see samples of work, call references. After narrowing down the list, visit their offices and find a good match.
Good luck with your endeavor!
Image used: ter Burg, Sebastiaan “Wikimedia Hackathon 2013 – Day 3”. May 26, 2013. Online image. Flickr. Mar 8, 2019. https://www.flickr.com/photos/ter-burg/8852987486/