Ask this question to fifty IT professionals (or to Mr Google) and you will get an even distribution amongst those choices. The true answer, as always, is: it depends.
There are thousands of opinion pieces on the subject in books and Internet. Here I elaborate a commentary based on my own experience both as supplier and consumer of contracting, outsourcing and offshoring services. My commentary will be a little skewed towards software development (design and coding) and testing work, but it could well apply to project management, business analysis, system architecture, implementation, UX design, change management, etc., etc.
Do it ourselves
Do you already have an individual or team working for you that already has the necessary skills and experience? (Note that against my copy-reviewing colleague’s advice, I wrote “already” twice in the same sentence quite on purpose). If you have the resources and knowledge in-house, or the necessary skills are attainable by your existing staff in the time available, would you even consider getting external resources?
Well, there are reasons you might do, such as helping with the up-skilling of your staff (learning by example often works better than formal/informal training), to bring in not just technical skills and hands, but external experience working for peer companies (oi! not with the competition) or in industries with similar technical or business needs.
If you, however, need the solution soon, if you are operating under a limited budget, or if your project requires fairly specialised skills that are not easy to master overnight, then read on.
This means that you find a person or team of people that will come in for a certain period of time, work with you and your team, get their fees and go… or not; there is nothing wrong with long-term contract relationships – although the ATO might think differently.
I’ve hired and rehired certain contractors for years. You keep going to the same mechanic, hair-dresser or dentist, right? The same applies to a good freelancer that not only has the right knowledge, but the right attitude, discipline, dedication and honesty, i.e. is a true professional.
Always keep in mind that a contractor is like a regular staff member in many senses. They have many, if not all, of the same obligations as your permanents, and many of the same rights. They need to be inducted into your company, be provided with the right resources to complete their work and, very importantly, be managed as anyone else in your team.
Contractors are a great emergency resource when you already have a development team, or at least the layer above and around the team.
I’ve seen many a small-business owner drag a freelancer from his cave and sit behind him waiting for him to write the latest app that is going to disrupt their industry. I’m not saying it has never or it couldn’t happen, but that’s not what works for most projects.
If you are a small business operator with a great idea or urgent need, you might be better off subcontracting or outsourcing the project rather than doing it yourself with contractors.
Subcontract and Outsource
Many companies use this terms interchangeably, and the purposes of this article I will agree with them; the relevant fact is that someone else is running the project on your behalf and getting paid for it.
For those, like me, that enjoy semantics though, I’d like to explain the difference: you subcontract when you are being contracted to do a job and then pass some or all of the work to another outfit. The client pays you, you pay the subcontractor. You outsource when you are the entity that needs the job done and you hire an external supplier to do it on your behalf.
This is obviously not the same as plain buying software products or services from a supplier. We are talking specifically about getting someone else to run a project that will deliver a solution or component on your behalf.
Ok, I have explained what I see as the difference between subcontracting or outsourcing, but for you, business owner or person tasked with finding a solution, what really matters is; is it possible to let someone outside of your control build that strategic solution that your company needs? The answer is a resounding yes.
You may want to consider these tips I put together after being asked the same question a few times, but in brief I can tell you that with the right supplier, subcontracting or outsourcing part or the entirety of your project you can obtain fantastic results, do it within time and budget and have someone tangible to make accountable for results.
The media is full of horror stories about failed outsourced projects, but there are thousands of good examples that don’t make the press. Unfortunately there are also hundreds of failed in-house projects. Rather than focusing on what could go wrong, you should focus on how to ensure things go well, and this starts with choosing the right supplier. Thereafter,
good and frequent communication, constant testing (I favour agile methodology) and clear definition of scope from the start are also essential to ensure a good result.
Strictly speaking this is a variation on the above, just that the work is conducted in another country. – I have always wondered if work done across borders in Europe is still called “offshoring” even if there is no shores in between-
If dealing with local suppliers can be complicated, dealing with suppliers overseas can be a lot more trying. There are many valid reasons to do it – cost, unique skills and language, to name just a few -but the care to be exercised is, naturally, greater.
If you want to offshore purely for the prospect of saving money, find yourself first people within your team or outside but in your part of the world that will closely manage the relationship, specify the requirements in detail, conduct frequent reviews, demand continuity in the dedicated resources, and will take testing very seriously. Build in-house or outsource locally the capability to manage the offshoring efforts.
What’s the conclusion?
There is no fit-all answer when it comes to charging the right people with your important project. In most companies there is no reason to stick to one model for the entirety of your projects. You can mix and match and adjust. There is no point on choosing the option that will be less expensive when it fails, but the one that has the highest probability to succeed given your requirements and constraints of time and budget.