Bad CaRMa

Randy proposed building, from scratch, a completely data-driven application. Most conventional database applications are written in code using programming languages that access and manipulate data. Code is very difficult to change once it is written, but code controls data.

Randy's idea was that all of the forms, all of the reports, all of the functionality of the system would be stored as metadata, or data about data, and the only thing coded in a programming language would be an engine to process both metadata and data. For example, instead of defining a table just to store order-line information, why not also store the basic business logic about inserting, updating, and deleting order-lines in the table, as well as details about the structure of an order-line. Once an engine was built, then that would be the end of all coding, forever and ever, amen. After that, the engine would process data about data then the data itself, and in this fashion any form, report, or program could be built. When new functionality or modifications were needed to the system, you only had to change the metadata, not the code.

Bad CaRMa

This great story reminds my why I cringe every time I hear about a new project creating some revolutionary rules engine. Nowadays developers tend to do this stuff in XML files instead of databases, but the basic motivation is the same: to avoid boring coding.

The general thinking is instead of programming a boring old business application, you can build an amazing new meta-application framework that allow your users to build their very own customized business application. You get to build something cool, and your users get just what they want, everyone wins! But since users can't code (that's why they are the user and you are the programmer), you develop new declarative structures your users must now learn how to manipulate. In the end, to make it powerful enough to meet user application needs, you build something too complicated for them to use. So you wind up being the only who who can program the system. Been there done that.

Posted October 16, 2006 4:59 PM