Several of my past articles have dealt with “When to Work with Software Development Companies” and “How to Work with Software Development Companies.” I’ve been asked to come up with some thoughts about When NOT to work with an outsourced software development company. In the interests of full disclosure, I’ve worked for a fairly large software development company in the past. I’m a big fan of using such services for all manner of reasons ranging from cost to flexibility, and so on. In other words, I’m biased towards the value of outsourced software development; at least for some purposes. Still, after some recent conversations and friendly debate with colleagues and others, it’s clear that I haven’t given proper consideration to the other side of that coin. There may be some situations where you may be better off creating or keeping development capabilities in house. So I’m going to go over some of these considerations here. At the same time, I’ll try to inject a few ideas for how to mitigate them where or if possible.
So. What might these issues be?
If your organization is in a business category that has some kind of extremely restrictive requirements regarding exactly whom can work on your products, (software or otherwise), then this is a fairly bright line without a lot of room for interpretation. This would most typically be something government, (and specifically defense), related. But may potentially be a finance or healthcare issue. Your company may be constrained by contract to be only using U.S. employees and for any product work to occur onshore only. This category of highly constrained regulatory requirement is obvious enough and you’ll know that you’re in it. (Or at least you had better know!)
From a legal perspective, if it’s the case that there’s some kind(s) of especially onerous liability issue, you may want to have tighter in-house control of some aspects of development. You can have all the indemnification clauses you want in your contracts, but if there’s a serious problem, the lawyers are going to come after you anyway. (Note: Obviously, you need to check with Counsel here. Plenty of work gets done via outsourcing, both onshore and offshore, for all manner of regulated industries. This can include finance, healthcare, government, etc. So this issue is really only if you really do have some special issues that require tight internal controls for some reason.)
Angel or Venture Capital (VC) Funding Blockers
For technology startup companies, there may be funding sources that look poorly on outsourcing your product development. While others might see using external resources as sensible, (even desirable), if done properly, and still more don’t care either way, there are some funding sources that want to see you operating all your own business operations. They want to know that your strategic assets are solidly under your own roof and perhaps that you yourself can fully operate your staff and produce value. You have to know your own target financial sources to understand if this is a potential challenge for you. As an entrepreneur, if you bootstrap your company or build an early Minimum Viable Product (MVP) with friends and family funding, you don’t want to get blocked at the VC door from the start.
There may be some irony here in that – years ago – the feeling seemed to be that you really had to have your own team in house or how could you be serious? But in the age of Minimum Viable Product (MVP), etc., it seems that ‘anything goes.’ And the idea of clawing your way to some basic launch of anything towards product/market fit is just fine no matter how you do it. Sometimes this is with a full service external firm, or possibly with a so-called “Low Code / No Code” service. So assessing whether this is an issue or not in your particular case may be challenging. And, it may be less of an issue that it used to be. But it is something to consider. Discuss with some of your potential funding sources if you think it may be a concern.
You Have No Clue What You Need or How to Get There
This point may be arguable. A talented full service, full stack design and development shop may actually help you define your product. It could actually be exactly what you need. However, if you are really unclear about basic issues regarding the value you want to produce for a target market, you’re probably not quite ready to fully engage a design or development firm. You may need a market research or pure user experience firm or consultant(s) to help get your idea to at least a clear concept level. The problem here is that you’re contracting for services. So yes, you’ll need to be somewhat specific about those services. Otherwise, why are you burning the cash? There’s going to be a Statement of Work (SOW) of some sort. Now, you can of course have some form of Design Sprint actually BE that work. However, clearly… you need some reasonable degree of direction. And if you are crystal clear on your goals and objectives? Great. Did you include any non-functional issues? Like speed or quality? What about that very fuzzy issue of technical debt? There’s a lot of ways to build things. Can you be clear enough to get what you really need?
You have an idea that, done properly, likely takes several hundred thousand dollars to bring to market well. Yes, you’ve heard about Minimum Viable Product (MVP) and lean techniques to get basic valuable features to market. Still, you’ve determined for even the simplest basic launch, (or test even), you need web, and full mobile apps on both iOS and Android. And oh, yeah, a non-trivial amount of backend admin and reporting. And yes, there will be at least some minor ongoing DevOps needs to keep things well monitored and running smoothly. Sadly, you only have $50,000. If you try to find a cheap dev shop or solo developer to bring this to market and you have no cushion and relatively little experience defining crystal clear requirements with perfect prioritization, you have some serious risks of failure here. Software development is almost always a bumpy road and you’re typically going to bounce off some guardrails, even with highly competent developers. Maybe there’s some SaaS product that can get you going; a Directory Product or eCommerce shop provider, maybe a low code / no code platform, or whatever. But if you really need custom work, if after a few chats with several firms or consultants you find a couple that lowball enough to get into your zone, but you have no contingency funds, well… I wish you the best. Your clue here should be if several reputable firms are giving you pricing or explaining to you that in broad strokes something is going to be $200K, (or $2M), and you find someone who can do it for $50K, you should really question that. Or even before getting to actual quotes, general discovery chats with firms have them choosing to not even bid on your project, that should be a clue there may be a funding issue.
Plenty of Funding
Can there be such a thing? If you actually have lots of funding, why wouldn’t you build up your own internal team? Maybe you would use outsourcing to get jump started or fill in some early gaps with staff augmentation, but if you’re well funded, you would not be wholly dependent on an external firm for your productive capacity. In this case, another option is to build your internal core team, but possibly still outsource for specialty resources, redundancy or possibly DevOps coverage at varying times of day. But your goal would still be scaling your own team, because you have the resources to do so. What some companies will do in these cases is prioritize hiring an internal lead CTO and maybe a couple of their top priority engineers, but then outsource other components for the purposes of speed as they recruit staff; which can take some time.
Intellectual Property & Trade Secrets
Some people say Nondisclosure Agreements, (NDAs), aren’t worth the paper they’re written on. (Or digitally signed… whatever.) This may or may not be true, but is somewhat irrelevant to the reality that if situations come to bear related to a breach of confidentiality, you’re maybe headed to some large legal problems and bills regardless of where any expensive and lengthy legal battles go.
Now it’s certainly true enough that a full time internal employee or a ‘trusted’ partner can be responsible for a breach, but when using an external firm, you’re also clearly extending the tent a bit in terms of where some of your intellectual property might go. Or for that matter, who is producing it. Also, there’s an old saying “you can’t un-ring a bell.” You may engage with an external firm that’s highly reliable and with wholly honorable staff. And yet, they can’t help knowing what they’ve learned. While they may be constrained by contract from certain competitive activities, a worker at that firm may still leave to go elsewhere. While they might not directly ‘use’ your information, they’ll nonetheless have been somewhat informed by it. That gets to be a longer supply line of info. At least with your own hires, you should be able to have tighter non-competes. (Though my understanding is these can be invalidated if overly restrictive as well. This is definitely one of those, “check with your counsel” items.)
Loss of Control, Unknowns
Stuff happens. Even with an internal team, things happen beyond our control. Whether events. Pandemics. Whatever. Now, that’s bad enough internally. When dealing with an external firm, you’re dealing with their crap too. If their management screws up, if their home country has a power grid failure… if… if… if… you have even less control of that than you do internally. One could argue such things can happen anywhere. And that would be correct. Still, it can be harder to manage when you have essentially zero control of something ten time zones and an ocean away. And since you don’t really have control of your own project, (which is one – maybe smaller project – among possibly many in your contractor’s shop), you may be hard pressed to try to engage contingency plans. (Pro tip if you do go outsource: In any case, always have access and a backup of your code assets. Make sure it’s your repository. Never let any paid for IP of YOURS be held hostage or accidentally locked away from you.)
You Can’t Handle It
Are you a good partner? It can be challenging to work with an external team. And to get the contract right in the first place. If you yourself, (or your team), is not amenable to working nicely with others, outsourcing might not be for you. And especially if you outsource offshore, are you ready for dealing with any time zone issues? Can you leverage the time zone difference? Or will it be a hinderance? Language issues? Cultural fit? A lot of offshore firms skew their work hours to match some aspect of U.S. time. But this doesn’t mean you should be abusive of others’ time when it’s time for them to actually go home. Can your people be patient with others who’s English might not be perfect? Many outsourcing companies may have project lead interface folks who are native English speakers to help run projects. But often, you or your teams will have direct contact with other team members, which is as it should be. Typically, your external team members will speak English fairly well. Still, there can be some barriers here. Your internal people quite likely don’t speak their native language. Do they respect that their foreign partners have gone to the trouble to learn English? Can they respect – or at least leave aside – any cultural or local issues that interfere with their own?
And can you manage your own expectations? Just about anyone who has ever been in any form of client/contractor relationship has had some level of contention over understandings. Whether it’s the contractor re-building your bathroom or your software dev team… that conversation is going to happen. You will say or hear things like this: “But this is clearly what I meant when we said…x, y, z!” “Oh come on, obviously this other part is included or implied by this larger component? How can this little feature be out of scope?” “Yes, we understand we’re running a week late at this point, however please realize this is solely due to a delay in approval on your part. We did our best to work on non-dependent components, but…” And the list goes on. These things will always happen. When this is internal, we tend to burn time and that of course still equates to dollars on a spreadsheet somewhere. But somehow, it seems to feel worse when someone has to pay an invoice.
You have to know how to be a good client. A good partner. It’s maybe the case that “the client is always right,” but… not everyone should be a client. If you don’t know how to be a good partner, outsourcing might not help you.