Что это простыми словами

SQLDelight — это переводчик SQL в безопасный код, который проверяет ошибки ещё до запуска приложения.

Аналогия: представьте, что вы пишете письмо на иностранном языке. Обычно вы узнаете об ошибке, только когда получатель не поймёт фразу. SQLDelight — это автопроверка грамматики прямо при написании: подчёркивает красным и говорит «эта таблица не существует» или «вы указали не тот тип данных». Ошибку видишь сразу в редакторе, а не когда пользователь уже кликнул кнопку.

SQL — это язык запросов к базе данных. SQLDelight берёт эти запросы, проверяет их правильность и генерирует готовый код на Kotlin, с которым удобно и безопасно работать.

Официальное определение

Теперь, когда суть понятна, вот как SQLDelight описывают в вакансиях и документации. Эту формулировку вы встретите у заказчика и в резюме — и теперь будете понимать, что за ней стоит.

«SQLDelight — библиотека для генерации типобезопасных Kotlin API из SQL-запросов с валидацией схемы, запросов и миграций на этапе компиляции».

Разберём по словам. «Генерация API» — библиотека автоматически создаёт код, через который удобно работать с базой данных. «Типобезопасные» значит, что если вы попытаетесь положить текст туда, где ожидается число, код просто не скомпилируется — ошибка всплывёт сразу. «На этапе компиляции» — проверка происходит при сборке проекта, а не когда приложение уже работает у пользователя. «Валидация схемы и миграций» — библиотека проверяет, что таблицы существуют, а изменения структуры базы написаны корректно.

Какую задачу решает

Когда разработчик пишет SQL-запросы вручную, ошибки обнаруживаются поздно: запустил приложение, нажал кнопку — и вот тут вылетела ошибка «таблица не найдена» или «неверный тип данных». Искать такие баги долго и неприятно, особенно если они всплывают уже у пользователей.

SQLDelight переносит проверку на этап написания кода: прямо в редакторе видно, что запрос неправильный. Плюс библиотека генерирует удобные функции для работы с данными, поэтому не нужно постоянно писать однотипный код для чтения и записи.

Ещё одна польза: SQLDelight работает с Kotlin Multiplatform, а значит один и тот же код для базы данных можно использовать и в мобильном приложении, и на сервере, и в десктопе.

К какой экосистеме относится

В стеке с SQLDelight часто встречаются kotlinx.serialization (для работы с JSON) и Compose Multiplatform (для интерфейса).

Чем заменяется

SQLDelight — не единственный способ работать с базами данных в Kotlin. Ту же задачу решают Room (популярна в Android), Exposed (для backend на Kotlin) и другие ORM-библиотеки.

Главное: переход между ними дешёвый. Разработчик, который работал с Room, разберётся в SQLDelight за считаные дни — идея похожая, отличается способ написания запросов. Это не разные специальности, а разные инструменты для одной задачи.

Особенность SQLDelight: она заточена под Kotlin Multiplatform, поэтому если проект кроссплатформенный, SQLDelight часто оказывается естественным выбором.

Что не путать

Насколько это важно при отборе

Короткий ответ: обычно это НЕ повод отбраковывать кандидата.

Самая частая ошибка новичка-рекрутера — отсеивать сильного разработчика, у которого в резюме указаны Room или Exposed вместо SQLDelight. Он освоит SQLDelight за несколько дней, потому что задача та же. Отсеивая по конкретной библиотеке, вы теряете хороших людей и затягиваете поиск.

Правильный подход: смотрите, есть ли у кандидата опыт работы с любой библиотекой для работы с базами данных в Kotlin. Если есть — этого достаточно. Если в вакансии жёстко написано «только SQLDelight», уточните у нанимающего менеджера, действительно ли это принципиально: часто оказывается, что нет.

Когда всё же стоит обратить внимание: если проект на Kotlin Multiplatform и активно использует кроссплатформенный код для работы с базой, опыт именно с SQLDelight будет плюсом. Но даже в этом случае кандидат с Room освоится быстро.

Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.