So you’re a startup and want to outsource graphic design, system administration or development? Don’t feel bad, this is very common. Often startups can’t afford to hire many people right away or do not have a team with every skill required to build the perfect product.
Should I Outsource?
Some will tell you that you should not outsource, but this is not what I think. Actually I won’t have enough of one article to tell you all the cases in which you should outsource (lack of time, not the required skills in-house, not enough people in the team…).
It doesn’t really matter why you want to outsource. What matters is that before doing so you ask yourself «Am I outsourcing what defines my company?» This is especially true for startups that focus around one main product: you do not want to lose control over what makes the core of your business.
Build Up A Team
I suppose you don’t want to be forever dependent on contractors, right? Your goal is to build up a team, because in the end this is what makes a startup. A passionated team can build anything if gathered around the right vision, and outsourcing without thinking can hurt that dynamic.
While a lot of contractors are very able and talented, the problem is that they are only part of the team very temporarily and will not get involved as much as your teammates. They will lack the long term vision and won’t think “if I do X, what will happen in a year when I need to make it evolve into Y”. The problem given to them will be solved, but later evolutions might be harder.
Remember that your team members decided to join the adventure for more than a couple of billable months. They will have opinions, ideas and will thrive to build the best product possible if you give them the means to do so. You want developers thinking by themselves and ready to go back and improve what they wrote months ago. You want designers that are creative and in phase with the company’s vision.
This is why you need to build what’s important internally and outsource only when you can’t do it in house… and even when you do, do it keeping in mind that you will have to integrate what has been created and that your team will have to maintain it. If done correctly, outside help can be a good thing for everyone, as mixing ideas and processes is always interesting and a good experience.
Outsourcing Done Right
Like I mentioned before, sometimes you need to call someone to help out. In this case you need to be sure you do not hurt your product or your team in the process. The deliverable should be easy to test, easy to maintain and easy to evolve. If those conditions are not fulfilled, you might deal with frustration in your team. If they are, everyone will be happy about a job well done.
Design
If you’re outsourcing your product’s design, ask to be provided with a full style guide, general guidelines, grid templates… anything that can help future designers can build on top of what you already have without having to start from scratch. Use a lot of constructive criticism and keep in mind the big picture: your product shouldn’t feel patchy, even if you got a lot of people working on it.
Development of a New Feature
If you’re outsourcing development directly inside your main product – like a new feature, you want to make sure the code that is given to you is good and perennial. To achieve that, you should ask from your contractors:
-
The code should be shipped in a modular fashion, avoiding coupling as much as possible. The new features should not interfere too much with the existing codebase.
-
A lot of pertinent automated tests.
- Documentation, not only on what the features are doing, but also on how they can be maintained and improved.
- Try collaboration with a member of your development team (if you have one), even part time. You want someone able right away to maintain this new feature.
- Enforce your internal best practices as much as possible if you have some. If you don’t, enforce the ones accepted by your technology’s community.
- Always keep in mind that you will have to live with this new code for a while and decide accordingly if outsourcing is the right move or not.
One Shot
The other possibility is to outsource something that is not directly linked to your core product. This could be a marketing campaign or something similar. In this case it is easier to get it right, and this is the situation where outsourcing works very well for a startup. You will not need to maintain the new code for long, it will not impact the existing code base… the only thing that matters is that the final result if up to your company’s standards.
A perfect example of that is my company’s new website.
We launched it recently and gave design control to a creative agency during development. We did this because we knew that they would create a better design than us. While we care and love about building things that look good, this is not our core business. Delegating this part of the job also gave us the possibility to focus more on our platform for social media applications which is what we do best.
During the whole process someone kept checking to see if we were agreeing on the choices made. The final phase of integration was made in house because we have great front-end developers that should be able to make the website evolve later on.
Keep Control
In any case, try to stay on top of what is going on and make sure everything is moving in the right direction. Remember that as a startup, your product is very important. Do not lose control, do not lose ownership. Build up your team.
You don’t want to end up with a Rube Goldberg machine made of a crazy patchwork created by dozens of freelancers. While it might get the job done for a bit, it won’t last.
This being said, there is no perfect solution. Some contractors become really involved and stay for long, some are so good that they will improve the general quality of your product… and if you found people like this maybe you should offer them a full time job!
This article was originally published on The Rude Baguette.
Since you scrolled this far, you might be interested in some other things I wrote: