Software development: let's make it custom
Sep 09, 2013
We all want to have our requirements met immediately, but as a company it's even more important to receive personalized services, that are adapted to your day-to-day activities. A solution that responds to these needs is software development outsourcing / custom programming.
How does this work, you may ask? Well, let me detail this a bit: in most cases the development process starts from the client's specifications. More precisely, the customer comes with a concept and a general set of requirements, and then together with the software development company, the specifications are outlined in detail, and then development can start.
There are two types of custom software: business software, which is developed for companies (B2B), and personal use software (B2C), which is targeted to home users. Both these types of software can be developed as a desktop, mobile or web application.
But how is custom software developed? The following approaches are generally used to build custom software:
- Implementing code from scratch - which means that no legacy code is provided, and the outsourcing company develops a new product according to the customer's specifications
- Expanding a legacy code base, with new features (and possibly, new versions that are targeted to different platforms: developing a mobile version of a web application, or a Linux version of a Windows software etc.). The customer provides the legacy code base, and the development company takes over the responsibility of further developing the product (and possibly refactoring the code base)
- Starting the development from 3rd party libraries - this involves the integration of various 3rd party components, by writing a "glue-code". However this approach does not exclude the addition of new capabilities, by developing separate (new) components from scratch
- Customizing open source applications – which means that an open source app is used as starting point for the new software, and new capabilities can be added by developing additional code
The safest approach is to use 3rd party commercial libraries (which are usually better tested and more stable than open source projects), and write the new code from scratch, in order to ensure a uniform and well-thought architecture. However, in many real-life situations, this approach is not an option (usually due to budget limitations), and another approach (from the list above) is preferred instead.
Why should a company choose a custom software, instead of ready-made software?
Custom software provides the following advantages:
- The software is developed according to the company's needs
- At any point in time, the software can be further customized, and adapted to any new requirements that might show up
- The company acquiring the outsourcing services will be the proprietary of the software (including the code base)
On the other hand, when you buy a ready-made software:
- You only own a license for using the software, so you don't have the right to modify the software, add new features etc.
- The software is developed for mass marketing, therefore it provides a general set of capabilities, and it misses certain (very specific) features that might be needed by a particular company
- The software updates are not too flexible, and are not adapted to any individual company's needs; the updating process takes place only when new releases (for the public) are provided by the proprietary company (the company that developed the software)
All in all, one of the biggest advantages of custom development is that it’s highly customizable. The software is developed with a certain set of custom features in mind, which can be updated during the development process.
So less used features can be discarded at anytime, and new features can be added. For example, imagine that your business opens a new department, and new features must be added to the ERP (Enterprise Resource Planning software) system that you are using. A custom-made software will allow you to do this easily.
Even more, let's assume that you decide to make the transition from ready-made software to custom software, and you’re worried that the data from the old application(s) will be lost. Custom software can be developed so as to integrate features from other software (including 3rd party software, older in-house software etc.), and to use or import the existing (legacy) data.
As a conclusion, custom development can bring competitive advantages for both small and big companies. Whenever a company needs a new software solution, and it expects that future modifications & feature additions will be needed, it's worth considering the custom software development path.
...but what does software consulting mean?
To outsource or to insource?
Reasons for outsourcing
Comparison between software outsourcing destinations