Software development is, in essence, the process of breaking a problem down into smaller problems, implementing solutions for those smaller problems,and then composing those solutions to form partial solutions, and so on,until eventually completing the whole solution.
My workspace is Application Development. The objective of Application Development is to achieve efficiency in software engineering. The path to this efficiency usually start out its life with a committee of like minded experts who in the first instance develop a paradigm leading to a framework, finally vendors will produce it into an Application Generator. For The Application Developer this means he/she will often have to change direction during their career. I make this point because there are Information Technology Industry recruiters who are unfamiliar with the career of Application Developers.
Two frameworks I am currently focusing on are the aptly named Microprofile (small enough to fit inside an Application developer's head) and the not so aptly name ROS(Robot Operating system). Currently one of the frameworks I am focusing on to develop muscle memory is REACT. REACT is all about composition moreover it is currently a very much a hireable skill. REACT Components break down the UI into smaller independent components. Components are composed with other components to create greater components, and so on until they eventually complete the whole UI. I only work with software which all about composition when I can find it. Finding good software Application Development Tools is a journey in itself, getting your hands dirty, climbing up learning curve after learning curve.
I also bring priceless commercial experience to the table, experience I gained by working in companies like Smiths Aerospace & defence Divison and bytel ©, when I was a young and inexperienced Software Developer trying to better myself until I realised I have achieved my objective and there is nothing more for me to learn in terms of experience,on the contrary I can teach people a thing or two who have never got their hands dirty. Smiths Aerospace develop from scratch realtime mission critical systems. bytel was a producer of telco customer care & billing where the Tech lead was one of the top ten database experts in the world and I was lucky enough to see how a large & complex Industry leading product is built successfully
This website is Hosted on a $32 computer, attached to it is the $32 SSD drive acting as the data centre housed in my private & secret linen closet
running a Free Turbo charged Webserver.
The cost of hosting each extra websites is the cost of a domain name only because of a feature
offered by the Apache webserver called Virtual Hosting .
I did this project the way I did because I can, because my workspace is Application Development
One of my commercial achievement was finding an Application development Tool fit for commercial development for my employer at the time, Logsys solutions, Wokingham , UK. Specifically advised them the next time they win a commerce specification(s), they should utilise Serverside technologies, one such tool fit for commercial Application development is IBM websphere.
when I told my colleague, senior developer with 10 years experience in Visual Basic, we should be going serverside, he high tailed it out of the software house, landed a Visual Basic job at another company with a mouth watering salary. Visual Basic is all about Composition and so is any another 4GL.
prototyping is very important for Application developers.
Protoyping will help us to hit the ground running.
We can test for the Error Handler "friendliness". Ascertain the effort required until we can be on the same page with the product Programmer.
The quality of the error handler is the difference between being self reliant or being stuck googling for answers , Stackoverflow ,
using product mailing list.
If you are experienced Application developer transitioning not to be confused with a beginner ,
even when you are starting out with a new product you can find product bug(s) ,
even in a simple Hello World type
Prototype.
Finding bugs when protoyping thereby ascertaining product stability is the gist of protoyping,
I like to include user product documentation "friendliness", Application Developers are not perfect, in our eagerness to get it "working"
we sometimes skip over steps in the documentation.
The one product which does not require any protoyping is the Oracle database. It has two remarkable qualities making it the success it is. The Error Handler which explains clearly the cause and solution making you self reliant (little need to call product support). The other is the quality and accuracy of documentation, which explains first the concepts followed by how-to instructions. The only prerequisite skill needed is knowing how to install it, don't forget to change the default password. , off you go!
If working the oracle database is so good then why don't I pursue it ? I found that working with a database in a commercial environment is a very responsible , however it lacks the creativity of Application Development. As Application Developer you are creating something unique, something never existing before, akin to artistry. This website is unique, result of my own original creativity, for someone who cannot draw no more than stick figures I have achieved a work of art. So if you compare to working as Application Developer with Database Administrator, DBA is a just a job need doing.
I had learned four very important concepts in my software development career
(a) I understood the meaning of Rapid Application Development ,
(b) Transitioning for Application Developers from one framework to another
is a sprint not a marathon
(c) discovered open source
(d) realised the secret to Success when builing Large & complex Industrial Applications.
ServerSide application Development is not easy, it requires a lot of personal time investment because serverside comprises multidisciplinary skill set hence the term Full Stack Developer. To be a frontend only developer one requires skills in HTML,CSS and Javascript.
Making correct use of Application Generators to successfully build Applications on time, on budget, meeting the
stated requirements is separate discipline, not part of the Full Technology Stack, rather an approach .
Fortunately I was lucky enough to have worked at Smiths Aerospace & defence and bytel, slough, UK where I was able to witness
and learn this approach .
If you need convincing the approach is actually a thing and not just something
I made up to make myself marketable , then just look at this recent report for supporting evidence.
Unless you think the whole of the blame comprising $2.84 Trillion losses should be put on the skilled Application developers.
" 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 "
ReactJS is a framework created to improve software quality
to Vanilla Javascript.
Vanilla Javascript in its original imperative form is difficult to read,
difficult to interpret by another developer asked to make changes to code,
therefore difficult to maintain . Software maintenance is a stage in the software
project lifecycle therefore an important consideration.
Composability enables abstraction and allows us to understand code without having
to care about all the details all the time.
Ever since I worked at Smiths Aerospace & Defence I have been fascinated with real time technology. One such technology which allows me to explore my curiousity is ROS Robot Operating System. It is actually a framework with a set of APIs for use by Application Developers. ROS has excellent documentation,youtube videos, cheap Udemy courses to help you get up to speed. it is stable from what I can tell from the protoypes I have done so far , an Application Developer can develop their own automonous vehicles integrating Artificial Intelligence/ Machine learning features like Computer Vision and so much more. ROS's intended audience is most certainly Application Developers.
The idea of hitting the plateau was first introduced to me by a project manager during a career development meeting. From his view focusing only on programming skills (Application Development Frameworks) would lead to hitting the glass ceiling therefore the Application Developer will remain as Juniors. In that environment Project Manager was not the most senior Lead role either.
I saw positive in his negative expression, becoming an expert Application Developer is a sprint not a marathon. That is exactly the objective of the Framework Vendors to encourage Application developers to take up their Tools for building large and complex Industrial Applications. The smart Tool Vendors have gone a step further, made their product open source meaning Free learning for Application Developers. This is the case with IBM's openliberty.io
Commercial experience is important so far as it lets an Application developer see why some firms remain in the race while others fall away. In my case I was able to appreciate firms like Smiths Aerospace and Defence are still going strong meanwhile other firms like bytel, slough who was initially very successful, then the new venture capitalists came in, had no expertise in what made that company so successful, one wrong decision led to it closing its doors. Then there are firms like Logsys Solution who as far as I could see was never going to remain in the race for long.
There are surprisingly a huge number of people in the Information Technology who didn't get the memo about the hitting the proverbial ceiling. Still charging huge amounts for crash course training on Vendor specific Tools. Recruiter measuring expertise by looking at the number of years claimed by a candidate on a framework in a commercial environment.
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 Level 0 is from a book Professional Java Server Programming by WROX press published in 1999. The two most important components for the Application Developer is useBean (intra-process) and the EJB Bean (inter-process). This is where we put our business logic. One for scoping i.e. session scope (shopping cart) and the other for heavy compute engines (load transferred to other CPUs)
Microservices is the current approach to helping Application developers overcome the complexity stated requirements or Business Knowledge.
Some experts have described the motivation for microservices is that it makes the application small enough to fit inside the developer's head. Always blaming the Developer. Other experts like Martin Fowler advocate their is nothing wrong with first developing the application as a monolith then breaking up the completed Application into smaller Microservices. Fortunately I was lucky enough to be at the right time , right place with the right motivation. One of them is partially correct and the other is just nonsense and it is my commercial secret too valuable to share here.
Following my two HND computing course where I learned four different programming languages, enough to understand that they were differnt routes to achieve the same objective to an extent. I was hired for the next five years in a purely software development roles. There was one common factor in all three of my employment, at the beginning of each employment I was sent on a commercial training to course to learn a new programming language.
Smiths Aerospace & defence was my first employer who sent me to learn Ada at the first week, bytel sent me to learn first Open Road a 4GL then later Oracle Forms , another 4GL. Finally Logsys Solutions introduced me to servlet programming programming. It appeared to me I was always on a learning curve. In all of these skill set I learned the basics used them to get by. I was able to do that
I always assumed this was the norm in the software development, that is to say learn commercially useful programming tools from my new employer each time I would start a new job. I assumed that is the norm until I came across a programmer who had ten years of experience in Visual Basic and point blank refused to undergo servlet programming course.
Ten years experience in a complete development tool like visual basic is good and as a result he was chosen as the Tech Lead for a new project ging from paper based system to digital system. I did however notice that he had did not have the kind of exposure I had to software development practices therefore he was unaware the correct way to develop a software project. Something a Tech Lead must know because he carries that responsibility.
Around this time I discovered open source commercial products. That is to say I could learn commercially used products at the price of a book. I didn't have to make do with very expensive one week crash course.
This is led to what what be considered a highly contentious decision in Information technology. I was going to leave software development and find the tools and train on them. The tools I would train on would support the best practices I had picked up from my commercial experience.
Being trained on Software development Tools before join a software development, taking my time to train on complex framework and architecure, already knowing all the concepts would by my calculation make a Dynamite Application developer.
Booch: "Industrial Strength Software is beyond the intellect of a developer". I feel Booch is unfairly and harshly criticising the Application Developer. The first step to developing Industrial Strength software is the division of labour. In this divison of labour the system architects of frameworks spend years researching , developing , reworking , stabilising the framework. It is after that the Application Developer is required on learn and master the software development architecture in the shortest possible time so that he/she can Apply the framework APIs and in some cases setup the framework. It was I, the Application Developer was able to see the KISS, a commercial architecture was not suitable for Industrial Software when I had to do a work around so I can integrate the email facility, therefore I showed Industrial Software certainly isn't beyond my intellect. As a matter of fact it was after this experience I felt I, more than System Architects best suited to decide which framework(s) are best suited to use to develop Industrial Strength Application.
All these software Tools provider targetting their frameworks at Application Developers know that a limited amount of time will lead the Application Developer to achieve expert level plateau. Another words once reaching an expert level they can hit the ground running on a project.
It is my experience One cannot become a commercial level Application developer by just follow these documents. To get to that skill level, where a hirer cannot refuse to make you an offer, your must first apply it by building an application or a portfolio of protoype applications. That will get you to the plateau
I choose this framework as my main skill set in building database centric applications,this decision is base on my wealth of experience. There are easier and simpler choices available, this paradigm is designed to make the stated requirements easier for the Application Developer.
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.
Just as Javascript has produced frameworks like Reactjs for practical,easily maintainable Applications, J2EE/JavaEE/JakaratEE has also been on the same journey of simplification. Microsrvices for Application developers get their heads around the stated requirements.
As Application developers we need comparisons. We need to know if we are investing in the best product. This is a comparison of two Java based competing Frameworks based on the microservices paradigm. A comfort blanket for Application Developers
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.