What is Software Outsourcing?
Software outsourcing is when an organization hires an external individual, team, or firm to develop software. Normally, software design, development, testing, and implementation is done in-house by the organization’s employees. In outsourcing (or offshoring, if done overseas) this work is done by non-employees such as freelancers, independent consultants, contractors, and consulting firms. The reasons for software development outsourcing are varied and include a desire to save money, a need for specific expertise that’s hard to hire, and the desire to shift project management and risk to an external group.
Two trends are at the root of the increase in software development outsourcing. The first is the rise of the freelancer model of work, which drives individuals to seek to work for themselves rather than be a traditional 9-5 employee for one single company. The second trend is the acceptance of outsourcing as a cost-cutting and potentially quality-increasing measure. Organizations often look to hire consultants rather than incur the expense of recruiting, training, retaining, and replacing employees.
Benefits of Software Outsourcing
There are many benefits to outsourcing your software development needs. Here are a few of them.
Mitigate Your Risk
One of the best reasons to outsource your software development is to mitigate your own risk. When you outsource, that external firm has a strong interest in completing your project on time and to your satisfaction. Why is that?
Well first, the firm likely wants repeat business from you. They won’t get repeat business if they cannot complete the first job to spec and to your satisfaction.
Second, the firm wants a positive testimonial, case study, or review from you so they can obtain new work. The positive feedback isn’t possible when the work is done so poorly that they are fired or the software doesn’t work.
Third, a development firm is more likely to be permanently burned if something goes wrong than an employee. If an employee botches a project, they can always move to another company. If a firm botches a project, the results are potentially business-ruining for them. There is a lot more incentive for the development firm and its members to get the job done well than for an in-house employee. And if things go wrong, it’s a lot easier to point the blame externally.
Moving the risk to the firm puts the odds of success in your favor no matter what happens.
A second reason to outsource your software development is to save money. This is often the first reason that companies look to hire externally. While it seems expensive to hire a firm (we’ve heard of $500,000+ software development quotes!), the comparative cost of using in-house employees is worth it.
A typical software development team has the following members at the bare minimum:
- A Project Manager: $80,000+
- A Business Analyst: $50,000+
- A Database Admin/Designer: $80,000+
- A Front End Developer/Designer: $60,000+
- A Back End Developer: $80,000+
- QA Tester: $40,000+
Many teams have more developers than this, plus middle management, business development, a few more developers, and all of the benefits, training, licensing, hardware, and software the team needs in order to design, build, test, implement, and maintain the software. The salaries alone are nearly $30,000 per month (over $350,000 per year).
Those costs don’t include the cost of recruiting new employees when old ones leave mid-project or the wasted months of stalled projects. When you compare these costs to the cost of a project with SlideWave (less than $20K per month in many cases), the savings become pretty evident.
Of course, some organizations take the cost savings too far. They believe that if a little cost savings is a good thing, a lot must be great. So they’ll hire someone who charges $20 per hour to develop their application. The iron is that though they’d never hire someone at $20 per hour to manage that project, somehow the most technical and important part can be scrimped.
Tap into Expertise
A third reason to outsource your software development is to tap into specific expertise. For example, here at SlideWave I have several people who can code 3D client/server simulation projects like Halcyon – including me. You’d be hard-pressed to hire for that skill set in your area if you’re in a smaller city or if you want to pay less than $150,000 a year. We can “rent” you that experience for a fraction of the cost. (For example, the 2016 rate for a year-long application project is $145,000.)
My team has experience in contributing to open source projects, writing compilers, building full-stack automation software, and running software companies. This is experience smaller organizations and startups simply can’t afford to hire for a limited-engagement project.
Plus, your choice of software development vendor is an expert in what they do. This expertise means that they will often do the job faster and better than an inexperienced in-house team. Which also saves you money and reduces your risk of failure.
The Drawbacks to Software Outsourcing
Critics of software outsourcing cite their bad experiences as proof that software outsourcing “never works.” When you’re talking about traditional software development outsourcing, we agree.
The financial advantage of the low per hour may not be worth it.
Not all software developers are created equal and the quality you get out of that hour may not be worth the amount you paid, even at low rates. The idea that you “get what you pay for” comes into play with development, especially offshore developers. This is especially true when your senior developer who costs much higher per-hour rates has to re-do the work that you just outsourced.
Adding more developers to justify the low quality won’t help.
There’s something called “Brooks Law” which states that each incremental person added to a project will increase the time to completion rather than reduce it. Justifying the low per hour worker by saying you can add more of them doesn’t work.
- It takes some time for the people added to a project to become productive. We discuss this in “Why We Don’t Bill Hourly.”
- Communication overheads increases as the number of people increases. With more team members comes more people you have to keep in the loop, more people in each meeting, and more people who each have an opinion. It also means more people to manage on the HR side.
- Some tasks simply can’t be divided. Perhaps the tasks rely on the completion of the preceding task. Or developers get in each other’s way and solve the same problem in incompatible ways. Whatever the reason, adding more people won’t help.
It’s better to hire one or two developers whom you’ve hired for experience and communication ability. Train them well and then set them to task. This plan of action will get you better results faster than hiring many low quality developers whose work will take twice as long and still be practically useless at the end of the project.
Traditional outsourcing uses waterfall project management.
When you consider how most people do outsourcing, it’s no wonder that up to half of all outsourced projects fail. Traditional project management makes it difficult to steer the course of your project, something which almost always happens in an outsourced project. It also makes it easy to avoid communication, a factor which is critical to software project success. And when you add the fact that outsourced developers can be a world away, the need for regular (up to daily) communication is critical.
Don’t Outsource Unless You Do it Right
According to industry leaders, outsourced development works when you use agile project management. This is because agile (or scrum) forces constant communication between stakeholders and developers. It also requires that all work go directly to productive, priority features rather than spending hundreds of hours on features that may not end up in the final release.
If software is the solution to your business problem, then it makes no sense to scrimp on the very thing that will contribute to its success.
Cutting corners on your development staff makes as much sense as buying a 300,000 vehicle to go cross country. You wouldn’t risk your life on it, so why would you risk your multi-million dollar business on it? Despite what the budget sheets might have you think, software development is not a commodity. It doesn’t make sense to turn dsoftware development into a commodity as if it were the electric bill. This is one reason that so many outsourced projects fail outright.
Is the “per hour price” even the best indicator of a software developer’s quality?
There are so many factors that contribute to your overall budget that have nothing to do with the per-hour price. How quickly can the developer or the development team work? Is their code high quality? Is it bug-free? Do they even test it? Programming is not something as simple as hammering nails into wood. It’s a creative task done by creative and technical people of varying skill, speed, and experience.
The SlideWave Difference
My team and I do everything we can to avoid project failure. So far, we’ve been successful in bringing each of our client projects to successful completion.. which lets us continue work on the next project they send us.
To reach success for you, we:
- Regularly turn down clients who don’t have a clear business objective and desired feature set (e.g., who aren’t ready)
- Implement agile from the get-go, choosing to use sprints and morning scrum meetings instead of traditional PM
- Dedicate experienced in-house developers to your project, as opposed to offshoring the vital development work
- Bill by the project, rather than by the hour or per your “budget”, to guarantee your budget and incentivize efficiency
- Work sprint-by-sprint so that steady progress (read: new features) are developed, tested, and implemented regularly
- After each sprint, we talk with stakeholders to ensure that the features we’re developing still align with the stated goals
What has your experience been with outsourced software development projects? What tips would you give others? Share below in the comments.
SlideWave is an agile, full stack development team that focuses on high performance and complex software projects. Think 3D simulation, "soup to nuts" enterprise automation, and web-based applications. To learn more about us, click here.