From time to time, a new language or framework appears on the market. If it finds enough supporters, it is incredibly hyped to be the next killer technology that will overrun established languages like C++ and Java. The new buzzword is “easy” – the better technology is one that makes easier and simpler for a developer to create an application from scratch. I don’t disagree with the principle because developer productivity is one of the key factors behind acceptance of a technology. However, I have major reservations about these claims.
For example, one typical example shown to demonstrate the ease of use of a technology or framework is to create a simple web page (or desktop window) that displays a list of records with the ability to add new records and edit and delete existing ones. Usually, this display is created by very few lines of code or even no code, if the program is created in a visual environment.
Is this example really valid? Consider the following scenarios that these seemingly easy examples ignore:
- What happens when multiple people try to access that page? Is there a way of locking records? What types of locking are available? How easy is to incorporate that into the application?
- What happens if there are millions of records in that table, and if there are thousands of users accessing that screen at a given time? Do we have to resort to different techniques to prevent the system from overload?
- How do you configure the screen for permissions so that different users can see only the rows and columns that they are authorized for?
When you add multiple tables in the mix and also consider elements like internationalization and localization, the performance, concurrency and authorization issues become even more complex. And we have even started talking about good intuitive GUI design or usability of the application.
Creating an enterprise level application requires a high level of complexity, architecture and design. It is not simply a matter of splashing a few objects on the screen, setting some properties and creating a cool display. Having the right language or framework is important, but it is less important than good analysis and design. Once the design is in place, one has the essential criteria to select the appropriate technology.
A language must be easy and powerful. If it forces the developer to choose a particular way to solve problems, the developer will become frustrated when he or she is faced with new challenges. If the language is flexible enough, the developer can create new modules or objects to handle new technical and business scenarios.
If the evangelists of a technology want to be treated as serious, they should build applications that demonstrate that their framework is able to handle non-trivial technical concerns. Many demo sites and books don’t even consider the fact that an application may be used by multiple people and that two people may modify the same record simultaneously.
So, when you hear the next great technology, don’t simply give into the hype. Think about all the business and technical problems that you have solved using some current technology. Can the new technology handle all that complexity or is it just a smoke-and-mirrors show? If it is not flexible or powerful enough, stick with what you know.