2
Why do outsourcing?
Outsourcing is today's prime tool for managing risk, resources, and projects. By outsourcing software development one can find companies which understand the value of the Partners' business and product, help develop and elevate it, cutting noncrucial functionalities and introducing new ones. That makes the outsourcing company both a developer, consultant, and often business advisor.
The other perspective is that over 85% of startups and enterprises have problems with attracting and retaining tech talents1 . And those are just few of the problems companies face within the development field. Outsourcing, a cheaper and more convenient way, solves those problems. Due to this, process costs of HR, maintaining workplaces and leaves, are irrelevant. Moreover, software development is complex and outsourcing companies solely focused on software services are often more effective.
Those are merely statistics. Important, but not essential. What really matters is how an outsourcing company will fit into the organisation of the Partner both culture and process wise.
Software development outsourcing could be demanding in terms of research, time, and risk. That's why it's important to choose the right developer.
Organisation's culture is the first step
To achieve the best results you have to start with the organisation's culture. What is your culture and what is the culture of the company you want to outsource your development to?
But let's come back to what organisation culture is: this is how it's done.2
The picture above shows four different organisational cultures.
Schneider's Culture Model, source: http://www.methodsandtools.com/
There is no wrong model of collaboration and culture. Every single model featured above has its own limits, environment, and scope. In Agile, though, collaboration culture is desired. Control is a big no-no, competence is for companies driven by a single goal or set of goals. Cultivation is for visionaries. Collaboration is for well, everyone. Everyone who is prepared for it, that is. Trust, diversity, partnership - these are the words that fuel Agile projects.
If your organisation's Culture is Control and Competence, does the outsourcing company have a similar one? If your outsourcing company of choice has no Culture of Collaboration and your idea is to share the knowledge across in-house and outsource teams, can you make it? If you work in iterations, does the outsourcing company as well? Communication - how are you doing it? Through Project Manager, or is the team used to communicate with everyone by themselves?
In the process of outsourcing, many Partners find themselves awaken. Developers making the software product can point to new solutions, correct the view on particular functionalities, suggest changes. Forwarding the process to other companies can also free the company's employees and make time for future endeavours3 .
The primary concern regarding software development outsourcing should be minimising functional disjunction. This is the threat of lacking proper communication, project management, and general vision due to geographically dispersed development. Outsourcing everything should be based on the ability to properly manage and receive the feedback, not only the code itself. Working in the same cultural context gives the Partner and Scrum Team the ability to hear the same message that's getting across, not the words themselves. Project management is equally vital. It means the necessity to attend the meetings (even via Skype or Google Hangouts) by the Partner and Scrum Team. General vision should be respected across the board and influence every part of the project.
This is also the case of motivated vs engaged developers. Those motivated by money will be simply making code. Those motivated by creating the best possible business value will overcome the presence of possible disjunction.
The best way of making the software work is to make it correctly, with the Partner, all the way. This is the way of Agile, the philosophy of success. It covers the basic principles of everchanging circumstances. Agile developers believe that changes in technologies, trends, and most important - needs of users - demand quick reactions. That's why they operate on a set of Agile guidelines4 . One of them is Scrum, a framework to organise and optimise the process of development.
Quote: 'Never was so much owed by so many to so few'.
Winston Churchill