The ‘software crisis’ was a term used in the early days of software engineering before it was a well-established subject. The term was used to describe the impact of rapid increases in computer power and the complexity of the problems which could be tackled. In essence, it refers to the difficulty of writing correct, understandable and verifiable computer programs. The roots of the software crisis are complexity, expectations, and change.
The causes of the software crisis were linked to the overall complexity of the software process and the relative immaturity of software engineering as a profession. The crisis manifested itself in several ways:
- Projects running over-budget.
- Projects running over-time.
- Software was of low quality.
- Software often did not meet requirements.
- Projects were unmanageable and code difficult to maintain.
- and eventually lead to:
- Poor productivity – fewer than 10 lines of code per day are written by a typical software team over the average lifetime of the project
- Poor quality and reliability – 60 errors found per every 1000 lines of code
- Slow-moving and costly growth – The cost of owning and maintaining software in the 1980’s was twice as expensive as developing the software
- Project failure – 1 of every 3 large projects is scrapped before ever being completed and only 1 in 8 finished software projects is considered successful
Apparently we need better and more software development technology to focus on such points as
- Independency from Infrastructure, Operating systems, Data Bases, Communication protocols, and proprietary structures to unleash the programmer’s power.
- Independency from Developers and Developer teams to gain control of software investment
- Multi-layered and distributed structure that reinforces the collaboration of independent software teams
- Expandable architecture to permit growth
- Compatibility with agile software methodologies
- Integrate harmoniously business processes and methodologies
- Put Customer, first
Could be Low-code platforms a convincing answer?
Lately the term low-code development platform is gaining traction in IT sector, to categorize development without the complexity, effort and skills that traditional development require.
Forrester Research defines a low-code development platform as platforms that enable rapid application delivery with a minimum of hand-coding, and quick setup and deployment.
According to Wikipedia, Low-code development platforms represent a type of technology that allows for creating apps through configuration of functions, rather than coding those functions.
The role of software is changing. It is no longer about magic things from hobbyists and techies. Instead, commercially driven software projects are becoming more business focused, and the emphasis has shifted from technical to business added value. Software must be delivered rapidly, and development shall be driven by business value rather than technical needs. Business people need models to describe the business processes to be automated independently from the software will be used. Furthermore, businesses are becoming more and more automated and subsequently the automation software should be no more closed, encrypted and hand-coded.
To survive and thrive, businesses must constantly find ways to innovate and differentiate themselves; to do things better, faster and cheaper; and to engage customers in new ways. They need a faster way to deliver applications—and low-code development platforms offer some much-needed light at the end of the tunnel
Low-code is not the next programming generation, or a new programming language. It’s rather the second phase of the normal evolution of technology as we have seen so many times before. Car technology offers a great example of how technology advances from the entry level, where a skilled driver is needed due to technology complexity and instability, to a mature level, where there is no need of an external or high-qualified driver and finally to the automation level where there is no need of any driver. System automatically do all the work.
Currently, there are 2 other modern programming technologies and trends that are related with low-code and share features and characteristics similar to low-code, the aPaaS and the RAD
aPaaS (Application Platform as a Service) is a term popularized by Gartner. The analyst firm defines it as “Model-driven graphical development environment, typically producing metadata that is interpreted at runtime
RAD (Random application development) is generally defined as a programming model which allow products to be developed faster and of higher quality through the use of visual programming environments, prototyping and early, reiterative user testing of designs; the re-use of software components and more
So, is it means that are the conventional programming languages are coming to an end? No more magic in Java? Absolutely not. Low-code development is actually based on platforms developed on conventional programming languages like Java and therefore Java, C++ and other rich programming languages shall survive for long. Simply the future business applications are to be developed not by brilliant developers with poor knowledge of business any more, but by knowledgeable business experts with adequate knowledge of technical programming. To achieve that goal a Low-code platform should have at least, visual development tools, model driven architecture, application repository, ready-to-use connectors, built-in business methods, metadata to object translation capabilities and need to be Cloud and mobile ready.
The inherent value of a low-code development platform is that it brings IT and business together, moving the focus to the business needs and goals, enabling more rapid, iterative and collaborative development, offering to the business agility, productivity, effortless integration, faster deployments, business orientation, effective lifecycle management and finally better ROI.
Is it enough to transform software into a more business friendly form? It’s more than likely to happen and in any case it’s more than enough, to intrigue any business to consider low-code as the next IT platform for its operations