When it comes to app development, there are several important decisions that we at Making Sense make as part of the process. These help frame the work done by our developers as well as the QA team, and can help bring new and different functionalities to the app, depending on how it will be used.
One of the first and most important choices we make is the technology stack that will be utilized. This decision requires careful consideration, as the tech stack will form the base, or foundation of the app and will impact the complete development process as well as the final result.
First, what do we mean by tech stack?
In general, a stack includes the technologies necessary to enable the functionality and accessibility of an application.
“In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications.” Wikipedia states.
While this can refer to different technologies, for our purposes here, a technology stack extends not only to the application framework, but the language being utilized as well.
Overall, there are numerous tech stacks that development teams can choose from. Today, we’ll examine the top items teams and managers should look for when selecting a technology stack.
1) Type of application
One of the first deciding factors to consider here is the type of app being created. Will it be a web app accessed through a browser? Will the team create a mobile app for smartphone and tablet users? Or will they be developing an app specifically for desktop?
Once we have identified the type of app, we can select a framework and language best suited for that particular platform. However, it’s important to keep in mind that this does not mean one language or one framework is inherently better than another.
“Each programming language has its own particularities that make it suitable for a certain class of problems,” Thin Slices explained. “Depending on the language you will use, the final structure of your product will have its different, unique way that will guarantee a certain modus operandi.”
For instance, when we create a Web app or REST APIs, we utilize Node.js, an asynchronous, event-driven framework that enables us to build scalable applications. Node.js allows for several connections to be handled at the same time, making it ideal for use in Web development. In addition, its design appeal is similar to Ruby or Python, utilizing an event loop for the language construct as opposed to a library.
Another option here is .NET, Microsoft’s framework that allows for the building and running of Advanced Web applications. They also provide great integration with desktop applications and a plethora of other platforms, all using the same technology stack. Microsoft technologies usually play very well with enterprise environments, which is a plus for considering it as a stack, knowing that such a reliable company as Microsoft has your back with products, support and integration options. More on this later.
Other types of apps will require different considerations. For mobile apps, developers must decide if they’ll be creating a native or hybrid app, and if it will be available to iOS users, Android users, or both. You need to analyze the user experience, the code reusability, the development time and expertise needed as our Mobile Lead Developer Marcelo Vazquez explained in his blog post about Mobile App development.
2) Application goals
In addition to the type of application, it’s important to consider the particular goals of the app. For instance, app goals can include:
- Heavy load processing: Apps that heavily rely on load processing require more robust languages and frameworks like Java or .NET.
- Low latency, quick response: Apps that require quick, streamlined interactions – including Facebook and other real-time platforms – are best when developed using Node.js.
3) Your development team
It’s also essential to take into consideration the preferences, skills and expertise. This extends not only to the developers themselves, but the knowledge level of the project director as well.
For instance, as .NET and Node.js are suitable for a number of different initiatives, it can be helpful to get a sense of which framework the team is more comfortable with and knowledgeable about. Using a language or framework that the team has little expertise with can considerably hamper the project’s success. Leveraging a framework that both developers and managers are skilled at using, on the other hand, can streamline the process, speed time to market and reduce the chances of error.
In addition, it’s important to weigh the team’s skill level when it comes to the industry or vertical in which the application will be used. The team’s industry expertise and knowledge of business rules are crucial to ensure that the technology selected will best fit the project at hand.
4) The technology sponsor
Finally, it’s critical to include the needs and preferences of the company sponsoring the framework or coding language, Examples of that are how Microsoft is sponsoring .Net Framework or Joyent sponsoring Node.js. Their community may have certain requirements that can help inform this decision, and can also help better position the project for success.
Here, it’s important to discuss any opinions regarding the technology as well as any commitments to long-term maintenance with the sponsor and see his direction and the most important as we said, how open is to the community and how the communication works.
Selecting a technology stack is an important decision to make. It’s essential to factor in key elements like the type of application and its goals, the skills of the development team as well as the preferences of the project’s sponsor. With this in mind, team leaders will be able to select a tech stack that benefits the client. Havings into consideration the context previously described, we set the final product up for success.