Friday, September 3, 2010

The Futility of Coding

Insanity: doing the same thing over and over again and expecting different results. -- Albert Einstein

Coding Failures. Computer programming projects are notorious for their failure rates and many of these issues can be tied to the massive effort required to write a working program. And yet businesses routinely try to solve business problems by writing millions of lines of computer code. The number of persons in an IT department who are truly capable of programming are few and far between.

Java weaknesses. There are all kinds of weaknesses in coding. For example, it is well known that a Java program can be syntactically correct but still not compile because of errors related to the semantics of the language.

Visual Studio.NET weaknesses. And Microsoft itself has admitted that “Most languages do not support binary compatibility at all, and many do little to facilitate source compatibility. In fact, some languages contain flaws that make it impossible, in general, to evolve a class over time without breaking at least some client code.”

Very few people can code. In his widely read article “Why Johnny Can’t Program” Dan Bricklin suggests that: “Despite the enormous changes which have taken place since electronic computing was invented in the 1950s, some things remain stubbornly the same. In particular, most people can't learn to program: between 30% and 60% of every university computer science department's intake fail the first programming course. Experienced teachers are weary but never oblivious of this fact; brighteyed beginners who believe that the old ones must have been doing it wrong learn the truth from bitter experience; and so it has been for almost two generations, ever since the subject began in the 1960s.”

But many people can program. Bricklin points to Don Norman’s book The Design of Everyday Things to suggest that principles of good design suggest that you need 1) a logically consistent model, 2) ability to see what you are doing, and 3) clear feedback between actions and reactions in a manner that provides continuous feedback.

The futility of coding. Traditional computer programming fails on at least two accounts. Depending on the language, one can argue whether it follows a logically consistent model. But there is clearly no visible relationship between 3GL code and the interaction of the computer program itself. In languages that require compilation, there is also no continuous feedback. The need of most 3GL and 4GL programs to run error-checking and debugging programs before compiling is clear evidence of just how broken the feedback loop really is.

An approach to developing not coding. Contrast that with an application platform like uniPaaS that allows for the use of menus, drop-downs, dialog boxes and form drawing tools. It is much easier to see what you are doing in this kind of approach. It is not only easier to see because it is human readable, it is also easier to see because there are fewer instructions needed. A uniPaaS application leverages the underlying capabilities of the platform itself which encapsulates capabilities that would otherwise have to be written and displayed as thousands of lines of code.

Furthermore, uniPaaS provides immediate execution of the program while still in the studio environment. uniPaaS’ table-driven development paradigm results in computer programming that offers instantaneous results. What follows the invocation of a table based program is an iterative process of refinement. And the uniPaaS repository-based model is very strong conceptually. The data, logic and user interface layers of an application are neatly organized and easily manipulated. Complex processes that are difficult to visualize because of the number of complex interrelated steps, such as the design of a Web Service, are managed for the uniPaaS programmer through the use of wizards that provide a clear dialog approach that eliminates the need to read and write detailed coded instructions.

Exploring uniPaaS. To see a good example of a the interaction possible with a uniPaaS RIA application see the uniPaaS RIA demo. To download uniPaaS and a self-paced training course, visit the uniPaaS download site. As always, developer resources for uniPaaS are available on the website.

And So You Code...

No comments:

Post a Comment