Applications written in a scripting language sucks in the long run (?)
Oct 15, 2013
Suresh Vasudev
4 minute read

Let me start with a note that I am a great fan of Javascript and JQuery!!!

Please note that subject of this article is not an affirmative statement but a question to all of us who are passionate about software development.

There are lots of frameworks in recent times which aid the developers to produce wonderful application software. Many of them are inspired from JavaScript and targeting web based development. Ruby on Rails (ROR) changed the way about how to design future frameworks. There are many frameworks in the other languages similar to ROR – Play (Java) , Codeigniter (PHP) etc.

Today software industry is flooded with JavaScript frameworks and some of them are really popular - Bootstrap, Backbone, Node.js, JQueryMobile, AngularJS etc. Sometimes it gives an impression that every other developer is coming up with a new framework. The intention is highly appreciable and some of the turns out to be the darling of the software developer.

The Objective of this article is to highlight some of the issues associated with scripting language frameworks. My definition if scripting language is any framework / language which cannot be pre-compiled. Please note that many “cons” mentioned in this article will be acceptable for many projects considering the “pros” associated with it. However I thought it is worth highlighting it.

Strictly follow the Rules

Each framework has well defined path to be followed and we have to make sure they are religiously followed. Any deviation from it can lead to unexpected errors and maintenance nightmares. However in enterprise projects there is always a need to deviate considering the business complexity.

Backward Compatibility

Most of the frameworks need not be 100% backward compatible. When a new version arrives it will not be a piece of cake to upgrade with minimum effort. This is the biggest drawback of a scripting language. In the case of compilation language at least one can guarantee that the code will get executed in production. The best example to understand the complexity is comparing the application migration effort required for ROR / PHP with C# /Java applications.

Impact Analysis

In a compiler language it is very easy to do the impact analysis of modifying a function. However in the case of scripting language there is no easy way out. So re-factoring is a challeng in scripting language

Re-factoring

Whenever there is a serious discussion about re-factoring, there is a reference to test suites. Best known approach is we re-factor and make sure all the tests got passed. However in most of the real “project” scenario there are limited tests written when compared to product development software houses. The objective of a project oriented company is to design, develop, deploy and handover so as to move on to next project. So in majority of the cases re-factoring can lead to production issues , more QA which in turn leads to more development effort (in terms of fixing bugs).

Information Hiding and Performance Issues

The main objective of all the new frameworks is to make sure developer spend less time on coding (NOT solving business problems). Most of the frameworks hide the underlying fundamentals and its related complexity to get things done. Best examples are AJAX and ORM. Nowadays the new generation developers are not even aware of SQLs and or its impact if not wisely used. A wrongly written ORM usage can result in multiple calls to get simple things but it remain unnoticed unless there are serious code-review effort. Most of the time it is noticed when there are performance issues reported from the production.

Applying Design Patterns

As most of the Web frameworks are based on a well know pattern there is a tendency to follow just what they provide. Many consider frameworks as a magic solution to all their problem. To a certain extend it is putting a cap on the application design creativity

Resource Utilization

Most of the time frameworks are picked up to demonstrate the company’s capability in project execution. They make use of the scaffolding available in the framework to create a big bang impact to the clients. However in a project of enterprise nature the business complexity is exponential and there is no substitute for creativity. In the long run the time spend on maintaining the project (product) can go worse for those application built over these so called sexy frameworks.

The above notes are based on my experience and observation. All frameworks / development environment can lead to good result provided there are people in the project with commonsense, creativity, aptitude and attitude.