7 Things you can do to make Outsourcing Software Development Work

And Week 22 Updates on ZoomAdmin Startup
A while ago, I wrote a post “Does Outsourcing Work?” and I went through some points as to why Outsourcing doesn’t work in most cases. As you can assume, there were a lot of comments/opinions on both sides, but some people asked, well, what would you do to make it work better?
I had promised to write a post to share my thoughts on what steps to take to improve the outcome or make it work, didn’t get around to doing it sooner, but here it is.
If you missed that other post, you can see it here: LinkedIn Post
Week 22 Update – well, I’m trying some of this myself, I hired a few new QA/Developers for ZoomAdmin and going to try these steps myself. Why did I do this? Partially because of funding, we’re still early stage startup with no funding, hence can’t afford the talent pool here. But more importantly, I just came a cross to really smart young individuals and decided to give them a shot.
I consider ZoomAdmin team as bootcamp on steroids as junior developers get to work on a real product, get private video training, gain experience with enterprise development practices and standards.  I’ll do a separate post on this later.
Steps You Should Take to Improve Outsourcing:

1. Hire Smart People

There are very smart people elsewhere as well, but because you don’t have face-2-face interviews, you need to spend more time with the hiring process and come up with a strategy that works for you. But one thing is clear that there are more math/physics majors in other countries. While this doesn’t translate directly to software engineering, usually, individuals have easier time grasping complicated engineering concepts when they have math/logic or physics background even if computer science departments still need to improve.
 

2. Provide Video Training

I can’t stress this enough that dedicating resources on creating/maintaining video training for your apps/structure/code base/processes makes it so much easier to on-board new developers. More importantly, they play a crucial role with outsourcing as team members can watch it multiple times if they don’t grasp it the first try, especially when there are some language barriers.
 

3. Have Slack or Other Messaging Tool

Email or project management tools are too slow for rapid communication. Developers need to be able to get answers quickly to get passed their blockers. Yes, this does mean you need to have resources to be able to answer their Slack questions even outside of normal business hours.
 

4. Code Review

You should do this with any software development, not just outsourcing, but you need to spend more time and add more comments or point to certain videos/documentation in your comments to they can understand your quality requirements or standards. Unfortunately, they don’t have the luxury of seating next to you as you explain the whys the best practices and assume they can come and ask you if they forget.
 

5. Confidence, not Culture

Most smart individuals know that usually companies outsource to save money. And there is a much bigger competition in other countries in terms of landing a job. I believe this creates confidence issues, some people refer to it as Culture, but I don’t think that’s the case. When our local developers have questions, they will simply walk over and get their answers or slack. But asking questions is always viewed as you don’t know enough in other countries or they simply are afraid of giving that impression. This of course hurts the productivity and quality big time. Hence, back to point #3. You really have to stress the open communication.
 

6. Handle Heavy Architectural Work Inhouse

This is not about not having the expertise, heavy architectural work is derived from long term vision and working with business closely. So yes, dev manager/architect/cto needs to do the architectural work.
 

7. Break down larger components into tiny ones.

This goes back to architect work and agile development. A story shouldn’t be bigger than 5 story points. Find ways to breakdown the work into smaller parts to make all the points above go much smoother.
 
If you have comments/thoughts or other suggestions, write them on the LinkedIn Post.