Factors Influencing Technology Selection
Dagmara Czarnota, 19 May 2021
Each technology has certain limitations. For that reason, particular technical tools should only be used in projects for which they were designed. For example, the same game can be written in different programming languages, including in C ++, C #, and Java, but the choice depends usually on the developer’s experience in a given technology.
Various technologies provide wide possibilities for creating a solution tailored to specific requirements. Such a choice enables the creation of a product that is efficient and fast. Of course, there is always the option to write a solution in a language not intended for a given type of product. But why? Not only would it take longer to build the solution, but the product probably would be of lower quality and would run slower. Therefore, it is not worth it. It is recommended to choose technologies designed for the creation of specific solutions.
Experience and knowledge
Some products can be easily created in various technologies. Hybrid technologies are used in the case of mobile applications created to work on both Android and iOS. They feature frameworks such as React Native, Flutter, and NativeScript. Technologies differ between themselves, one has more libraries and is better supported than the other, but the final results are very similar to each other. Also, the technology might be chosen based on the level of experience and knowledge. Developers will be more likely to create solutions in technology which they are more familiar with and in which they have already completed projects.
Such a decision is not only based on the convenience of the development team, but also on other factors such as time and money. Developers who do not feel too strong in the technology required by the client might need additional time to learn how to use it. Each additional time means an extended period of project implementation and thus increased costs. For this reason, it pays to choose the technology in which the developers are more experienced.
The choice of technology is also influenced by popularity, which is understood as the number of developers using it. The more developers know a particular technology, the bigger a community is formed around technology, and this helps everyone. It’s also much easier to find and recruit specialists in popular technology.
As popular technologies lead to the growth of large and engaged communities, it is easier to find a person who has dealt with a similar problem and will be willing to share a solution. Additionally, the popularity of the technology positively influences its development. Some developers create proprietary, high-quality libraries and share them with other members of the community.
This way, it is possible to predict the turn of events in the future. Analyzing the Stack Overflow rankings, it might be seen that Objective-C’s popularity is decreasing each year. This is because of the development of Swift technology, which can be used instead. Both languages enable the creation of applications for systems used in Apple products (iOS). Currently, Apple encourages to use of Swift in development and keeps developing it and using it to create solutions. All this means that fewer and fewer developers are using Cel-C.
Technology support can be understood in two ways: as support offered by the community and as the support provided directly by technology creators. The latter mainly refers to the documentation produced. Carefully and correctly written technical documentation helps many developers in solving the problems. Such a document should primarily contain operation descriptions of libraries and algorithms, as well as the method of arrangement and operation of individual components, classes, and functions. Sometimes there is an extra FAQ section in the documentation which is very useful as it answers frequently asked questions. For example, in the Python technical documentation, the FAQ section has several subsections, and each subsection specifies a category of questions. Such section covers questions related to, for example, Python coding, available libraries, and GUI.
However, technical documentation alone is not sufficient. If a developer is struggling with some problem, he or she can always turn to the community for help.
Technology selection is also influenced by the internal IT department. Companies often outsource the creation of IT solutions to external suppliers, but they intend to maintain it themselves. If the solution is created in technology unknown for internal IT employees, there is no one to maintain it. As a result, a company will have to employ new developers with the required knowledge or outsource the maintenance, which significantly increases costs.
Maturity and stability
A technology’s maturity and stability may be related to its age. Older technologies generally have more libraries and frameworks than younger ones. Also, these tools usually are of better quality, as they have already been modified and improved many times. Stable technology has an established position on the market and a wide community ensuring its development. As a result, there are no worries that in a few years the technology will no longer be supported and developed. Young technologies not only have few ready-made libraries but also their quality often leaves a lot to be desired. To avoid problems with further development or maintenance, it is better to choose mature and stable technologies for the project.
Scalability is a technical factor that is necessary for companies that intend to develop a long-term product. In such a situation, a technology used has to enable quick and easy scaling, as well as facilitate not only the current work but also the future one. Before deciding on a specific technology, it is best to talk about this with a client and ask whether there are any plans to add new features to the solution in the future. The scalability of the product is also influenced by the development and expansion of the client's business. If a company plans to enter new markets, the IT solution might need more language versions. Also, when expanding, the number of users increases. Because of such changes, the product must be constantly improved to ensure efficient and quick work. Therefore, it is wise to choose technology that enables relatively easy scaling of the product.
The time and cost of product development in a given technology
The chosen technology and the developers’ hourly rate influence the cost of product development. According to the No Fluff Jobs report, in the first half of 2019, developers specializing in Node.js technology had the highest average salary. Java and Python experts were right behind. .NET developers were placed fifth, and Angular seventh. A high hourly rate means increased costs because most software development companies account for IT projects on an hourly basis.
The second factor is time. Some technologies take less time to write code than others. For example, the same code will be written much faster in Python than in Java, because Python has a concise and readable syntax. It significantly improves coding because less code is needed to achieve the same effect. The concise and readable syntax enables developers to write code faster, but also significantly reduces the time spent on debugging tasks. If the project requires less time to be built in a given technology, it may offset the higher salary of a specialist.
The time and cost of the project also depend on the schedule and budget. In some situations, these factors are rigidly defined and cannot be changed. For example, when a client has received a grant or funding from European funds and must adhere to all the provisions contained in the form, the development team has to adjust the technology and solution to the financial and time resources.
Choosing the right technology is not easy and depends on several factors, including the product being created, the level of developers’ expertise in a given technology, and its popularity, maturity, and stability. Experienced developers always adjust the solution to the client's needs. For this reason, it is important to provide all information about the product’s purpose and its use, as well as plans related to its development.
However, technology itself does not solve problems. Sometimes, there may be performance issues. Switching to another technology will not make these difficulties disappear. To solve the problem, the system must be optimized.