A modern application is one where modifications or enhancements to the application have a minimum effect. For example, changes to the interface should not require changes to the business logic.
The nature of a modern application is that the design of the database and programs is such that the requirement for testing is minimized. This approach allows for rapid development and easier, less complex maintenance.
Here are some of the features to look for in a modern application:
- A tiered design that separates the application into separate components: interface, business logic, and database.
- A well-designed and tuned database that implements integrity.
- Code flexibility, which allows for a flexible means of developing new interfaces and changing business processes.
- Code reuse, which means that the same procedures are used everywhere. It does not mean that code is copied and pasted to multiple programs.
- Code maintainability, which means that there is no duplicate code and that the structure of the programs is simpler and easier to understand. Maintenance of these programs has fewer potential side effects.
Roadblocks
Apart from the obvious requirements for financing and resources, there are many conditions that can inhibit the modernization process. Based on the experience of the team, here are some of the common roadblocks that can hinder, if not derail, the modernization process:
- Developers do not use the correct tools. Developers are comfortable with what they know. Sometimes, it is easier to stay within the comfort zone of using familiar tools as opposed to facing the chore of learning how to use new tools.
- Developers do not know what they do not know. Developers who have no experience with certain technologies or techniques make decisions about how they are used, which is why a PoC is so important.
- Unlearning old habits. Many developers have been observing the same practices for many years. It can be a challenge to change these habits and embrace new ones.
- Not getting adequate training. It is not enough to install a tool and say “start using it” or to instruct developers that they should use a new technique when they do not really understand why they should use it or how to use it properly.
- There is so much to learn that developers feel overwhelmed before they start. Everything must be done in small steps.
- The whole process of modernization can be frightening. At the outset, there are so many unknowns that developers want to retreat to what they know best.
- Setting unrealistic targets. Targets are often set without understanding what is required to achieve them.
- Lack of management support. This is why it is important to start small. The sooner you can demonstrate gains, the easier it is to get management support.
Whichever of the many modernization paths on which you are about to set out, the journey is full of challenges, achievements, and interesting diversions. It is a journey that constantly offers new horizons.
Modernization is a journey, not a destination