Мы развиваем 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-задачу тебе приходилось самостоятельно доводить до результата и как ты сегодня используешь нейросети при разработке.