They say that the best things in life are free. From fat-free ice-cream to tax-free shopping and stress-free travel planning, we are all attracted to ‘-free’ things, and the ‘freer’ the better.
But we have also all learned to take the ‘-free’ epithet with a healthy dose of cynicism. We read the small print on the back of the box, we survey customer reviews on Internet forums, and ultimately we ask the question: “If it’s free, is it really worth having?”
Just occasionally, we find to our pleasant surprise that a ‘something-free’ product actually does what it says on the label—the meat-free veggie burger that still tastes good, the pollution-free car that still gives a smooth ride, the bleach-free detergent that still brightens your whites...
So when we talk about code-free application development, what do we mean? And is it really the way to go?
First of all, it is important to distinguish between fully and partially code-free development methods. Some so-called code-free tools are only code-free in the initial design phase, and then they generate code. Any subsequent configuration or modification of the application requires a specific skill set and in-depth knowledge of the application’s architecture. Changes to the code can have knock-on effects that demand considerable preplanning, damage control, and QA testing.
A metadata-based code-free tool, on the other hand, remains fully code-free throughout all stages of the development life cycle. The intrinsic coherency of code-free development provides greater resilience, making it much simpler and safer to modify the application.
Unlike coding, which ties you to a specific development environment and programming language, true code-free application development is decoupled from the development environment and operating system, and is not dependent on the developer’s knowledge of a specific programming language.
Proficient coders try to incorporate as much reuse of previously developed modules and classes as possible to save time and resources and to promote standardization. Developing in a code-free, metadata-based environment essentially takes this approach to its natural conclusion by implementing any number of reusable, preconfigured modules.
Admittedly, pure coding can be used to create a broader spectrum of applications and features, but this apparent advantage is more often a drawback. Ironically, the greater potential for richness causes coders to get bogged down in the complexity of their coding. Although in theory the possibilities of coding are boundless, in practice, when confronted by time constraints and the limits of their own coding abilities, developers are often forced to sacrifice significant layers of functionality.
The inherent limitations of code-free development actually help to simplify the development process, filtering out non-essential distractions and resulting in greater focus and clarity. Developing on a code-free platform allows the developer to focus on the ‘what’ instead of on the ‘how’, resulting in richer, more sophisticated applications with more effective and reliable functionality.