Aleksei Ivanov

Defining the scope

As a developer, it is easy to do anything you want. Most of the questions such as “can it be done” don’t end up in the realm whether or not it’s possible, but in the realm of whether or not it is feasible.

Technically, nobody stops you from rebuilding the whole operating system or a tech stack, it is just that would take decades and will be of lower quality.

With commercial projects like Multify I also sometimes end up with similar contemplations, but for a different reason: I need to decide the scope of the project and along the way guide my clients towards a better path.

A concrete example: automatic redirection to an appropriate language version based on the user’s system language. On the first glance, the problem seems simple enough: just read the value of navigator.language, how hard is that?

Well, multiple questions arise:

  1. Why JavaScript redirect is better than HTTP one using headers?
  2. If it is an HTTP redirect, should it be code 301 or 302?
  3. Where should the state live? Per IP — then users under the same NAT would be treated as a single user. Per browser session — users would get nagged about language choice on every device. Both are unoptimal.
  4. What about users that prefer different locale from their device settings? What if they want different language but the same region?

And finally—even if everything else is taken care of—how do you treat indexing robots from Google, Yandex, Bing, OpenAI, Anthropic, xAI, etc… do you ignore this logic for them?

They most likely don’t have JavaScript enabled, so if you use that way of redirect it might not affect them. But how can you be sure? You are not in control of those bots and there is no agreed upon protocol.

There is another solution: do nothing. Sometimes overcomplicating things is just not worth, it creates confusion, false sense of safety and technical debt for years to come.

Sometimes the best service you can provide is to intentionally build barriers for the customers in order to silently guide them.

#product #technical