Codementor Events

The 3 distinct categories of apps and why you should care

Published Jun 21, 2020Last updated Oct 01, 2020
The 3 distinct categories of apps and why you should care

A story

In the past 4 years, I've been dealing with various clients and have been seeing various kinds of applications being built. I've been working with clients in multiple domains from e-commerce, augmented reality, payments, and finance. I've mostly worked with financial technology so yeah, I have a bit of bias here.

In those years, I've seen many discussions over software stacks. Some of them become a win-win dialogue and some others become a heated debate. I've been in those discussions too. It's terrible, if we don't have a compass to navigate, you'll most likely choose a sub-optimal software stack for your applications.

In this article, I want to share a guiding principle that I hope I know it early in my career such that I didn't sink in sub-optimal software stacks. This is not a definitive guide so take it with a grain of salt. In this article I want to share 3 categories of software stacks here, there are tech stacks for a feature-rich app, type-safe app, and high-concurrency app.

Feature-rich App

This is the most frequently used application that most developers would write in their careers. By feature-rich here I don't mean that not many application is feature-rich. This is the category for applications built for early stage-startups, solo founders, or any developers who still early in their application development stage. At this stage usually developer wants to optimize for productivity, the speed of developing feature is critical here, companies want to reach product-market-fit and one of the critical steps is having a technology that enables them to iterate fast and add the functionality their users need blazing fast.

The characteristics of this category of the software stack are they tend to provide us with a sensible default and already provide us with a firm framework to build a lot of things that we usually do in modern web development. For example, the software stack should provide a way to create CRUD applications easily, they probably have a framework for creating a background job and some cam provide us with a framework for real-time communication.

Examples of software stacks that belong to these categories are

  • Backend / Fullstack
    • Ruby on Rails
    • Python & Django
  • Frontend
    • Gatsby.js
    • Ember

Typesafe/Enterprise App

The other category that I found useful is the typesafe/enterprise app. Depending on your domain, sometimes you need a tech stack that solid or enterprise-level, this sometimes includes the type-safeties of your program, enterprise support (e.g. Java and C#), and sometimes big talent-pool. This kind of program mostly dealing with mission-critical applications that correctness is a big concern and we want to minimize human error when developing the applications. Example apps that might be using this kind of software stacks are Financial-system applications, as numbers are very sensitive, we don't want our applications running a type-casting here and there, we want our software stack having a solid type system and thus can rid many bugs that we might have if we are going to use dynamically-typed language.

Examples of software stacks that belong to these categories are

  • Backend
    • Spring Java Framework
    • C++
    • C# .Net
    • Haskell
  • Frontend
    • Elm
    • TypeScript

High Concurrency App

Last but not least application is the high-concurrency application. The software stack that is used in this kind of application might have or might not have features that we have in the previous two tech-stacks, but the core feature we take from this software stacks is the ability to create a blazing fast application that supports many concurrent users. This kind of software stacks usually has a unique concurrency model that we should follow to take a big advantage to it.

  • Elixir
  • Go
  • Erlang

Closing notes

In my experience working in multiple domains, I understand that sometimes a single domain might employ multiple tech stacks. For example, from what I heard, Google employs Python, C++, Java, Go, and JavaScript. Each Software stacks have a different purpose, from what I understand is C++ and Go for example used in Google where performance is their application biggest concern.

Another example is for example a payment company might employ Java for most of their applications but having a bit of Elixir for their high-concurrent applications such as notifications. See this Midtrans use case where you can learn how they use Elixir for their notification system.

Because I worked mostly in a Startup-like environment, I found that you can have 1-2 software stacks that primary for your applications and then use additional software stacks if you need a very specific use case, let say in high-concurrent applications you can use Elixir. In a frontend where you need safety, you can employ Elm.

Thank you for reading my 2 cents, if you like it, don't forget to click like and share.


About Me 😄

I'm Abdurrachman and currently, I'm managing a software development agency called Kulkul.tech. We're a web and mobile software development company providing excellent software for business. We're working with companies all over the world from a single-person business to large corporates. We are a solid remote-first firm with a high emphasis on people and clear communication.

We begin each project with understanding the client's business and problem then provide a contextual solution and applicable technology. We make sure that cooperation with us develops the business of our client.

We provide excellent engineers and designers to deliver a complete product from spec gathering, product road mapping, UI/UX design, development, QA, and DevOps.
We're experts in the following technologies:

  • JavaScript and Node.js
  • Python and Django
  • Ruby on Rails,
  • Mobile (iOS and Android) especially Flutter
  • DB: MySQL, PostgreSQL, MongoDB,
  • Frontend: Elm, React, Angular

We working in Codementor too, please reach me in Codementor if you're interested.

Discover and read more posts from Abdurrachman M
get started
post comments1Reply
nijikoy695
9 months ago

Understanding the three distinct categories of apps is crucial in navigating the digital landscape efficiently. I prefer to check this https://turner-classic-movies.pissedconsumer.com/review.html and learn more new ways for movies. From productivity tools enhancing workflow to entertainment platforms like Turner Classic Movies, each category serves unique purposes. By discerning these categories, users can optimize their digital experiences, whether seeking efficiency in tasks, relaxation through entertainment, or connection via social platforms. Recognizing their significance empowers users to make informed choices in app selection.