Асинхронность: что она ускоряет, а что нет
Асинхронность не ускоряет вычисления — она позволяет не простаивать в ожидании. Как понять, поможет ли она, до того как переписывать код.
Память течёт: как найти и чем мерить
Порядок действий, который доводит до причины, и порядок, который нет
Инструменты переписывают на Rust: считаем, стоит ли переезжать
Считаем переезд в часах: окупается то, чего ждёт человек, а не фоновый прогон
Время в приложении: где оно ломается
Под одним словом прячутся момент, местное время и намерение на будущее. Путаница между ними двигает встречи и ломает суточные отчёты.
Java никуда не делась: где она осталась и почему
Решение о языке принимает не мода, а тот, кто платит за содержание системы десять лет. Что стоит считать, прежде чем спорить о синтаксисе.
Python тормозит: что действительно ускоряет
Под «медленно» прячутся три разные ситуации, и лечатся они по-разному. Как понять, в какой вы, прежде чем переписывать код на другом языке.
Как мерить производительность, чтобы себе не соврать
Почему типовой прогон на стенде расходится с продакшеном и как собрать протокол замера: от решения через модель нагрузки до кривой вместо точки
Скучные решения: монолит, который не стыдно
Что микросервисы покупают на самом деле, какой налог берёт граница по сети и почему структуру кода в итоге определяет структура команд
Почему Go стал платформенным дефолтом
Почему горутины, планировщик и статическая линковка делают Go дефолтом для микросервисных платформ — и где те же свойства начинают вредить
Найм под редкий язык: сколько это стоит на самом деле
Почему найм на редкий язык дорожает временем, часами интервьюеров и простоем, и как посчитать это по своей воронке
Куда сместился Python за два года
Как за два года изменилась роль Python в архитектуре бэкенда и как измерить, какая доля времени вашего запроса уходит на сам язык
Rust в сервисах: где окупается, а где нет
Спор давно идёт не о скорости. Решающими оказываются два фактора, и ни один из них не технический.
TypeScript в рантайме: что типы не проверяют
Разбираемся, почему типы не защищают внешние данные, где проходит граница процесса и как проверять всё, что её пересекает