When beginning the planning of a software project, one of the initial questions that may arise for the company commissioning such services is what technology is most suitable.
To make this decision, it’s essential to be mindful of certain business specifics and characteristics of the technologies available in the market. After all, there are numerous options, but not all of them will cater to your company’s needs.
That’s why we’ve crafted this article, with some guidelines to steer this choice and prevent potential issues along the way during the development of your project.
Follow the content and discover some important insights, as well as a bit of Ubistart’s experience as a software consultant. Below, you’ll find what we’ll cover:
- What do you need in a technology?
- Understanding your project’s requirements
- Are the latest technologies the best?
- How to choose the best database
- Relational database
- Non-relational database
- The chosen technology may become outdated
- Stay alert to alternatives
- Points that require attention
- Consider other options
What do you need in a technology?
Taking into consideration our experience here at Ubistart, typically, the client already brings a specific technology, either in a project they’ve already initiated or through a preference demonstrated for a particular programming language.
In the case of an ongoing project, our team continues and adapts to the project, meeting the defined requirements. This way, the project proceeds and is executed successfully.
On the other hand, a project that doesn’t yet have a defined technology requires some analysis:
- What type of project does the company want to undertake?
- What problem does it intend to solve?
- What features will be included in the project?
Once these questions are answered, the directions can range from the more abstract to the more tangible. Within the more tangible aspects, some additional questions also need to be addressed, such as:
- What do you need?
- What do you believe solves the problem?
- Is it a mobile application?
- Does it need to be available in app stores?
- Who is your target audience? Is it another company or an individual?”
Understand your project’s needs
Let’s say the solution to be developed is a mobile application; it can be developed specifically using Kotlin for Android or Swift for iOS. Additionally, development can also be done using hybrid approaches, such as React Native, Flutter, or Ionic.
The first step in making this decision is to evaluate the user interface where the user will interact and whether the application will be accessed online or if it can also be used offline because there are specific technologies for each situation.
If the application is for desktop and will be installed on a computer with no external access, then a different type of technology will be needed. This is because each programming language has the ability to solve specific problems.
If we’re talking about a web application, for instance, geared towards cloud usage, we’ll use a stack, which is the predetermined set of technologies for that application.
In this case, the frontend will be developed in TypeScript or JavaScript, with the possibility to use either of these languages with React or Vue.js, which are web frameworks. The backend can be developed using JavaScript or TypeScript, with various frameworks available, including Express.js, Nest.js, Adonis.js, and others.
Are the latest technologies the best?
In the realm of software development, while many factors depend on the type of project and the solution it aims to build, there’s another aspect that needs to be taken into consideration: the availability of skilled developers in the market.
With the technology market booming, many developers are gravitating toward the latest technologies, such as Node and React, which are in high demand currently. This is because these frameworks have a wealth of resources available on the internet.
However, here at Ubistart, the ‘size of the community’ is not the primary factor for making technological decisions. We typically recommend the TypeScript, React, and Node stack because:
1. The project benefits from these technologies.
2. It’s a general-purpose language, meaning it can be used for web, desktop, mobile, and more.
3. There is a larger pool of developers in the market with knowledge of these technologies.
There are hundreds of programming languages available, many with specific purposes. However, what determines the choice of technology is more about the nature of the challenge than the availability of professionals with knowledge of that technology.
For example, in data analysis projects, ‘R’ or Python are commonly used due to their libraries. If you need to develop a game, C or C++ are typically used, as they are high-performance languages.
So, it’s crucial to make the right technology choice while considering this perspective and paying attention to the type of project that will be developed and whether it will require enhanced performance.
How to choose the best database
When it comes to the right technology, it’s crucial to emphasize the need for robustness to handle billions of data points, financial information, and various transactions that may be involved in the project.
In this regard, the choice of the most suitable database is also a critical consideration, and this decision will revolve around whether to use a relational database or a non-relational database. Let’s outline the difference between the two:
Relational Database
A relational database, also known as an SQL Database, works with tables and rows to store data. In this type of database, information in tables is connected through an identifier called a ‘key.’
This key can be linked to a record in either the primary table or another table, known as the ‘primary key’ and ‘foreign key,’ respectively. This is how relationships between information across multiple tables are established.
Non-Relational Database
In this type of database, information can be stored without strict relationships and can be related or unrelated. Therefore, it offers better performance in queries.
If the amount of data to be stored is truly significant, this option provides a more suitable structure. It’s worth noting that the chosen technology also plays a role in determining the most appropriate database.
The chosen technology can become outdated
For a client, selecting the right technology for their project is always a challenge because, most of the time, they lack a deep understanding of the field. In many cases, the company does not have a Chief Technology Officer (CTO), so decisions are made based on what’s currently trending in the market. As mentioned earlier, what’s in vogue now may not remain that way forever.
An example of the consequences of using outdated systems was experienced by Southwest, an American airline. The system used by the company had hardly been updated since the 1990s, which led to a complete breakdown during a severe snowstorm in December 2022.
The result was nearly a $1 billion loss and a 10% drop in the company’s stock value. All because of a technology that hadn’t received the necessary updates to keep up with the demand.
Over time, technologies can become outdated, but with proper maintenance, they can continue to be used for an extended period. When this maintenance is neglected, the system can become more expensive to maintain and prone to errors as more data is added to the platform.
Stay alert to alternatives
Understanding the technical aspects of each project is crucial. Developing a native iOS or Android app can be quite expensive. However, there’s an alternative in using a professional who works with Flutter technology, which allows delivering the same app with the same features but at a lower cost.
Currently, mobile frameworks like React Native and Flutter offer efficient ways for developers to access hardware functions of a device. The need for a native language (Swift and Kotlin) might be considered, for instance, when developing a game that requires lean and optimized code.
In summary, the best way to choose technologies is to first understand the context and requirements of each project. This involves analyzing architectural considerations and even the expected number of users for the system.
Points Requiring Attention
If the system is intended for use by a small number of users, the recommended architecture is called a monolith because it’s easier and quicker to set up. However, in the event the application gains a substantial user base quickly, it might be necessary to refactor the code, although this is usually in extreme cases.
In contrast, for a social network where millions of users are expected, the project will be developed in a way that allows the application to be deployed across multiple servers, typically referred to as microservices.
Consider other options
In terms of performance, utilizing low-code can be something to consider, especially if an application needs to be built from the ground up. This significantly reduces development costs, as it provides pre-built tools that don’t need to be developed specifically for that application.
To conclude, we can define five hierarchies for making a technology decision:
1. Determine the technology for the frontend.
2. Determine the technology for the backend.
3. Determine the technology for the database.
4. Decide on the cloud infrastructure to be used.
5. Lastly, if choosing the most suitable technology is a challenge to kickstart your project, Ubistart can assist. We have a highly skilled team that works in a consultative manner. Get in touch!