IDKFA

IDKFA

A couple of times in a year, I got asked something like: "what language/technology I should learn" or "I have this idea, with what I should build it".

Here is what and why:

#Language:

If you are asking, the chances are high that you are don't know what you are doing. So go with JS. JS (TS is slightly better, but the learning curve is steeper) will allow you to do quick and dirty prototypes for everything. And I mean, it. You can do frontend, backend, mobile, desktop, ML all in one language (I even saw microcontrollers with JS support. How crazy is that?). This means you don't need to switch context too often, which means you are more productive. Big community is a bonus.

Sure, JavaScript is not perfect, and there are better alternatives for:

  • Sciency or ML - Python.
  • Blazing fast or/and close to the hardware - Rust
  • iOS - Swift
  • Android - Kotlin
  • Microcontrollers - C
  • Scalable AF - Erlang

And still, you will need JS to do the frontend. So learn one language. Do everything, and when you know which part of your product should be rewritten with more suited language - you will do it.

#Database:

My go-to choice is MongoDB. It is pretty simple, and you can do whatever you want with the schema while you are prototyping. Also, you will scale It effortlessly when your prototype became a production.

I also often use Redis when performance is the primary concern. And nowadays it has all bells and whistles you can think of, including queues and time series.

And sometimes, when persistence is not required, no DB is also an option.

#REST vs. GraphQL:

I will choose GraphQL over REST because I never saw REST API, which was working as intended. And because of that, documentation is often missing or outdated. Swagger kind of slowed this issue, but for me, it is a half-assed solution. Because your OpenAPI specification does not depend on actual code, you need to describe APIs twice. While using libraries like type-graphql - documentation and playground reflect your current code. So you write your code and get documentation and playground for your API for free.

If you came here with questions like questions in the first paragraph, I hope this post will somehow help you.

IDKFA

ID, Keys, Firearms, Armor (cheat in the Doom game)

Rust for Rustaceans by Jon Gjengset

Rust for Rustaceans by Jon Gjengset

Idiomatic programming for experienced developers.

A Philosophy of Software Design by John Ousterhout

A Philosophy of Software Design by John Ousterhout

The must-read for software engineers.

Clink

Clink

Rust and memory leaks