Backend-разработчик (Node.js/TypeScript) в офис
Описание
Мы развиваем DotSpace — платформу для совместной работы на интерактивных онлайн-досках. Это большой живой продукт: realtime-коллаборация, работа с файлами, разноуровневые права доступа, история изменений, интеграции с корпоративной инфраструктурой, безопасность и высокая нагрузка.Ищем backend-разработчика уровня Junior+ / начинающего 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, определения паттернов или формулировки из книг. Для нас важнее практический опыт: способность самостоятельно написать, проверить и отладить обычный серверный функционал, а также оставить после себя код, который следующий разработчик сможет понять и изменить. Отдельно про нейросети: Мы работаем с нейросетями и считаем их обычным инструментом современного разработчика. Поэтому под Junior+ мы понимаем уже не тот же уровень, что несколько лет назад. Для нас важен не объём знаний, которые человек держит в голове, а сложность задач, которые он способен самостоятельно решить с помощью доступных сегодня инструментов. Хороший результат для нас — когда разработчик может с помощью документации, существующего кода и ИИ: разобраться в поставленной задаче; найти нужную часть проекта; предложить способ реализации; написать код; проверить граничные случаи; написать или дополнить тесты; разобраться с возникшей ошибкой; объяснить, почему решение сделано именно так. Можно и нужно использовать ChatGPT, Claude, Codex и другие инструменты. Но «нейросеть написала — я вставил» не считается решением задачи. Важно понимать получившийся код, уметь его проверить, заметить ошибку или неподходящее решение и в итоге отвечать за результат. Будет плюсом: Хорошо, если ты уже сталкивался с чем-то из этого: принципами SOLID, DDD или слоистой архитектурой. Redis; Socket.IO / WebSocket; S3-совместимыми хранилищами; очередями и фоновыми задачами; Kafka или другими брокерами сообщений; JWT, аутентификацией и разграничением прав доступа; unit- и integration-тестами; Docker; CI/CD; Не требуется знать всё, но ожидаем практический опыт хотя бы с несколькими технологиями из списка и способность самостоятельно разобраться с остальными. Как мы работаем: Нам важна самостоятельность, но не работа в вакууме. Если задача понятна — ожидаем, что ты сможешь взять её и двигать дальше без постоянного контроля каждого шага. Если появилась развилка, непонятное требование или решение начинает заметно влиять на архитектуру — лучше прийти и обсудить, чем несколько дней молча двигаться не туда. Не ожидаем, что ты будешь знать ответы на всё. Ожидаем, что сначала попробуешь разобраться самостоятельно, а если упёрся — сформулируешь проблему, покажешь, что уже проверил, и попросишь помощи. В общении ценим спокойный рабочий подход. Можно спорить с решением, задавать вопросы, предлагать альтернативы и аргументированно отстаивать свою позицию без спора ради спора. При этом нам не близки токсичность, поиск виноватого, самоутверждение за счёт чужих ошибок, борьба за статус и отношение «я самый умный, поэтому все должны делать по-моему». Важнее хороший результат команды, но авторство идеи мы уважаем и учитываем. И да — хочется работать с человеком, с которым можно не только обсуждать PostgreSQL и архитектуру, но и просто нормально пообщаться. О проекте и задачах: Backend DotSpace — это не набор однотипных CRUD-методов. В продукте есть: совместное редактирование досок в реальном времени; история и версии изменений; конкурентное редактирование данных; комментарии, чат и реакции; работа с изображениями и документами; приватное S3-хранилище; роли и права доступа; корпоративная аутентификация и MFA; Redis и Socket.IO; фоновые задачи; PostgreSQL; Kafka и межсервисные события; аудит и мониторинг; интеграции с корпоративными системами безопасности. Поэтому здесь достаточно пространства, чтобы довольно быстро вырасти из Junior+ в уверенного Middle. Что предлагаем: Работа напрямую с техническим руководителем проекта. Задачи на реальном сложном продукте, а не типовой CRUD. Code review с объяснением решений, а не просто «переделай». Возможность постепенно брать более сложные участки системы. Возможность влиять на технические решения по мере роста. Нормальное использование нейросетей в разработке вместо запретов на них. Как проходит отбор: Хотим сделать процесс без лишних кругов: Небольшое тестовое на подход к решению задач. Короткое знакомство и разговор о предыдущем опыте. Техническая беседа по реальным задачам backend-разработки. Обсуждение условий и финальное решение. Нас интересует не способность воспроизвести определение паттерна по памяти, а то, как ты думаешь, разбираешься в задаче и принимаешь инженерные решения. В сопроводительном письме можешь коротко написать: какую backend-задачу тебе приходилось самостоятельно доводить до результата и как ты сегодня используешь нейросети при разработке.