Mr Dimitri advised, on completion of the HND computing course, find a place on a project as a Junior then go from there. Grady Booch stated "Industrial Strength Software is beyond the Intellect of a developer." I followed Mr Dimitri's advice and got myself a job as Junior software Engineer, throughout my career I was mindful of Booch's statement.
Source: Object Orientated Analysis and Design with Applications;Grady Booch [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 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-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 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 ].
https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/The-Cost-of-Poor-Quality-Software-in-the-US-2018-Report.pdf " Despite the fact there are only two golden rules for good quality software this is a remarkable achievement
Human resources Manager arranged a career development between the three company developers who were not senior application developers and the project Manager. His career advice was that the technology learning curve flattens out, you will remain as junior if you do not focuse beyond the technology. This was a refreshing point of view because up until now a developer's skill set was judged on how many thousands of lines of code or a number of years of experience of programming language(s) with seemingly endless learning curve.
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 used to describe an application developer fluent in an application development framework.
It was true that the application development Tool used to develop the product was functionality limited, further simplified with a bespoke 4GL, the product itself was highly complex which required specialised business knowledge. It was rumoured the product database had 500 tables, actually it had 250 tables. I know this because I was looking through the schema for possible data warehousing cubes, after reading a book to learn what is data warehousing ? Bit of a dodgy approach , but I was working with a dodgy bloke as the project manager for this small initiative.
The second meeting HR arranged was between us three and a "top 10 database expert in the world."
There were no arguments or disagreements this time, just quiet listening and absorbing of knowledge.
He covered alot more ground than covered in College. The tutor only covered RDBMS & SQL.
I later discovered what I had learned from him and more by reading professional Database product Documentation.
I also came across another kind of database expert who answered my question , how are you going to improve the performance by going on site without breaking the software because all the programming is done here?
Training Ground began with a two year HND course in computing. This was a change of careers from accountancy to computers. The intention was to keep up to date with Industrial skills. The presumption of this course is that it would give me skills in basic understanding of computers. The course designer, Mr Dimitri had other ideas. He was training software engineers. C on unix was the third programming language of the course when I realised I had an understanding of computer programming. The first language was pascal followed by 68k Assembly language. Pascal is meant to be an introductory language into programming , however when the concepts of programming also new, Pascal is not so easy. At the end of the two year course I felt I found my calling was a programmer. A career in programming is unlike any other career because every thing you do is an original creation, the complete opposite of a career as factory worker.
Junior Software Engineer;
Smiths Aerospace and defence is my first commercial training ground as junior software engineer. Smiths aerospace and defence produce original, inventive creations of bespoke hardware & software solutions. The solutions are employed in aircrafts so an approach called best practices is followed. A programming language called ADA was used on the project. I was one of three junior software engineers employed to do unit tests.
The project was called Aircraft Fuel Management system. My exposure to the system began at a detail level because I was doing stub testing , unit testing. I was curious to find out what Fuel Managment System actually meant so I decided to ask the Technical Lead, who had been working this project for the last four and half years, for a Level 0. He didn't have one so he drew me one. The Project Tech Lead also pointed to three other members of his team who assisted him, an 'A' level mathematician, a firmware Programmer and a phD student documentating the software following code completion, as per the client requirement. This made up the technical project hierarchy not including the hardware engineer and the Project Manager.
My next question to the technical Lead was, are there any project in C ? , I am good at C from College. He replied don't mention that word here again. What word I asked ? he replied C. See you made me say it again.
This was my second training ground at bytel. It was a software house focused on building a single product called SMS customer care and Billing system for the telecom industry, with a team of 10-11 developers and 250 table database. At the top of the technical hierarchy was "one of the top 10 database experts in the world".
Logsys Solution was also geared towards defence industry with the core business of software support and migration projects which used earlier versions of the same tools.
It shouldn't be overlooked that 17-19 engineers came together to build this Level 0. It was always my objective to have an understanding of Architecture prior to learning to use the APIs this diagram made that task very easy for me. This architectural diagram was published in 1999, source Credits: Professional Java Server Programming, wrox press.
The orange ellipse represents two types of architectures I identified. One using JSP + Usebean component
for business logic with JDBC managed by the application server (DB connection pooling). The application server (tomcat) running behind Apache webserver
via a mod_jserv (loadbalancer). Using the book, I had to go a number of different websites to find all the components,
namely Sun microsystems and apache.org
A Source code demo showing the origins of the name backbutton.
The current (2021) trend is to use ReactJS
or Angular instead of JSP and JSF with backend services like JAX-RS acting as microservices.
This demo is another version of the shopping cart senario, conceptually speaking. The technology stack is comprehensive, using all the components needed to build a commercial application. The technology stack is comprised of Apache webserver, Apache mod_proxy as the cluster loadbalancer,reverse proxy,gateway, Jakarta EE compliant application server, JSF , CDI , multilingual functionality, running on a Raspberry Pi 4 hardware for fun. The only component I haven't implemented is the JPA API and a database. This is because it was developed for raspi running on micros sd card. Micro SD card are made for storage, not for write operations, it will likely crash unlike a ssd drive which is design for write operations. All the components usually found in any GUI can be found in the demo. It is important to note when using GUI components, our number one criteria is end user familiarity, creating a feeling of comfort for the end user, otherwise we risk the danger of the end user concluding 'this is too complicated I am going to find something simpler'. In such a case you will lose the end user unless they have a compelling reason to remain on your website. There is an upside for the developer, we don't need to go too deep in the GUI part of the stack, learning the simple basic GUI components is sufficient.
One comes across terms like "made easy" "easy peasy" "simple" quite alot in the application generators' documents.
Clearly it is an attempt to encourage those developers who have mastered their trade to leave behind their aformentioned comfort blankets.
On this page JSP is described as making servlet programming easier.
Why would it be easier to learn to programme using JSP when you have already learned to programme Servlets.
One can conclude such authors of such remarks are confused between the expectations of the end user and the expectations of the Application Developer who knows their product has to be easy/simple to use and hide the complexity addressed by the Application developer.
A practical guide to demystifying Microservices.
Comparative Analysis by Emily Jiang, IBM MicroProfile ConsultantBusiness Logic code;
MicroProfile LRA Production release in April 2021. This is a very important API because this API is the solution for Transaction Integrity when business transactions span across multiple microservices, with each service given their own database and services not permitted to access another microservices's database directly. It is based on the Saga Design Pattern. In my opinion the microprofile can now be regarded as fulfilling the microservices paradigm because without the LRA (Long Running Action) API, considering the database is central, MicroProfile is a health & metric system for REST APIs. Incidently the dictionary meaning of Saga is a long, involved story, account, or series of incidents.
Java programming language is a combination of C , Ada and OOP therefore Java is not a new language but a familiar language.
It is a familiar language to reduce the steepness of the learning curve.
Java is an interpretive language consequently the disadvantage is a slight degradation in performance,
the advantage on the other hand is one can trace a bug even if that is outside your code, in the application generator libraries perhaps.
The advantage outweigh the disadvantage.
what is lesson in the DOD report when it says the software crisis was "compounded by the proliferation of hundereds of different languages" ?
.. 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. For this website 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, the application developer, to 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. A bit more challenging than delivering pizzas,another GIG economy.
Refrain from labelling variables names and method names after your favourite Star Wars characters. i.e. return OfTheJedi; Google database design examples
Joined a project , first question to ask, do you have level 0 (real time systems) or a Database design (e-commerce applications)
My first job required using Ada so I was one of three sent on an Ada course on my first week of starting the job. The second job required using CA OpenRoad then Oracle Forms so I was sent on a week training course for each. These are commercial Tools therefore you will only used get access through employment. I came across one guy who had been trained by an employment agency and they found him the job.
The first drawback of these types of tools, you are only useful to companies who use those programming languages, so your choices employment opportunites is limited. An even bigger drawback used to be that you can only can get access through expensive commercial training. Web technologies being far more involved and complex than the old two tier application generators, I guess at some point the commercial vendors had to make a choice, either sell training as a source of income on these complex commercial tools or make it available as opensource for application developers to self train to get more users. Smart choice
Port 80 is open to all, for both innocent access and vicious attack therefore security is a consideration for data protection (Database). Consequences when security is not taken seriously as a consideration.
The process of producing Jakarta EE web based application frameworks involves, the API developers working together in collaboration as vendors with a commitment to "learn once" use many times. The designs are worked out for them by technical committees. See LRA specification solution section for supporting evidence of the hierarchical structure.
4GLs are a subset of programming languages, this was an approach to make easier for developers, take away the complexity of the programming tool so as to focus on the complexity of the stated requirements .
When you have worked on a project where the technical lead is a top ten database expert in the world. He has chosen RDBMS , SQL, 4GL, a subset of a programming language for its simplicity, heirachical project structure of data analysts followed by developers assigned to bounded contexts/sub domains. The project is a resounding success in a competitive market then it is unwise to ignore the concepts.
When you have worked in an Industry which follows best practices, still going strong then it is also unwise to discard those best practices.
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...
projection for month 5; unemployed looking for another GIG.
Have you ever wondered why the I.T. courses always use the same boring unimaginative senarios like employee table, department table and salary table or perhaps student courses, then at the end of it you don't really confident that you can start building applications on your own. This is because they have never realised or never have been taught to always start an application from a database design. Hence the term those who can't teach training courses on software application development, those who can build applications.
Once you realise this key factor then google database design. You will be presented with umpteen of examples of database designs from a variety of Industries. Database designs with anything from 5 to 15 or more tables. That is your inspiration.
I guarantee once you have built an application using atleast a five table database you will reach the above mention learning expert level plateau in the framework of your choice. I would try building an application with atleast 15 tables.
During College in the HND Computing course, I along with all the other students was set a project by Mr. Dimitri in the C programming course. I was the only who developed a project with hundreds of line of C code. That is because I was changing my career from accountancy so I had inspiration for my project which sharpened my programming skills, leaving every one else bewildered , how did I do it ? They all lacked the inspiration. The Tech Lead at Smith aerospace realised I had an understanding for programming after our chat, he was the one who sent me to do something more challenging. The understanding came from the project.