Before the development starts and before the design is done for the project the technology stack for the system has to be clearly identified. While a simple programming language could be selected to complete the system and often that was how it was couple of decades back these days we are more into higher level of abstractions that allow us to focus on just the problem. For example to develop a web application one doesn’t need to write an application server that has to handle the request and response and many other low level functions. Imagine if we were still stuck with how the trend was couple of decades ago probably I wouldn’t be writing this blog post now.
OK the point is now we have lot of tools, technologies and frameworks (TTF - is not a known acronym but for the sake of this post) that we can one off use them and not worry about taking care of so many low level details. Because these TTF go through the same process as any other project would go through to make it free from critical errors. But a task that still remains is the selection of the tools, technologies and frameworks that will aid in effectively building the system. The selection not only includes if the TTF meets the specific needs of the system but also how it can integrate well with other TTF’s with not much friction. Before the TTF’s can be selected the primary language(s) under which these TTF’s would work is as well as important. This by itself should be thought through with some of the performance requirements of the system and most important the skill set available within the organization. The selection process of the TTF’s should include not any lesser than the following.
Meets good enough requirements - While logically one won’t select a TTF that doesn’t meet all of the requirements of a system be aware of TTF’s that can do more than what is needed. While selecting such a tool may not affect the behavior of a system but it could choke the environment loading what is not required. Trying to find a tool that meets the requirement exactly maybe difficult but look if the TTF provides a way to use only those components required through plug and play or load what is required.
Environment Support - A TTF is also a program and requires an underlying environment that supports it. The TTF should support the language or the operating environment under which the system is deployed. The important point is to look for the supported versions and also look at the release notes for the specific platform.
Integration - As I mentioned earlier if there are more than one TTF’s involved and if they have to talk to each other look for compatibility. If they operate under different environment then a middle tier that can help bridge the TTF’s maybe required or look if the TTF’s provide support to talk over the network in technology-agnostic language such as XML.
Cost - The budget allocated for project and how much of it can be spent for the TTF’s is an input here. While open source TTF’s has been blooming crazy for every known area, there are few areas where commercial ones still hold the upper hand. The cost comes into picture in such an instance. Also the support provided could vary depending on open source or commercial (again depending on the package if commercial) which by itself is a criterion (see next point).
Support - What type of support is available for a specific TTF? Look for community forums, developer forums, discussion boards and any other groups other than the support provided by the company if any.
Help documents - Look for the help document provided by the TTF and how extensive it is and how easy it is to refer, use it.
IDE (Integrated Development Environment) support - Does the TTF provide any plugins for the IDE (selection of IDE if one doesn’t exist for the organization by itself has to go through certain criteria’s) the development team would use.
Tests - These days some of the TTF’s bundle with certain tests that asserts the proper functioning of the TTF. Look if one is available for the TTF you are evaluating.
While it is not an exhaustive list and there could be additional checks pertaining to specific requirements the above are some of the points to look for. Said that the selection process by itself is not something systematic or has any formula to select or not select. Such a selection process requires some experience and insights either from experts who have gone through it or from the past experiences. Sometimes failures teach better lessons.