Most of these concepts are probably familiar, but it’s good to clarify some of what we will be discussing. When we talk about outsourcing, we mean using an outside firm to deliver on a need or fill a role. This is in contrast to prioritizing existing staff or hiring additional personnel to complete the task. This is just one example of many different build-vs-buy decisions that you constantly face when running a business or organization. What we hope to accomplish here is to help make it clearer when outsourcing is beneficial, and how to select the right technology partner
Starting a new project is the most common time to consider outsourcing. Projects can range from a simple MVP for a startup, to a new internal application in an existing enterprise. The primary reason to consider a technology partner is either a non-existent development team or not being experienced enough in some way to take on this new task. The alternative to outsourcing would be to hire the necessary talent to fill out your team, but there are a couple of considerations that need to be weighed when making this decision. The first consideration is whether you can actually hire the talent that you need, and do so within your desired time-frame. The second is: what you would do with this talent if the project needs to pivot?
Feature development, refactoring, or even rescuing a project are all valid times to consider outsourcing. The need to rescue a project most often occurs when a client has tried a low-budget outsourcing option in hopes of saving money. Another permutation of this scenario is when the initial version of a product is in place and now needs to add significant enhancements, beyond what the existing staff is capable of completing. The trade-offs here are very similar to new projects.
Migration of legacy systems is the need to refactor or rewrite an existing system to use more modern technologies, or a desire to lift and shift on-premise infrastructure and applications to the cloud. Each of these scenarios are surprisingly common (or perhaps not so surprisingly). One reason to consider outsourcing for migrations is that your existing team may not have the necessary expertise. Cloud migrations require a wide array of knowledge in specific technologies in order to complete them successfully. Another reason is that you may need to continue adding enhancements to the existing system while migrating to the new system. In cases where this happens, you will need a larger team during the transition period.
You’ll notice that in these scenarios, the alternatives to outsourcing involve either hiring additional full-time employees or shifting the priority of other work that you have in the pipeline. It is important to note that a software development initiative often require a large team for an initial 3, 6, 12, or 24-month push, but a smaller maintenance team thereafter. This highlights an area where outsourcing shines – temporary or load-based workforce.
How Does It Work
One of the big questions when considering outsourcing a project is: how exactly would it work? What would the process and interaction be like? Even if you do outsource work regularly, this may not always be clear or you may be locked into one mindset. Typically the technology partner handles most of the day-to-day necessities for your project. They work collaboratively with your company to gather requirements, set milestones, and make sure that everything is proceeding according to plan. Their developers and architects, design and implement, optimal solutions to meet the goals and requirements set forth. This model offers the advantage of limiting the distractions and the resources required to manage your project. However, a traditional approach may not work for your organization. Statistics have shown that most technology initiatives are never successfully completed and the less involved you are with the day to day operations the less successful your project will be. If your organization has limited resources, and requires a hands off approach, make sure to outline in detail your project plan before beginning. Focus on creating workflows for the user experience, and really understand how you want the internals of your system to function before moving ahead with a project. Outline your goals and objectives and how you plan to achieve them. Start with a small core, and expand. Smaller more focused requirements will help to keep the development teams on track. The technology partner you choose must have a track record of working independently, only using experienced developers, and completing projects on time.
In order to increase your projects success rate consider using an alternative to the traditional approach, and combine outsourcing with in-sourcing. This hybrid approach allows for a few in-house resources to work collaboratively with a full sized development team provided by your technology partner. This method provides the load-based workforce needed, increases your capability to and to maintain and support your application once it is finished, as well as naturally sharing inside development knowledge about your application to your internal team. Your technology partners’ team essentially trains your in-house staff while developing your software. If this approach sound interesting, take a look at our other article discussing it at length.
Who Are You Going to Count On
Now that we’ve covered the what, when, and how, the question is – who should you select as your technology partner? Select a technology partner based on track record, and the type of work they have in their portfolio. If they have not done anything like your project before you might want to consider looking elsewhere. Make sure they have access to top-tier talent, and the breadth of experience necessary to complete the project on-time. Experience, not only across tech stacks but across business domains, is very difficult to find in one place.
With an experienced and proven partner, you can mitigate risk, decrease your time to market, and increase the stability of your software. The right team provides all of these benefits by helping to navigate through the rough waters to successful project delivery. Success is a balancing act, as there are a large set of factors that result in success. Being able to find that optimal balance takes experience and expertise.
Whatever you do, please don’t pursue a low-budget overseas outsourcing option solely for the purpose of saving a ton of money. The old adage applies here: if it seems too good to be true, it probably is. This is not to say don’t be frugal – in fact, quite the opposite. There several ways the cost of a project can spiral out of control, and one of the most key performance indicators is throughput. Cost is directly tied to hours, and an experienced developer can typically write code much faster and efficiently than a junior level developer. For example, on a recent project JBS has been able to replace a low-budget option consisting of an 8-person team, with a 2-person team. The quality of the work was higher and the amount of throughput almost doubled. While the hourly rate per developer is important to consider, the overall ROI is typically higher with an experienced technology partner.
Experience matters. It really does.