Мы - команда, занимающаяся разработкой с нуля системы создания документации. Она будет помогать пользователю создавать, хранить, собирать, обрабатывать документы и поддерживать в порядке крупные кластеры документации с гранулярным уровнем доступа к редактированию и сборке окончательного кодекса.
Мы уверены, что наш продукт поможет победить хаос, снизить количество рутины и человеческой ошибки среди документаторов компании клиента.
Мы ищем Frontend разработчика с опытом работы в продуктовых проектах.
Мы ожидаем, что вы готовы активно участвовать в проработке архитектуры приложения, ставить задачи, предлагать и обсуждать пути решения.
Работа в офисе
Обязанности:
- Разработка пользовательского приложения на Node.js
Требования: Обязательно
- Стаж работы 3 года и более;
- HTML, CSS, JavaScript ES6 ES7, TypeScript, Node.js (npm или yarn, npx)
- Опыт работы с React (или другим современным фреймворком) для создания сложных интерактивных интерфейсов;
- Понимание архитектуры и принципов работы современных веб-приложений (REST, REST API, API Gateway, BFF, SOP, CORS, HSTS, CSP, HTTP/HTTPS);
- Глубокое понимание работы браузерного рендеринга: Rendering Pipeline, DOM, CSSOM, разница между layout, paint и composite. Вы должны понимать, почему страница "тормозит" и как это исправить;
- Опыт работы с Canvas API: рендеринг текста, фигур, изображений, оптимизация производительности. Понимание того, когда стоит использовать Canvas, а когда — DOM;
- Понимание алгоритмов и структур данных, особенно в контексте работы с текстом и компоновкой элементов (layout algorithms). Например, как эффективно вычислить, помещается ли абзац на страницу;
- Опыт оптимизации производительности сложных клиентских приложений: virtualization (windowing), debouncing/throttling, memoization, использование requestAnimationFrame.
Будет плюсом
- Прямой опыт работы с библиотекой paged.js или аналогичными (Vivliostyle, WeasyPrint и т.д.);
- Опыт разработки текстовых редакторов (WYSIWYG), IDE или DTP-систем (Desktop Publishing);
- Понимание CSS Paged Media Module и стандартов W3C, связанных с печатью и пагинацией веб-контента;
- Знакомство с WebAssembly (Wasm) для выноса тяжелых вычислений (например, пересчета лейаута) из основного потока;
- Умение работать с Web Workers для организации параллельных вычислений;
- Опыт работы с продвинутыми менеджерами состояний (Redux, MobX, Zustand) в рамках больших приложений.
Личные качества:
- Аналитический склад ума: способность декомпозировать большую и сложную задачу на управляемые части;
-
Самостоятельность: умение находить решения для нетривиальных проблем, исследовать новые технологии и подходы;
-
Внимание к деталям: точность и аккуратность в реализации, особенно в вопросах UI/UX.
Условия: