I’ve been a software engineer for more than 30 years. Over those years I’ve seen lots of changes but where are we headed? I believe there are alternative approaches that will allow us to improve quality, shorten delivery and add flexibility to our applications.
There have been many programming language improvements over time. Language paradigms have constantly changed and evolved. We’ve gone from structured, to procedural, to event-driven, to object-oriented, to automata. This really hasn’t changed how we engineer software.
Patterns and Frameworks
Modern frameworks (Spring, .Net, Rails, etc.) have been making it easier to piece together new solutions in less time while minimizing the code. While the framework encapsulates functionality, it also hides the configuration and business rules across settings files, code files, screen configuration, HTML, and databases. True, this does produce less code; but, unless you’re the original author, this makes future maintenance complex. These patterns make us more predictable, but we’re still “cutting code”.
With today’s many cloud solutions from WordPress to Mendix or Salesforce.com, combined with online forms, drag-and-drop visual layouts and a wide variety of plug-ins, it’s possible to create entire applications without any code.
The notation of avoiding code changes the discussion from how we’ll implement solutions to what we want from the solutions. This is where the value lies. Avoiding code also shortens the delivery time and improves quality.
Without major capital and time investments, multiple solutions can be created in parallel. If the solution is successful, it would be expanded and adapted for scale. Otherwise, it can be shutdown with minimal loss. This will change will accelerate the way companies innovate and explore new opportunities.