Best practices in IT outsourcing
Outsourcing is a two-way channel. The client and the IT provider should act like a pro in the outsource projects.
Your business or company will always be in need to develop a website, mobile application or a software product at one point of time. So you have decided to outsource your software needs to a firm that has been in the IT business for a while.
Now you post your project in a digital portal, thinking you can find a decent developer or an IT firm that can help you accomplish the mission. As soon as you post, you get proposals overflowing in your inbox. You get to pick the best by looking at their website or portfolio, make the advance payment, get the work started and finish the project on time.
If the whole outsourcing was as easy as said above, then there is no need of this article. The reality is different and speaks entirely a different language of the outsourcing. Both the vendor and the buyer in this process shares their own bad experience they have encountered. To make sure your project travels in the success path, adopt best practices that outsource industry experts suggests.
If you are the client
You are a thousand miles away sitting in your desk while signing up a new project with some IT firm that you have not met before. (Probably they are from Ukraine, India or Poland). Their sales people promised you that you will get a nice good looking website or a robust software product.
But yet you get burned
Stories from the CEO’s,
- Making the down payment to the people who they have never met. (High risk in the trust)
- Realizing that half of them don’t speak English and the ones’ that speaks English cannot understand your heavy southern accent.
- Receiving the codes or the design after a delay
- The final outcome looks completely different from the one you have imagined in your mind
- All communication with the team coming to a sudden halt (bye-bye, $10,000 + 3 months of your time).
- Put up in the situation where shipping a bad product is unavoidable
What to do to avoid stepping on this pitfalls ?
We heard from the CEO’s stories that they used to stay up all night to talk to the developers or go and live nearby the agency they hired. But from dealing with many overseas outsourced projects, we recommend clients to understand the following 3 rules.
- Know what you want. A developer is not there to solve your problems. She/he is there to implement the solutions that you already have in mind.
- You don’t have to be “smart” while finding freelancers, you just have to be aware of common pitfalls and follow a framework. There’s no need to go with your gut feeling.
- Be reasonable and human. The best firms and freelancers are those who have the luxury of choosing their clients. They won’t work with people who don’t embrace mutual respect
If you’re very non-technical, it might be difficult to judge the complexity of a project. In that case, get a disinterested party (like an engineer friend you might have) to help you understand all the aspects of your idea and some important things you should keep an eye for.
1.Finding good development agencies and freelancers
There are plenty of good development firms out there which don’t easily find work because of all the crappy ones that saturate the market. Here’s how you filter out the noise and find the right one for you.
- Don’t follow stereotypes against a particular geography. For example, Asian firms often get a bad rep, but I can assure you that there are a few genuinely good and sincere developers there.
- Set your budget for yourself, but don’t be too miserly. Setting the price too low will attract firms which are willing to work for anything — precisely the ones you don’t want to give work to. They will cost you much more money than you think you are saving.
- For sourcing them, try to go through a third-party vetted network of freelancers or development firms. For finding freelancers, I highly recommend joining the big digital nomad groups on Facebook and posting your requirements.
Whenever you receive a bid from a developer, follow this checklist:
- Their personal website should look good.
- They should have a nice portfolio of projects; at least a few of them should be similar to your project. If your project is very unusual and they haven’t done something too similar, look for good variety.
- Look out for information which seems very inconsistent
- I wouldn’t always trust customer references, but sometimes I do if they are on their Facebook page and seem genuine.
- When you talk to them, they should be interested in listening to you and asking you questions about the big picture of the project and business objectives. They should also educate you on things you are not clear about. If after your first call with them you feel that they haven’t taught you anything or asked any good questions, ditch them.
- They give you a price quote which is neither dirt cheap (unless they are based in a third world country) nor too exorbitant.
- Do a few Google searches about them, and go beyond the first page of search results.
- Ask them about what all they want from you before closing the deal. If they mention things that I will mention in the rest of this post, they are probably a decent firm.
2. Make sure the requirements are crystal clear.
This goes for both the developer and the client. As a client, it’s your responsibility to ensure that you don’t leave any details while describing what you want.
- Provide as many mockups and wireframes as you can.
- Create a set of checklists you will follow to evaluate the project upon its completion.
- Communicate preferences (if you have any) in program design, code architecture, code styling etc.
- Make sure your final product will be easy to integrate with the rest of your tech stack/ecosystem and infrastructure, and also other third party services as and when required.
3. Decide on a strict communication and payment schedule
The key here is milestone management.
- Break down the project into a series of milestones which you can use to time the progress and quality of the project.
- Tell them that you expect them to communicate exactly what they have done, what problems they faced and what they plan to do next, at the end of every week.
- Do as many video calls as possible – always prefer video calls to any other mode of communication (especially phone messages). It will make a huge difference. Invest in hardware and software that gives you better sound and video quality if needed, and expect the other side to do the same.
- If you feel the slightest concern that something is not going 100% smooth, take it seriously and ask them about it. Be straightforward in your communication (without being rude) and if they give you vague or unconvincing answers, call them out on it.
4. Review their work in progress at each step
In this industry, you don’t just get what you pay for — you get what you ASK for. It’s up to you to enforce good practices so that you get what you want.
- Ask them to ‘submit’ their work at each milestone. Whenever they submit a piece of code, look at it!
- Use standard libraries like codeclimate to do a static code analysis. It will give you some information about its complexity, duplication, styling, bug risk etc.
5. Be human & be respectful.
- Be respectful. If you find that it’s hard to be respectful anymore, resolve the conflict directly by a straight-forward approach
- Don’t throw tantrums over tiny issues. Now, you might not be knowledgeable enough to know if an issue is tiny or major. That’s a complicated situation and I don’t have an “easy” answer. You should consider finding (or hiring) someone technical to look at the project at various stages and counsel you. This way, the developers you hired to build your project won’t be able to easily deceive you when they make a mistake.
- Don’t make threats about not paying every time you find a small flaw or bug in their work. It’s software my friend, there are always small bugs. Even Google and Facebook have bugs in their software.
- Don’t push unrealistic timelines on them. Good things take time. (And you, software firm owners and salespeople, shouldn’t push unrealistic deadlines on your own developers just because a client is being too demanding or a jerk! Your employees are human beings, and if you ask them to do something in too little time it could have very bad quality. Talk back to the client instead if you can.)
We can guarantee you by following the above standard protocols you can frame a smooth outsource project without having to make or face any blunders.