A dying star on the verge of collapse, a child learning how to read , white blood cells rushing to attack a virus:these are but a few of the objects in the physical world that involves truly awsome complexity. Software may also involve elements of great complexity; however , the complexity we find here is of a fundamentally different kind. Einstein argued that there must be simplified explanations of nature , because GOD is not capricious or arbitrary. No such faith comforts the software engineer.
We do realise that some software systems are not complex [web design]. These are largely forgettable applications that are specified, constructed, maintained and used by the same person, usually the amateur programmer or the professional developer working in isolation. This is not to say that all such systems are crude and inelegant, nor do we mean to belittle their creators. Such systems tend to have a very limited purpose and a very short life span. We can afford to throw them away and replace them with entirely new software rather than attempt to reuse them , repair them , or extend their functionality. Such applications are generally more tedious than diffcult to develop ; consequently, learning how to design them does not interest us.
Instead, we are interested in more in the challenges of developing what we call Industrial-Strength Software. Here we find applications that exhibit a very rich set of behaviours , as for example , in reactive system that drive or driven by events by the physical world , and for which time and space are a scarce resource;applications that maintain the integrity of hundereds of thousands of records of information while allowing concurrent updates and queries ; and systems for the command and control of real world entities, such as routings of air or railway traffic. Software system such as these tend to have a long life span , and over time , many users come to depend on the proper functioning. In the real world of Industrial-Strength software we also find frameworks that simplify the creation of domain-spacific applications, and programs that mimic some aspect of human intelligence. Although such applications are generally products of research and development they are less no complex , for they are the means and artifacts of incremental and exploratory development.
Source: Object Orientated Analysis and Design with Applications;Grady Booch [Second Edition]
Source Grady Booch: The United States Department of defence (DOD) is perhaps the largest user of computers in the world. By the mid-1970s, software development for its systems had reached crisis proportions: projects were often late, over budget and they often failed to meet their stated requirements. It was evident that the problems would only worsen as software development costs continued to rise exponentially. To help resolve these problems which were further compounded by the proliferation of hundereds of different languages. The DOD sponsored the development of a single, common high order programming language. The winning design was originally called the Green Language (so called because of its team colour code during the competition), later renamed Ada.
Poor quality software cost an estimated $2.84 trillion in the US alone in 2018
Source CISQ: [Consortium for IT Software Quality ].
Building Large and complex systems from scratch can be a costly endeavour. Framework technologies aka Application Generators is the answer to resolve the software crisis for e-commerce applications as Ada was the solution to the US defence industry when they identified the cause of the software crisis. In my five years of Software commercial development and even prior to that I observed technology learning curve can only solve 50% of the problem, furthermore a developer will reach a plateau (no more to learn). The other 50% is meeting the stated requirements. Does the developer has the knowledge of an accountancy profession ? If the developer isn't a qualified accountant then how will the developer manufacture a product for the accountant ?
Microservices: an architecture devised to meet the stated requirements in particular the ones which has the characteristics of Industrial-Strength Software
Grady Booch described Application Generators as "tedious" in the real world "tedious" may be the key to success
Many people in the application development industry think that when they become fluent in the technology is the end goal. That is certainly the case with Admin jobs such as DBA , Sys Ops , Webserver Admin. With Application development each product in many ways is a unique piece of art, so the next step is to figure out contents of the inter-process and the intra-process or what is commonly known as business methods.
I came across this knowledge at one of the places I worked at, Human resources Manager arranged a career development between the three company developers who were not senior application developers and the project Manager. He said the technology's learning curve flattens out, you will remain as junior if you become comfortable remaining at that plateau. This was a refreshing point of view because it was an acknowledgement you don't need to spend years learning application development Tool or even a minimum of ten thousand lines of code to be good at it.
He went on to say you should focus on other stages also like data analysis leading up to project management. One of the other developers objected to the term junior to describe an application developer fluent in an application development framework. He was not the only one I came across who over inflated the value of fluency in an application development Tool. I began my career as a Junior Software after doing an HND Computing starting out doing testing, maintenance , coding going up the software development life cycle so I had no issue with the project manager's view.
I looked upon my year at Smiths Aerospace as Junior Software, bytel as application developer, two years, customer care and billing system product for telecom Industry, finally two years as software engineer at Logsys Solutions, a software house as my training years. The my test at the end of those training years was to trouble shoot commercial products and conclude these are flawed, from here on I better decide which products I should invest my time in. Neither of these two products had features like connection pooling , load balancing for consistent performance, my zen