n4hpg Posted July 7, 2016 Posted July 7, 2016 I would like to propose something disruptive. There are now thousands of schools and courses devoted to CODING. That is writing computer code. Someone wants an APP for this and an APP for that. The natural solution is to hire a team of coders to write the app, debug it, deploy it, debug it and so on. Programmers rate their own value as how well they write programs. Users rate the value in a given application by how well it helps them do something more efficiently. We have an ever increasing mountain of computer code. Over time, this computer code needs to be refreshed, updated or deprecated. Much of it is never documented as the programmers frenetically write the code to get it into the wild as fast as possible. Also, programming well is an art form. Not everyone who can write a little bit of code does it well. As systems increase in complexity, the interaction of many different variables becomes increasingly difficult to test. Having been a professional programmer/engineer since I was 16, I've written tens of thousands of programs. If I had a penny for every keystroke, I'd be rich. I've added to the mountain of code that someone will need to maintain. Let's examine business forms. Business forms are meant to collect data and shove it into a database. Ideally, there would be validation that the input data is correct and the user would be prompted to correct input errors. Take a very simple demographics form: FIRST NAME LAST NAME ADDRESS PHONE NUMBER EMAIL ADDRESS The person designing the database table needs to set up a column for each of these input fields. The person developing the input form needs to create the UI for each field. Another person needs to glue the front-end to the back-end with various scripting. What we find is that this process is repeated ad-nauseum. The programmers involved believe that their worth is in coding all of this by hand. This is a disconnect from the value of the User who wants a reliable product. 10 years ago, I developed a completely different approach. I call it "Business Objects". A business object is a functional representation of data in an application. The business object has methods and properties to tell it how to behave. Schemas are defined in terms of business objects instead of primitives (string, integer, bool, date, etc.) though the primitives are defined in the business object itself. The UI rendering engine digests the schema against the form layout and creates the UI. When a schema is saved, the environment will construct all of the necessary tables and generate the form. At this point, the application is ready to operate. Because the business objects are tested and the engine is tested, the quality of operation can be assured. Business objects are infinitely reusable and extensible. WHY should we need to code by hand a LAST NAME field every time we want it in a table and application? Can't we simply use a widget? That's the point! We now change the programmer's role from writing a mountain of UI code to that of creating the real value - the functions specific to that business that are not simply a part of the business object. Examples would be the calculation of shipping charges on an order, computing insurance benefits in a patient visit, updating inventory counts, etc. For those of you who are coders, you'll recognize that this represents a philosophical change to the way that you approach your work. For those interested, please check out my website: www.pavuk.com. And to the moderator, if you feel this post is inappropriate, please feel free to delete it. I'm an engineer and not a salesman.
A4E Posted July 8, 2016 Posted July 8, 2016 Software developers and companies undeniably have dynamic code like that, and have most likely been doing similar things like what you describe for more than 10 years, and even I have been coding stuff that can be categorized in this. So I don't see how this is "completely different". What am I missing? I would think that there would be an issue about copyright or licensing as well if someone wants to use a widget in his code, and the widget was made a year ago by a guy who quit working in the company. Just as an example. Maybe I just don't know enough about these things though.
n4hpg Posted July 8, 2016 Author Posted July 8, 2016 The cobbler's feet were unshod! It is best to ensure that the public-facing portion of your website is operational before posting in a forum! If you tried to go to my site, please try again. The main website is running on the software development server.
rosencrantz Posted July 9, 2016 Posted July 9, 2016 How is your approach different from C++ templates?
n4hpg Posted July 10, 2016 Author Posted July 10, 2016 The approach is very different from code templates. The point is to keep the code as small as possible. Objects are defined largely in tables. Tables are defined in tables. Forms are defined in tables. Configurations are defined in tables. The engine uses the tables to dynamically create the user interface as well as process the data. For example, let's say you have a field (column) for LAST_NAME and you now make it required. This is a property in the table definition table. Simply asserting it required causes the engine to change the markup and JS components to enforce entry as well as the checking prior to updating. In the main storage table, it would assert the NOT NULL. So, without any specific programming, the developer can change things like this. That's the power. To update most of the application is simply modifying tables.
Recommended Posts