Monday, July 18, 2016

Conclusion: How To Automate the Production of Software

Over the past few weeks we have been discussing best practices in producing software.  Some of the highlights include:
  • Pick a technology and stick with it.  We choose Microsoft since they are the only vendor that produces everything we need from server to desktop OSs to tools that support database and procedural code.
  • Applications are database driven.
  • The table structure is hidden from everyone except the administrative users, and all data access is done through stored procedures
  • Set based code is the best and the fastest, write as little procedural code as possible and then only to 'objectize' the database entities for consumption by the User Interface.
On to the good stuff. Let's talk about what we are gong to do with all this new code.


Automation

Since all of this is database-centric, we can literally write code to write the procedures and middle tier objects for us and use MVC (or another piece of code we make to consume the middle tier for the desktop, the Data Form Base) to generate the web forms/views for the UI.  We are not going to provide examples of that. Suffice it to say that we can literally generate about 80% of a new application given a properly designed database.  Not only that, but this design is less than half the size and complexity and about twice as fast and efficient as code you might get from one of the big consulting firms like Accenture, Capgemini, Deloitte or others.  Factor in that our rates are about a quarter of theirs and you find that we can build better, faster software for about a tenth of what they might charge, if they could do things of this complexity at all.  Since the code is generated, we don't have to worry about coding standards or checking developers to make sure they are doing what they are supposed to do, or even in many cases, need developers at all.  The last project we completed is in testing now and we spent about 4 hours designing it, 15 seconds to generate the code and a couple of weeks to make it pretty.

Complexity

Above we just mentioned complexity.  The classic salesman problem states that as the number of stops a salesman has to make increases the amount of time to calculate the shortest route also increases.  As the number of stops approaches infinity, the mount of time it takes to solve the problem also approaches infinity.  The only way to break this law is to be able to generate a solution that solves the problem for you.  Being able to generate most of a piece of software means that tackling a really complex job becomes more simple and easy to build and maintain.  With this automated process of generating software we could produce one application that documents everything a business does.  Not only that, but then we could generate reports that would detail the state of the business at any juncture.  The benefit is that you can relate all your information together, like Human Resources, Capital Assets, Structures, Consumables and even processes and what it takes for each step.  This gives you, for the first time, the ability to know what each widget you produce or each service you provide costs before you decide on a price or to accept the price your client offers.
 
What does all this mean?
Everyone has heard of US Air.  What many don’t know is that US Air was the subject of one of the largest non-financial bankruptcy in history.  US Air failed for one reason: they didn’t and still don’t know how much it costs to fly you from Point A to Point B.  They have history.  They know how much it cost last week, last month or last year, but not today or in the future.  If they designed and built one application that documented everything they do, pilots, flight attendants, price of the particular load of kerosene, amortizing the airframe, maintenance costs, consumables consumed on that particular flight, they could have printed a report that showed the cost of every seat on that flight.  If you add, say, 20% on top of that, you have a tidy little profit and you will never go bankrupt.  Even better, with this reporting ability you could find out where the money was going.  There is a model for how much each phase of a process should cost and it would be easy to find which phases were overrunning their budget and fix it. Best of all, every other airline who competes on price will eventually go out of business.  Let's say that again: If your company doesn't do things this way, someone in your industry will and that company will put you out of business.

Let's close with this example: One of our subsidiary companies, Sentia Health has used this process to produce a single application that allows doctors to document the patient's visits, in English, and then take that documentation and pay for the encounter with no other effort needed.  They have made the insurance industry and all its associated costs, obsolete.  Patients can log in and update demographic information, take questionnaires (avoiding the sheaf of papers you have to fill out when you go to the doc) schedule appointments, email the practitioner and have our new health insurance company pay for the encounter in real time, obviating the need for any of the wasted motion the  insurance industry inflicts on patients and practitioners. Gone is the paper and the medical coding and arriven is the Dr. House on your laptop, sans bad attitude and cane.

This is the future and we are building it.

No comments:

Post a Comment