Software development outsourcing - simple rules
Software development outsourcing is something I can discuss at length, but I'll try to outline the most important takeaways after years of working with offshore and near-shore companies. One thing that goes without saying is outsourcing has its benefits if managed tightly and carefully. The most important aspects of successful outsourcing is having a knowledgeable onsite person who can run a tight ship and put strict guidelines in place.
So here is a list of my outsourcing rules. It's my list, so it's definitely open to discussions.
Things that can be outsourced:
- Web development based on existing UX/UI design.
- Simple business logic and CRUD (Create, Read, Update, Delete) functionality. Something that doesn't require business knowledge or sophisticated design or performance optimizations.
- Simple mobile apps.
- QA (Quality Assurance). This is where outsourcing works well with well defined acceptance/testing criteria and process.
Things that should not be outsourced:
- UX/UI design. Web developers are not good designers, therefore UX/UI must be done by a design firm or freelance designer, not a software development team. This is very important to get right the first time, and therefore I prefer local designers who can meet in person on a regular basis.
- Solution Architecture.
- Database design.
- Sophisticated business logic.
- Proprietary/sensitive logic.
- Performance sensitive services/components.
- Graphic intensive, sleek mobile apps.
As far as cost savings, one should look at not just the hourly rate, but performance and quality.
In my experience, offshore developers are usually about two times less productive then an equally skilled local developer. This is attributed to experience, time difference and inability to get answers/assistance right away as well as domain expertise. So a $75/hr developer in Dallas, TX is roughly an equivalent of two $35/hr developers in India. Offshore developers usually produce more bugs and therefore it takes more time to test, debug and fix the code. Let me try to explain: offshore companies usually hire developers right after college. Those developers usually don't stick around too long. They are either promoted to managers or find better paying jobs elsewhere. The best developers are usually sent to client sites in the USA or Europe. It's almost impossible to find a senior level developer with more than 5 years of experience working for an outsourcing firm. Near-shore outsourcing produces somewhat better results for about 20-30% higher cost, but I would still apply my outsourcing rules.
So, yes, it's possible to develop software with outsourcing help, but it's impossible to produce good software by outsourcing 100%.
I completely agree. There is further regional segmentation related to productivity, total cost of the relationship, risk and quality management. For example, certain regions of the world offer better return when it comes to cutting edge, innovative, but risky projects. Others should only be used for mundane upkeep. I have had very mixed results with very expensive, supposedly experienced, but obnoxious local developers that I would dump for a couple of driven, eager to learn, hard working off shore workers.
Igor, great mini outline. We don't necessarily need to completely write them off, but they can't have keys to the shop's IP either (Intellectual Property or, Internet Protocol for that matter).