Integrated Development Environment
When planning to develop an application, we have to consider the following things:
- Target platform.
- Development tool (most probably, Integrated Development Environment (IDE)).
Compared with the above two, the available set of skills is so trivial that it should be neglected in decision-making because any good application developer can turn him/her from a novice to an expert in using any well-developed tool in a matter of weeks.
We have no say in the target platform when we develop an application for users who have already been using a certain platform.
Sometimes we offer a product that includes both hardware and software; in this case, we have to choose the platform carefully. It is not always the case that we choose the platform first, then the IDE. Since the quality of an IDE can affect the quality and cost of the application development significantly, sometimes we may have to settle for a not-the-best platform because it has the best IDE support.
IDE is so important that the success of some platforms is attributed to their strong IDE support. It is very common to double or triple the productivity of application development simply by switching to a better IDE.
There are some almost religious fanaticisms about some platforms, IDEs, or computer languages. This note is written with the author's constant intention of addressing issues only based on scientific and engineering common sense.
A good IDE should have the following characteristics:
- Robustness. This is much more important than anything else. One can develop any application by purely writing text-based code without using any IDE. IDEs offer convenience and automation of code generation, resulting in much higher productivity. However, a buggy IDE can generate problems that easily cost hours, even days, to get around. It can waste more time than it can save. A good application developer should never touch an IDE that offers poorer productivity than using simple text editors to generate all necessary code. Some amateur developers rely on IDEs to develop applications because they do not understand the fundamentals of the application that IDEs hide from them.
- High flexibility. IDEs automate a lot of code generation, but good IDEs should never disable access to any platform feature that can be accessed through text-based coding. In other words, IDEs should only empower, not weaken, the developers.
- Friendly and powerful help tool. Most application development involves a large set of API that few people can learn by heart, just as few people in the world can recite the entire Bible. Looking for or up functions, constants, etc., is a major portion of development work. An excellent help tool can boost productivity significantly.
- Rich features and a friendly user interface. This is the least important one, but could make a significant difference if the above characteristics are in place. As every developer knows, it is very easy to add features, but it is much harder to add features without posing any threat to the robustness.
Looking around, we should be able to find very few good IDEs that possess the above characteristics. If we observe and explore objectively, in this era of high information flow, we can easily pick a good IDE among the mass weeds.
(originally written on 7/4/02)