This type of framework and its components parts are commonly refer to as full stack. Skills in all and more are needed in order to be a self reliant Application Developer. I like to call it a Storage and Retrieval system for e-commerce. Obviously I have had to scour the internet to put this system together. The more concepts you have learned the difficult it is to achieve satisfaction.
The security features in this stack makes use of proxies. Adding physical separation with layers of proxies between our business logic components and Port 80. Port 80 with its naked exposure to be outside world means we are vulnerable. As we cannot run our servers in an isolated environment the use of proxies is the next best thing. The Tor network aka the 'onion' and the darknet also utilises the same methodoloy of layered proxies for its security. I first came across this idea of use of proxies in a book called Professional Java Server Pages published by wrox press in 1999. The proxy module (dll) was called modjserv provided by the Apache.org foundation which helped to add a physical between the Apache Webserver, running on Port 80 WAN and Tomcat the Application server running on another LAN machine. Modjserv also provided load balancing, this meant I had all the tools needed to develop commercial applications.
It was looking pretty obvious that Computers were going to over take the millions of work environment so that should be my direction. However when you have literally Zero skills, Inspiration without perspiration amounts to Zero. That is perspective of the labour hirer. The first step would have to be to join the local College [Reading college of Technology] where they are looking for people with inspiration and they will provide enough for perspiration. The course I joined was HND Computing. A Two year course, my view was if I do not find employment then I can add another year and convert it to a science degree from a University.
The HND Computing course was brand new course at the College,this was the first year. Fortunately it was designed by people who knew what exactly the IT Hirers wanted. The course was very comprehensive ranging from programming to project management. During the course we were given a project of our own choice. It was while completion this project I went through the pain barrier and realised I can do programming. I had an idea in my head as to the use case and I just could not stop writing line lines of code. At the end of the course it was suggested the a way in would be to look for junior developer position on a project.
That is exactly what I did. I was priviledged an lucky enough to have found a position as junior Software Engineer at Smiths Aerospace and Defence. It was project in the in the field of real time engineering working with bespoke hardware. I think I can only it say that it was a project called Fuel Management system, any thing more than would be a breach. The other concept which was present here mission critical systems. Mission critical and working with realtime and bespoke hardware were two items not covered by the HND. I was out of my depth, I felt like that anyway. This company and the people were immaculate professionals. There were fully aware of this so they knew exactly the duties they wanted me to perform which would use the programming skills I had gained from the HND.
Then one day I decided to approach the Technical Lead and ask the one question which those claiming to be professional Software developers ask. It is a Taboo question. What is Fuel Managemnet System, I don't get how all this different pieces fit to together to make what ? He took out a piece of piece of paper tuned it over to the blank side and patiently drew everything educating me into the nitty gritty details. Follow this discussion I was tranferred from unit testing to another project where I was tasked to do a code walk through and find the bug. Unit Software Testing is pretty much at the bottom of the software cycle and code maintainence is a step above. Working with realtime systems is like a virus once you catch it it doesn't really leave, especially these days with cheap , powerful, easy to use hardware components like Raspberry PI , Ardunio etc.
The next project was I meant to work on for the next five years at the end of this was scrapped. It was time to move on. short lived projects on leading to short careers are another fact of Software Development cycle.
The next move led to a company called bytel. I was also very luckyto get this job. The job title was Application Developer not software Engineer. This is an important distinction. bytel developed a customer care and billing system for the telecom Industry. The technical team was headed by a top ten databse expert in the world. Their whole philosophy and work ethic led to them being an Industry leader. The product itself had a 250 table database developed by a dozen Application Developers.
The next thing which happened to this company is what usually happens to successful companys. They attract investors who skills in making money , but not necessarily developing successful products. The first decision was to outsource all their commercial secrets and wares to India because savings could be made on Application developer salaries. It was time to move on.
The move led to Logsys solutions.They were fulfilling an outsourcing need in the defence Industry. It was the age of migration so that was my first project migration drawing on previously learned fron end skills from bytel and using my security clearance paid for by Smiths Industries Aerospace and defence Division.
Once the project I was hired for with exixting commercially trained skills was completed I was then given roles on various projects i.e. data migration.
Then finally the day the arrived. A project from scratch. The project was led by A visual Basic programmer with ten years experience in Visual Basic. Although I had no exposure to Visual Basic he gave the task of investigating APIs (programmtic investigation) to see if the business specification is met.
The head of sotware development at bytel was a Database expert, from this one thing is clear, the order of successfully developing any project involving a database must begin with a database design, then let the programmers program the business logic from business knowledge. The database design is akin to declaring variable in a class and the methods contain the logic which will manipulate the class variables.
The other lesson I learned from the task given to me by the Visual Basic programmer. Instead of researching technologies for the business specification, change the specfification where the objective is to develop my own skills. The end goal is reaching the plateau.
This is the plateau which was described to me a project manager.He suggested focusing only programming skills would lead to a glass ceiling. I saw it differently, practice will lead to the pinnacle meaning the most success one can achieve. To reach the pinnacle in the most efficient way, I would need to find the gettng started button. Look below, some one was expecting me.
Professional Java Server Programming by WROX press also introduced a set of technologies called J2EE , this is J2EE in its current form.
One cannot become a commercial level Application developer by just follow these documents. To get to that skill level, where a hirer cannot refuse your offer, your must first apply it by building an application. That will get you to the plateau
A selection of Microprofile application generators, you can begin the process of prototyping applications by going to the button marked ... :
don't forget the inspiration (above diaram) needed prior to the perspiration.
.. get started Microprofile .
.. get started Oracle's Helidon .
.. get started IBM's OpenLiberty .
.. get started kumuluzEE.
.. get started Payara fish .
.. get started Quarkas.
.. get started Community's SmallRye.
.. get started Spring.
Apache Webserver along with Tomcat Application Server websites may also be worth a visit. At the apache website finding the get started button is a bit more involved, it is Freeware. you may need to get a book to guide you.
The Java EE specifications for the above architectural blueprint in its current form can be found at the Jakarta EE. These specifications contain the Tool Vendor stated requirements . Of course the ever changing specification needs a work bench. The work bench is called glassfish
There is one easy way to find out the popularity of a Software Application Tool. You don't have to read any reviews or visit any conferences. Simply try out the product. The more bugs you find in the documentation, the more bugs you have to fix in the setup and startup phase of the software, the less helpful the error handler, the less popular the product. If the product was popular then other developers would have pointed out these anomolies and they would have been fixed.
Is there a need to place trust in the commercial vendors ? not if you are going to "Protoype! Protoype! Protoype!". You can do this by clicking the get started button provided. If you do go down the prototyping route you are at risk of reaching the plateau, taking you to the application developer the expert level.
I can't say how difficult the learning curve is for a complete beginner without any guidance but someone with five years experience + 2 years HND Computing, like me, this is part of the GIG economy. slightly bit more challenging than delivering pizzas,another GIG economy but manageable. I realised Application Dvelopment is a GIG at my first job when the up coming five years project was shelved.
The first Application Generators were two tier fat clients with a backend database. The drivers of these application development tools were database vendors. The front end was simplified to use languages known as 4GLs. Examples of 4GLs are Oracle Forms,CA OpenRoad and Visual Basic. Booch Grady described 4GL Application Generators as "tedious". Reactjs is very much like Oracle Forms, CA Openroad ,Visual Basic hence my leaning to Reactjs for front end Application Development Framework.
This was the first thin Client Architecture I came across. It was another effort by a database company. I call it K.I.S.S. keep it simple Stupid.
This book is called Professional Java Server Programming by WROX press. The best book I ever bought. They were selling it on amazon for £1 but it has recently gone up in price.
The a second complexity in Software development stated requirements or Business Knowledge. Microservices is the current approach to helping Application developers overcome the complexity of stated requirements / Business Knowledge. so the hit the ground running as soon as possible.
Source: Object Orientated Analysis and Design with Applications;Grady Booch [IBM][Second Edition]
" 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. 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 hundreds 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-specific applications, and programs that mimic some aspect of human intelligence. Although such applications are generally products of research and development they are no less complex , for they are the means and artifacts of incremental and exploratory development.
The distinguishing characteristics of Industrial-Strength software is that it is intensely difficult , if not impossible, for a developer to comprehend all the subtleties of design. Stated in blunt terms, the complexity of such systems exceeds the human intellect capacity. Alas , this complexity we speak of seems to be essential property of all large software systems. By essential we mean that we may master this complexity, but we can never make it go away. Certainly , there will always be geniuses among us, people of extraordinary skill who can do the work of a handful of mere mortal developers. ... "
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 hundreds 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 ].
As Application developers we need comparisons so here it is.
Comparative Analysis by Emily Jiang, IBM MicroProfile Consultant from the IBM R&D laboratory
How much can a developer's skills be worth if the developer is an application developer using one of the above mentioned application generators ?
Let's take this Shark Tank App as an example. The App is called BricksAndAgent. It is a property maintenance application. The Billionaire's son invested $750,000 in Software development cost. He wants now $250,000 for 10% equity from the sharks, which he gets, thereby making the app a $1 Million dollar app.
With a database design in hand, I would estimate it would take an application developer 3 months (add 20% contingency) to churn out a duplicate application with some enhancements thrown in. ssssh...
project duration 5 months; unemployed looking for another GIG after that.