- June 4, 2019
- Posted by: Vincent Nwaikwu
- Category: Blog, Development, Mobile Application Development Service and Training, Softwares, Technologies
The combination of choice technology chosen for an application is responsible for the app’s core elements and dependencies. These elements include how robust the app will be and if it will be possible to scale the app. The decision of choosing a technology stack is not to be made hastily and uncalculated, as this will affect the functionality, performance and scalability of the app.
- Keep it simple.
Some developers start with a scaling technology, spending time and energy trying to build something robust, only to find out in the later that there’s no market for their application.
Whenever you want to build an application from scratch, the best option is to go with the easiest solution. A framework that could generate an interface would be a good starting point. enough. A static template faking what you’re trying to solve or build would do better. It’s important to measure the interest in your application before putting your energy in building it. It doesn’t matter if the platform used for building the final project happens to be different from the one used for prototyping the concept.
Once you are certain that your concept will work, you can move forward with writing/coding the application. Stay agile during this phase.
Think Clearly: first things first. Get a basic component/page running, implement your first feature, then your second. By doing things this way, you can evaluate progress in real-time and change direction as when necessary. This will keep your system running even without all the features you had imagined in place.
Keep your goal mind. The technology you choose should depend on the problem you want to solve. Some things are better done in one framework than another.
Applications should be built for their users. What application do you want to build? How can you create the best user experience? Think about who will be using the application. Will there be a need for a desktop version?
Do not forget to think agile when possible. Are you in the quest to deal with performance right now? Starting with Platform-as-a-Service such as Heroku is a good idea if you intend to build something big, you can always improve performance later when you have crossed the appropriate size threshold. You do not need to spend time and money when you’re still very small.
Migrations & legacy systems
Do you have databases and/or data which need to be migrated or consumed via an API? Do you have legacy systems which need to be transferred to the new system? These are things to put into considerations.
Security could be the most important factor, depending on the type of data you want to work with. Figure out why you need to secure something before deciding on how to secure it. Security depends primarily on the skill set of developers, the work environment and the policies implemented.
- Choose Open-Source
When building a new application, you should go for open-source solutions. They help you so that you do not build everything from scratch; it will save you a lot of time and is probably more secure (built and maintained by many seasoned developers). Don’t forget to give back to the open-source community!
Once you figure out a prospective technology, you should run through a checklist. What kind of license does the technology/platform have? Does the language or framework have the features you need for your application? How many core developers are maintaining the technology/platform and what is their start rating in other community platforms or repos? How do they handle security, is there a system for reporting security issues? Is the source code easy to understand with comprehensive documentation, is the tech thoroughly tested, and are there starter boilerplates to get you going quickly?
- Check the ecosystem
An ecosystem is composed of people and tools, every technology has one.
Find out how big is the ecosystem behind the language or framework and how many Stackoverflow questions, conferences, and online tutorials are out there for it. What does Google Trends say about the technology? Is interest in the software still growing? How many apps have been built with the framework/platform? You can check tutorials, articles, and important apps relating to a given technology, in order to know more about the technology. Do not forget to join the community and see how they welcome new members, so you can get some insight into how active the community is. also find out how is the support for users and developers in general and if people blogging about the technology and how often.
- Long-term trends & support
Technologies have lifecycles. It is important to choose a matured technology because they are reliable. You should check the latest Technology Radar to know how future-proof technologies are; this can help you decide whether to adopt them or put them on hold. The Technology Radar separates technologies into the categories of Techniques, Platforms, Tools and Languages & Frameworks. But I advised you to use it with caution.
Long-term vendor support
Are the technology vendors going to be round for some time? Look out for a technologies with big companies sponsoring the development. For example, Google is behind Angular, while Facebook is behind React, so there should be some good progress, except the companies eventually decides to drop their support. A big community means a better chance that things will stick around for quite some time.
- Human resources & recruiting
What kind of developer are and what language do you understand, how many developers are working in the project aside you? If you and your team are strong in Angular, you should probably work Angular or choose Ionic4. Moving fast is very important, and it’s quite achievable with people who are in their comfort zone instead of learning new technology and trying to implement it at the same time.
If you are recruiting, be sure to find enough quality developers for the desired technology and how much you need to pay them. Best place to find these developers are in the community. If the technology is easy to learn, you find and train junior developers, and the whole ecosystem could attract more people.
- Will you be flexible enough?
You already know that people worked primarily on desktop computers and with Windows for a long time. Things have changed now and no one will want to work with an obsolete technology that long which is why you should choose a technology will probably stay with you for 5 to 10 years without becoming shabby, you can’t guarantee how things will evolve.
If you separate services, back-ends and front-ends into smaller applications and micro-services, then you should be able to easily swap technologies when the existing ones don’t serve anymore.
Can you bail? Will it scale?
Consider a technology that gives you access to the data and the possibility to export your data if you need to change technologies. Technologies with API would allow flexibility on the other application’s end, you should consider that. Also, a technology that consumes API can be easily swapped to another with your data sitting safely in another technology.
- How does it feel?
Have your team try out the technology or look into it yourself. You can try out existing boilerplates or a little test project to see how it feels like.
- Get started
Don’t wait for your application to be perfect, as getting to market is more important than having the perfect tech. You may not have all the required knowledge at an early stage, but you can fine-tune and optimize your application and the stack as you grow or base on user experience feedback. Focus more marketing rather than having all the pre-optimized features, there are some that you wouldn’t need in the future.
If you run an enterprise, things can be a little different. People in your company (The management, the in-house / prospective developers and the important stakeholders) need to be okay with your decision.
Quality is a matter of doing things properly. Aside from choosing a technology stack, you will need the right design, requirements and testing procedures. It is very important that you don’t limit yourself in terms of scaling or migrating to different technologies in the future.
Have a look at our Mobile App Training Course Module here.