You’ve got the idea of application which is brand-new and will definitely shake the market. Next step is a multi-staged plan of realizing it. And one of the core questions is the choice of tech stack. Take it seriously as it will penetrate all aspects of your app’s development.
Be a bore: make a check-list. It’s yawning, but time and cost-effective. Don’t worry; we’ve done it for you:
Type & size of web application:
You must clearly realize what kind of application you’re developing and choose the tools accordingly:
Simple & small:
As plain as a pyramid. Its structure is predetermined and leaves small space for maneuver. If your project is small and its working prototype must be presented to potential customers soon your options are scarce.
In such case your perfect choice is plain solutions like CMS or Wordpress. Sometimes PHP and Ruby are also applied; the latter is popular for start-ups.
Examples: landing pages and small online stores, business cards, simple applications.
They offer more combinations. You can build various constructions within definite framework. Usually it’s a mix of programming languages which can empower your app with multi-functionality and perfect integration across various platforms.
Languages used are mainly PHP, Python, Ruby, JS.
Examples: e-commercial websites, government and financial projects, complex online shopping and marketplaces, national-scale portals, various services, advanced applications.
Lego type: your imagination is the limit. It’s multi-functional project which can require new integrations any time. Such projects usually comprise several technologies and programming languages, but the core of such projects is usually a pure (native) programming language.
Examples: huge portals, marketplaces, social networks, innovative and atypical solutions.
Languages used: Python, Java, C# (Java’s equivalent, part of FinTech), JS.
Speed & performance:
Define the timeline for your app’s development. If you need your app to be released fast you may start from very simple tech just to deliver it to your final customers the soonest.
You can start with a landing page at Wordpress or even some static page as your main goal now is igniting interest in your product.
If your project depends on load processing then your frameworks and programming languages must ensure this.
Examples: file sharing services and video & audio streamlining apps
Low latency projects:
You must carefully choose the technology which will reduce the latency and increase your app’s responsiveness.
Example: social networks.
Detailed documents & ecosystem:
Make sure your tech possesses comprehensive documentation including tutorials, articles and important packages. Active community or blog behind this technology will be a great plus.
Before choosing the tech find out if you have any specialists to deal with. It is better to find out what technologies your team specializes in. And maybe it will be wiser to choose the tech in which they’re the experts than start educating them with the tech they know very little about. Besides, always keep in mind that besides developing, your team must be able to maintain it afterwards, so choose properly.
The more advanced, complex and rare technologies are used the higher the salaries of web developers. Keep that in mind when choosing the tech for your app.
App maintenance cost:
Plan some costs in advance for maintaining your app further. In case your budget is limited think of open-source technologies. For example, the Ruby on Rails is available with a license that is it can be modified, upgraded and used without any restrictions.
Flexibility of the project:
It’s the case when your app needs some unique solution for adding functionality to it.
Example: Ruby on Rails stack with open source libraries called gems.
When your app requires some additional features from third parties you choose a stack that would provide it.
Think in advance whether you need it to be compatible with several platforms.
Migration of databases:
Sometimes you need to transfer your databases and/or data to some other systems and you must take it into account when choosing the technology.
- Horizontal: your app must be able to cope with growing number of users.
- Vertical: your app must survive as many additional components as needed without being crushed to pieces.
Too long codes and too short codes are both bad. The first ones require too much time for processing; the second ones are too complicated for debugging. So it is important to choose a language which uses short, but easily maintainable and reusable codes.
Basic software architecture:
It is responsible for making the app portable, scalable and reusable. It has an impact on static and dynamic components of configuration.
Think of your app as a constructor comprising small packages. If possible, separate services, back-ends and front-ends into smaller applications and micro-services. And when your techs will become out-of-date you will easily change them for the new ones. There are concepts which may help you, like service-oriented architecture (SOA) and domain-driven design(DDD).
Easy to test:
However good your app is, there will be bugs anyway. So, prefer those which are easier to test. You can also choose test-driven approach when testing precedes coding. It will improve your coding and product quality and contribute to speeding up development process in the long term.
Long-term tech’s perspectives:
Be a predictor. Try to imagine what technologies will still be used in 5-10 years’ time. At the moment it looks like that
- Airbnb — Ruby
- Instagram — Python
- Pinterest — Python
- Foursquare — Python
- Groupon — Ruby → JS
- Twitter — Ruby → Scala
- Uber — JS
But you never know what it will be like in 5 years’ time. You can use such services as the latest Technology Radar to get an idea of how future-proof technologies are. Another options is to check technology stacks with stackshare.io or techstacks.io. If you’re unsure about a technology, you can search for alternatives on www.alternativeto.net .
Long-term vendor support:
The bigger the company supporting the tech, the more chances it will survive longer. Google for Angular and Facebook for React hint they will stick around for some time.
Pay attention at updates at the tech’s webpage, if it has any incompatible versions like Angular 1 & Angular 2. The best option is if it’s a specified version which is provided with bug-fixes for a given period of time.
There is no 100% secure app development technology of course. Still try to make sure that your app is created according to security guidelines to minimize vulnerability to hacker attacks.
There are some kinds of business like financial sector where security tops the list of priorities. To organize everything great you need the developers, work environment and policies that will be all aimed at covering security issues.
So if you were thinking of choosing the technology for your application basing on someone else’s experience, drop this idea as irrelevant. Your unique product deserves a unique approach.