A guide to approaching custom software projects
Okay, but where do you start? If you don't have a software development team, you need to find an experienced technology partner to build your application. Here are some tips for this first phase:
- Specifies precisely the scope of the application to be built. Not doing this step correctly is the cause of failure of many software projects. An incorrect understanding of the scope will cause companies to underestimate the project budget. If you evaluate the different offers according to their price, it may be that by choosing the cheapest one, you are not choosing the most efficient one, but the one that has understood the scope of your project the worst. That's not gonna end well, even if you think you're saving. But here comes the first bump: on the one hand, specifying an application correctly is not an easy task, and on the other hand, you don't have enough time to adequately tell more than one company everything you need. To overcome both problems we have the second advice.
- Contracts a functional analysis independently. Before approaching the whole project, it is very advisable to hire a Functional Analysis service, through which an experienced consultant listens to your needs and models and conceptually designs the software application you need. Usually the deliverable of this consultancy is a precise and rigorous document that specifies the exact scope of the project. You already have the document that you can give to the different companies so that they can budget the project properly. All will be based on the same understanding of the scope and now you can properly evaluate other aspects such as the proposed methodology, technological capacity, deadlines or budget.
- Evaluate your investment options. Once you've chosen the right company and have a budget on the table, you need to consider how to approach it. Always keep in mind a very important nuance: when you contract a custom software project, the property of the software developed belongs to you. It is not a trivial matter and may be the key to undertaking the project. Keep one other thing in mind: software is not material and can be replicated without too much effort for other companies to use. Now combine the two ingredients and... many options arise! Let's explain at least two:
- You can approach the project collaboratively with other companies in your sector with which you cooperate or share objectives.
- You can find a business model for which you offer a license price to other users for using the application you have developed, so that you amortize the investment. SaaS (Software as a Service) models are ideal for this type of collaboration.
Once the initial phase is over, I want to give you some advice that will help you to finish the project successfully:
- Divide and conquer: establish phases to divide the scope of your project. Don't try to address all needs under one project. You can start with a simple and functional version of all your needs and leave for future projects the advanced functionalities, the most complex automatisms or the aids and gadgets without which you can live. To approach a software project in different phases does not consist exactly in dispensing with basic functionality, but in simplifying all of them as much as possible, extending it through incremental phases. The following scheme may give a basic notion of this concept.
- Uses in real environment the software of each module. Until it is used it is very difficult to have a real notion of the daily operation of your application. Only using it in real cases will you be able to check the correctness in the design decisions and correct in an agile way those that do not fit when you approach the next module.
- Always consider a maintenance and support service. A tailor-made system, being entirely your property, is not governed by the same rules as a market product. If you don't explicitly contract it, it doesn't have evolutionary updates nor a support telephone, once the guarantee of the same one has finished. If you have a development department, you can train an internal team to carry out these tasks. Another very convenient option is that it is the same company that has developed the software who performs the maintenance and support of the system, since they are the ones who have the best knowledge about it. With a maintenance service you will get the most out of your custom application, exploiting one of its great virtues against market products: continue evolving according to your business model and making your dreams come true.