Choosing Technologies

Choosing the right technology is like choosing the right car. Before you buy, you need to consider speed, capacity, performance, design—and, of course, the size of your budget.

Read on

Choosing the infrastructure

You have two options: a dedicated or cloud server.

Dedicated server

A dedicated server is a physical server that you can buy or rent. Large companies with specific data security and geolocation requirements tend to prefer this solution. Dedicated servers typically run in server houses or similar environments.

Cloud server

As its ethereal name suggests, a cloud server allows you to avoid managing hardware altogether. With this option, you can limit costs to whatever server usage you need to run your virtual environment.

Which one should you choose?

Assuming you are not a large corporation, we suggest using cloud servers for these reasons:

  • Quick access to additional resources if needed

  • Easily upgradable memory and computing power

  • Auto-scaling functionality

  • High-security standards provided by the cloud providers

  • Fewer maintenance costs and requirements

  • No implementation costs

  • A more extensive set of managed services, such as databases, messaging, auth, queues, etc.

Before purchasing a cloud server, you should always check your provider’s service-level agreement (SLA), especially in relation to the following :

  • Availability, or uptime, should be 99.99% per month, which means the server can be down a maximum of ~4mins a month

  • Pricing

  • CPU usage

  • Data transfer capabilities

  • Geographical location of the data

Recommended provider: Amazon AWS

Choosing the programming language

In a sense, you can work with any language you want. At a high enough level, they all do the same things. However, your real focus should be on the community surrounding each language and the kinds of support each community can provide. Building an MVP usually requires rapid development, which your chosen language can support in the following ways:

Available resources

  • Some languages are more popular than others, and the cost of developers can differ

  • Different countries require different resources

Available open-source libraries and frameworks

Active community

  • Support

Active development of the language itself

  • Performance and security updates

Based on these points, the most common backend languages are:

  • PHP

  • Python

  • Java

  • Node.js

  • .net

  • Ruby

The size of your project or startup should determine the backend technologies you choose. Avoid obscure technologies or frameworks that will make it hard to find people. For mid-sized projects, Django and Ruby on Rails are popular, established frameworks that have been vetted by many large companies.

If a project has narrower, more specific needs – real-time response functions, for example – consider using lighter, event-driven frameworks that can communicate through websockets, like aiohttp.

Ultimately, the resources you have should determine the language you use. All major languages have active communities with large, open-source frameworks that can save resources across all stages of development. Remember to use the latest stable version your chosen technology, and make sure any open-source code you use is protected by a license. Learn more at choosealicense.com.

Frontend development for web

Most web technologies run on HTML/CSS and Javascript, so choosing the right language is less important for your project’s needs than finding the right framework.

Here are some popular frameworks to consider:

  • HTML/CSS

  • Bootstrap

Recommended for responsive web pages

  • Javascript

  • ReactJS

  • recommended for pages with dynamic content

Of course, technologies evolve quickly. Bear in mind these frameworks may be outdated by the time you read this.

Mobile development

Most applications are developed for one or both of the two leading mobile platforms: Android and iOS. Since these platforms use incompatible technologies, a mobile app project typically requires a different developer for each, effectively doubling resource requirements. However, using a Hybrid framework will allow you to neatly sidestep this issue. Hybrid frameworks use a single code base for both Android and iOS, reducing the resource burden considerably. We recommend going with the React Native hybrid framework.

Tools to support development

Here's a list of recommended tools and processes that can save you time and improve the overall performance of your development team:

  • Jira

  • An issue-tracking and project-management tool

  • The most significant advantage here is the integration with source code versioning services like bitbucket to track the workflow automatically

  • Continuous integration and automated testing

  • Choosing the right tools is just a matter of supported features and pricing

Open-source libraries

Open-source libraries can be life-savers, but they can just as easily be nightmares. Thankfully, there are plenty of high-quality libraries that can save you time – and sleep. Keep these rules in mind when choosing one for your project:

  • Always check how active the development community is.

  • Always check for recent changes to the code.

  • Always check the number of downloads and stars on Github.

  • Always check if the license is compliant with your requirements.

  • If possible, select a stable version of the library.