Самый стыдный инструмент в бэкенд-разработке - Excel
Хотя в нём почему-то регулярно заканчиваются расследования по данным из Postgres: почему не сходится метрика, где появились дубли, что сломала миграция, откуда взялись «не те» цифры в отчёте. Когда-то я хотел всё бросить и уйти в ML. Тогда впервые нормально попробовал pandas и Jupyter Notebook. И зацепил меня даже не ML, а сам способ работать с данными. Написал пару строк — увидел таблицу. Поправил фильтр — сразу пересчитал агрегаты. Сохранил notebook — через неделю не надо вспоминать, что именно ты делал и почему в файле лежит final_final_v4.xlsx. Не нужно копировать CSV в Google Sheets. Не нужно держать в голове десять фильтров из SQL-консоли. Не нужно писать одноразовый скрипт, который выплёвывает 500 строк в stdout. Поэтому я обратил внимание на Kotlin DataFrame 1.0.0-rc01. У библиотеки зафиксировали API для версии 1.0. Финального релиза ещё нет, но это уже нормальный момент попробовать её на настоящих задачах, а не просто открыть документацию и закрыть через пять минут. Идея простая:
CSV / SQL → Kotlin Notebook → фильтры и агрегации кодом → таблица → результат, который можно повторить
Kotlin DataFrame можно использовать в Jupyter через Kotlin kernel или в Kotlin Notebook. Подключаешь CSV, JSON, Excel или SQL, работаешь с данными кодом и видишь таблицы прямо в notebook, а не среди логов Я бы попробовал это в таких задачах:
- проверить данные после Liquibase-миграции или массового UPDATE; - разобрать странную выгрузку из Postgres, не экспортируя её в Excel; - понять, почему агрегаты в аналитике не совпадают с ожиданиями бизнеса; - посмотреть результат ETL-джобы; - собрать внутренний отчёт, положить его в Git и потом спокойно повторить расчёт
Это не замена Python-экосистеме и не повод тащить ML в каждый Spring Boot-сервис. Но для Kotlin/JVM-разработчика сценарий «открыл notebook, написал Kotlin, подключился к Postgres, увидел нормальную таблицу» выглядит очень рабочим. Мой горячий тейк: notebook должен быть для backend-разработчика таким же обычным инструментом, как SQL-клиент. А вы чем обычно разбираете разовые выгрузки, кривые данные и расхождения в метриках?