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.
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.
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.
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
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
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.