О продукте
Мы развиваем DotSpace — платформу для совместной работы на интерактивных онлайн-досках. Это большой живой продукт: realtime-коллаборация, работа с файлами, разноуровневые права доступа, история изменений, интеграции с корпоративной инфраструктурой, безопасность и высокая нагрузка.
Ищем backend-разработчика уровня Middle, способного выбирать решения для продуктовых задач и реализовывать их. Мы не ожидаем знания всего нашего стека, но ожидаем достаточную инженерную базу, чтобы незнакомая технология не становилась блокером.
Нам нужен разработчик, который умеет разбираться, думать, пользоваться современными инструментами и доводить задачу до результата.
Что предстоит делать
•Разрабатывать новые возможности backend на Node.js / TypeScript.
•Добавлять и изменять REST API, бизнес-логику и работу с PostgreSQL.
•Работать с моделями данных, миграциями, транзакциями и индексами.
•Разбираться в существующем коде и аккуратно его развивать.
•Исправлять ошибки и разбираться в причинах их возникновения.
•Покрывать важную логику тестами.
•Работать с realtime-функциональностью, Redis, очередями и фоновыми задачами по мере погружения в проект.
•Участвовать в code review и обсуждении технических решений.
•Самостоятельно вести понятные задачи от постановки до готового результата, синхронизируясь по спорным или архитектурно значимым решениям.
Что для нас важно технически
Ожидаем, что ты:
•уверенно работаешь с JavaScript и TypeScript;
•уверенно работаешь с Node.js и умеешь писать и отлаживать серверный код: понимаешь асинхронность, Promise, обработку ошибок, HTTP, middleware и работу event loop на практическом уровне;
•умеешь проектировать и реализовывать REST API, понимаешь ответственность контроллеров, сервисов и других слоёв приложения;
•работал с PostgreSQL в реальных задачах: использовал связи между таблицами, CTE, JOIN, индексы и транзакции, понимаешь, когда и зачем они нужны;
•умеешь работать с базой данных из приложения и разбираться в проблемах на стыке кода и БД;
•умеешь читать чужой код, находить нужный участок системы и разбираться в незнакомой кодовой базе;
•умеешь самостоятельно разобраться, как реализовать поставленную задачу в рамках существующей системы: мы описываем ожидаемый результат и ограничения, но не разбиваем каждую задачу на пошаговую инструкцию с указанием конкретных файлов, методов и вызовов;
•пользуешься Git в повседневной работе;
•умеешь самостоятельно проверять и отлаживать свою работу до передачи задачи на review.
Опыт с Express и Sequelize будет особенно полезен. Не требуется знать наизусть фазы event loop, определения паттернов или формулировки из книг. Для нас важнее практический опыт: способность самостоятельно написать, проверить и отладить обычный серверный функционал, а также оставить после себя код, который следующий разработчик сможет понять и изменить.
Отдельно про нейросети
Мы работаем с нейросетями и считаем их обычным инструментом современного разработчика. Хороший результат для нас — когда разработчик может с помощью документации, существующего кода и ИИ:
•разобраться в поставленной задаче;
•найти нужную часть проекта;
•предложить способ реализации;
•написать код;
•проверить граничные случаи;
•написать или дополнить тесты;
•разобраться с возникшей ошибкой;
•объяснить, почему решение сделано именно так.
Но «нейросеть написала — я вставил» не считается решением задачи. Важно понимать получившийся код, уметь его проверить, заметить ошибку или неподходящее решение и в итоге отвечать за результат.
Будет плюсом
Хорошо, если ты уже сталкивался с чем-то из этого:
•принципами SOLID, DDD или слоистой архитектурой;
•Redis;
•Socket.IO / WebSocket;
•S3-совместимыми хранилищами;
•очередями и фоновыми задачами;
•Kafka или другими брокерами сообщений;
•JWT, аутентификацией и разграничением прав доступа;
•unit- и integration-тестами;
•Docker;
•CI/CD.
Не требуется знать всё, но ожидаем практический опыт хотя бы с несколькими технологиями из списка и способность самостоятельно разобраться с остальными.
Как мы работаем
Нам важна самостоятельность, но не работа в вакууме. Если задача понятна — ожидаем, что ты сможешь взять её и двигать дальше без постоянного контроля каждого шага. В общении ценим спокойный рабочий подход. Можно спорить с решением, задавать вопросы, предлагать альтернативы и аргументированно отстаивать свою позицию без спора ради спора.
О проекте и задачах
Backend DotSpace — это не набор однотипных CRUD-методов. В продукте есть:
•совместное редактирование досок в реальном времени;
•история и версии изменений;
•конкурентное редактирование данных;
•комментарии, чат и реакции;
•работа с изображениями и документами;
•приватное S3-хранилище;
•роли и права доступа;
•корпоративная аутентификация и MFA;
•Redis и Socket.IO;
•фоновые задачи;
•PostgreSQL;
•Kafka и межсервисные события;
•аудит и мониторинг;
•интеграции с корпоративными системами безопасности.
Поэтому здесь достаточно пространства, чтобы довольно быстро вырасти из Junior+ в уверенного Middle.
Что предлагаем
•Работа напрямую с техническим руководителем проекта.
•Задачи на реальном сложном продукте, а не типовой CRUD.
•Code review с объяснением решений, а не просто «переделай».
•Возможность постепенно брать более сложные участки системы.
•Возможность влиять на технические решения по мере роста.
•Нормальное использование нейросетей в разработке вместо запретов на них.
Как проходит отбор
Хотим сделать процесс без лишних кругов:
•Небольшое тестовое на подход к решению задач.
•Короткое знакомство и разговор о предыдущем опыте.
•Техническая беседа по реальным задачам backend-разработки.
•Обсуждение условий и финальное решение.
В сопроводительном письме можешь коротко написать: какую backend-задачу тебе приходилось самостоятельно доводить до результата и как ты сегодня используешь нейросети при разработке.