A quick summary of AKF Partners' approach of what, why and how to outsource engineering efforts.
Our clients very often have questions over Why, What and How to outsource software development efforts, infrastructure, hosting, etc. Readers of our book or frequent readers of our blog will notice that the questions are similar to those we ask in our “Build v. Buy” analysis. The decision of what to outsource isn’t significantly different than determining when to buy rather than build.
Why outsource? There are three very good and common reasons to outsource engineering efforts.
1) You want to reduce your average cost of engineering and outsourcing may provide a way to do that (especially “offshoring”). The right kind of outsourcing can reduce your unit cost of labor for engineering efforts. But before you outsource, you should understand the full cost per unit developed of your engineering efforts so that you can measure and validate your cost benefit.
2) You have near term capacity needs to increase engineering capacity that you cannot meet with current hiring practices. If you need to 3x the size of your engineering team in 2 months, you probably need outside help.
3) You fear that the engineering capacity need will be short lived and do not want the risk of hiring W2 employees. Sometimes (2) and (3) are bundled together. If you don’t have follow on work for some new system or product, you probably don’t want to hire and then fire employees.
The “What you should outsource” is very often mistaken as “why one should not outsource”. There are almost always things you can outsource, and very often there are things you absolutely should not outsource. We typically discuss 4 areas with our clients to help them understand what can and what should not be outsourced.
1) Don’t outsource things that create strategic competitive differentiation for your company. Having a third party develop the thing that differentiates you from your competitors is giving away the secret sauce. It’s hard enough to protect intellectual property – if you simply give it to someone else you might as well just give it away. Now probably not everything you do differentiates you from competitors. For instance, if you run an ecommerce site you might determine that your product proposal system is a differentiator while search is not. Outsource search, keep the development of your product proposal and analytics system in house.
2) Don’t outsource product definition. If you are in a product business, you really can’t outsource the definition of the product that makes you money. We’ve seen customers try and it’s not pretty.
3) Don’t outsource your architecture or standards. Tightly coupled with product definition is the need to set the standards and architecture by which the platform abides. You may believe that the beauty is in the idea or the specification of the product but if it takes off it will need to scale. Few outsourcers are adept at defining scalable platforms because the largest and best companies simply don’t outsource that – ever.
4) Don’t outsource areas where you need rapid response and flexibility. These things might not be competitive differentiators – but if you expect a turn on a dime response in specific areas you aren’t likely to get those with a contractual relationship.
Finally we come to “How you should outsource”. Here again, we have three common rules for our clients.
1) Manage the outsourcer. That means that you need to add employees to manage the outsourcer and the projects, which in turn means that the actual cost of outsourcing is higher than what the outsourcer has quoted. Keep this in mind when considering outsourcing to dollar average costs down.
2) Expect conflict. Rarely do we see outsourced projects that don’t have conflict between internal engineering teams and the outsourced team. Expect it and be prepared to manage it quickly.
3) Deliver standards with specifications. If you expect something to be 99.99% available, scale to 10x the current volume and deliver new functionality be very specific and demand proof. We’ve even helped negotiate contracts where payment happens after proof in the production environment rather than delivery.
Summary: Look to outsource when you want to manage the risk of growth or contraction and to lower your engineering costs. Always expect that you will have to aggressively manage your outsourcer and always deliver specific standards of operation with your product specifications. Never outsource areas that strategically differentiate your company or product offering or where you need strategic or tactical flexibility.