Which products can be effectively outsourced for maintenance or rework? This question is a common one for software development project managers. As we see it, there are two aspects here: technical and strategic.
Let's consider the technical aspect in detail. At first glance, it seems that not all projects can be successfully outsourced. Software may be put together in a hurry with no documentation. On other occasions, products may lack quality and may not work properly: fixing one bug just uncovers two new ones. A project often involves several irreplaceable team members, without whom work will come to a halt. However, this just serves to perpetuate the myth about programmer irreplaceability – being one of “the chosen few” leads to complacency and professional weaknesses or lapses are often overlooked.
What makes outsourcing possible?
|01||First and foremost, the quality of the source code: its architecture, object model, competent module division. Good source code is enough for an experienced programmer to get to the root of things.|
|02||The correct naming of objects and methods in good source code is commentary in itself, but additional commentary never does any harm.|
|03||Next comes the quality of testing and integration. As a rule, applications which were made in a hurry only work on several computers or under a certain OS. A well-tested code will cause no problems when integrating and will work properly.|
|04||A manual for users and programmers will allow specialists to master the application domain even if they are not acquainted with the technology.|
So what do we – managers and owners of intellectual property – want? We want to control the product. What we do not want is the unexpected illness or dismissal of “that guy” to lead to: a slowdown or freeze in company activity, a breakdown in partnership relations, a loss of audience, a negative market reaction and bad press. Therefore, key software products should be of sufficiently high quality to allow them to be outsourced to a new development team at any moment.
That is why for key products it is necessary to.
|01||Ensure there is the option of replacing all the developers.|
|02||Organise development in a group.|
|03||Regularly conduct refactoring.|
|04||Regularly audit the product, the quality of the source code and documentation with the help of independent experts.|
|05||Take a responsible attitude to documentation – it is documentation that guarantees stability during servicing.|
So, what kind of products can be outsourced? An effective manager can outsource any software product. This is the answer to the technical aspect of the question.
But what strategic considerations may compel a company to outsource a project?
- Lack of resources.
- Difficulties in attracting good programmers.
- Corporate finances do not allow the option of hiring new people.
- The existing staff only have time to maintain the system.
- You feel it necessary to enhance the team by inviting specialists from another region.
- There is a need to motivate the team by introducing an element of competition.
- A need to refresh or rejuvenate the product using new ideas.
- Third-party testing is required.
- You do not want to set up a large office; instead it is cheaper to pay for an organised labour force.