Custom software development, outsource or do it yourself?
Generic software or customization? If you choose to create a custom application, you may have one of the following reasons:
- The available generic applications are not suitable for the intended purpose.
- You want to keep all control over the innovation and the user experience.
- Making a custom application is an investment in a distinctive market proposition.
- The costs for adapting an existing application are higher than those for customization.
- The total cost of ownership of your own application will eventually be lower than the license costs and configuration costs of a generic application.
- You want to avoid your dependence is a third party, you do not want vendor lock-in.
The choice to create and operate a custom application is a strategic choice. Not only because of the impact on business operations, but also because of the high investment costs. The best choice in your case depends on your specific situation.
Do it yourself or outsource it ?
Once the decision has been made to develop an application in-house, the question is what is more sensible, do it yourself or outsource it. Because Software Development is not a core business for many companies, outsourcing is soon opted for. An important pitfall in outsourcing is that it focuses on the costs of realizing the application while underestimating the costs of ownership. And of course, it is not directly in the interest of the specialized contractor to point this out to the customer. In our practice, we immediately charge an annual reservation of at least 15% of the initial construction costs for application management and further development. Only if the application is not used, it is likely that there are no management costs. In all other cases, the use of the application will lead to new insights and needs. If the application proves in practice now there will also be a willingness to incur these costs. If the application is a great success, it is also likely that the costs of further development will exceed the aforementioned 15%. This and another question on outsourcing is how it happened. Is chosen for a ‘fixed price‘ and ‘turn-key‘ solution according to precise specifications, or go customer and contractor jointly process and the project Agile performed. There are also hybrid forms where Agile is worked and yet within a fixed budget, but we will not take this into account.
The chosen project methodology partly depends on the perception of risks. We list the main risks here:
- The technicians make an incorrect estimate, the work proves to be slightly more difficult or to take more time.
- The customer and technicians have misunderstood each other.
- What is delivered does not meet expectations.
- During the construction process, new insights emerge, so that what is delivered no longer corresponds to what is needed.
As a result, the product still does not meet expectations. In a fixed price project, the first risk is fully for the contractor’s account, unless the cause lies outside the scope of the project. There will be differences of opinion about the second risk and the third risk will be fully for the account of the client. In principle, all risks for an Agile project are for the client’s account. On the other hand, an Agile project can be adjusted during implementation. That can be much more difficult with a fixed price project. In addition, Agile project methodologies are much more efficient, for that reason alone it is recommended to work Agile, especially for larger projects with a longer lead time.
The above conclusion is that, even when the project is outsourced, a large part of the risk remains with the client. At the same time, the client becomes dependent on the contractor because it builds up all the knowledge that is necessary for the exploitation phase of the software. Once the project has started it is almost impossible to switch providers without this leading to high costs and delay of the project. The IT specialists who are the knowledge carriers of the application have suddenly become important assets. Who has control over these assets is a very relevant question. Especially if after the delivery of the application it appears that there is a greater than expected need for capacity for further development. Certainly, if the software is of strategic value to the company, it is therefore very important to have and keep control. It is your own software team.
Instead of outsourcing the project as a whole, you can also choose to outsource parts of the project. It is comparable to the construction of an office building. Instead of outsourcing it to a project developer, you hire an architect, a construction manager and a construction team separately. If we’d translate it into a software project is first a product owner appointed. The product owner is preferably someone who has been present in the company for some time, who has extensive knowledge of the applications, and of the customers for which the app is used. He or she should have access to business management. Consider, for example, a product manager or someone who has many internal and customer contacts. It is essential that this person is given sufficient time to be able to perform the role of the product owner. After the application is ready, the management can be taken over by someone else, after which the product owner returns to his old position. If such a person is not in-house, it is also possible to hire an experienced external product owner for the duration of the project. A good analyst or architect can come from their own organization or be hired externally. The architect is responsible for the technical design. He will have to spend a lot of time during the start of the process and will also remain involved during the implementation. After delivery, his involvement will occasionally be necessary. With regard to hiring the construction team, it is important to make a good estimate of the capacity requirement during the construction process and in the management phase. A core team can then be hired with an additional flexible shell that is required during certain phases of construction. One of the team members can then take on the role of scrum master. The product owner, the architect and the scrum master, together and in consultation with the team, provide planning and monitor progress throughout the project.
The composition of a team is an important prerequisite for a successful project. To ensure that a high-quality product is made, specialists are required who have the knowledge, insight and experience to realize this. Good technical specialists have in common that they have a passion for their field, are always learning and are constantly trying to improve their skills. Good developers solve problems while inadequate IT people create problems. Good IT professionals are scarce. That is why deploying remote specialists through outstaffing companies can offer a solution. In addition to lower costs, this also offers a high degree of flexibility. However, working with a foreign team can also be at the expense of control, especially if these remote specialists work for an external supplier. For a good result, the starting point must be the involvement of the specialists in the project team and the joint business goal. There will also be a guarantee that ensures that control over the knowledge carriers is properly safeguarded. If these conditions are met, developing a custom application yourself is a good alternative to outsourcing.