Описание вакансии
Применяемые в проекте инструменты и технологии: C#, ORM, ASP.NET Core/Web API; PostgreSQL, ClickHouse; Node.js,Three.js, Web GPU; Portainer, Docker; Prometheus, Grafana; gRPC, REST, SignalR.
Компания:
Акредитованная IT-компания. Специализация бизнеса – разработка программного обеспечения верхнего уровня. Разрабатываем, изготавливаем и внедряем программно-технические комплексы для ведущих горных предприятий России: системы аварийного оповещения, точного позиционирования горнорабочих и транспорта, мобильные решения, средства радиосвязи и видеонаблюдения.
Основной наш проект – современная система точного позиционирования горнорабочих и транспорта на .NET 6 (без legacy-кода), позволяющая строить сложные трёхмерные модели шахт и рудников и предоставлять конечный результат в полном 3D как на десктопе (SharpDX), так и в мобильном варианте (Three.js), с визуализацией стационарных и подвижных объектов.
Являемся частью (дочерним предприятием) производственного холдинга. Группа компаний находится более 19 лет на рынке систем автоматики и горно-подземной связи. Разрабатываемые систем применяются более чем на 80 рудниках и шахтах России, Казахстана и Белоруссии. Среди клиентов такие компании как НорНикель, Алроса, УГМК и другие.
Самое основное о проекте
Есть перечень задач и оценка трудоёмкости. Проведён технический аудит.
Основная задача – перейти на веб. Помимо этого, реорганизовать сервер, повысить производительность, убрать узкие места.
Стоит задача перевода Desktop версии приложения на Web, устраняя недочёты существующей версии, перейти на более современный стек.
Клиентская часть — это SPA (Single Page Application) browser: здесь можно посмотреть мнемосхему, можно посмотреть метки, отчёты. Отдельно разрабатывается мобильное приложение, которое повторяет функционал SPA, но в урезанном виде и для работоспособности в поле.
Вообще проект — горная диспетчеризация и позиционирование. Нужно на основании данных о радиометках рассчитывать позицию персонала в шахте, тем самым помогая горноспасателям находить людей под завалами. От позиционирования отталкивается многое, позиционируем не только людей, но и транспорт. Считаем ходки, нахождения людей в опасных зонах, зонах взрывных работ, производятся вычисления маршрутов транспорта, обработка телеметрии с устройств. Наша компания также разрабатывает и устройства для горных предприятий: каски, RFID метки, считыватели точного позиционирования, считыватели зонального позиционирования. Во многом в тандеме с оборудованием и опираясь на него строится ПО, но не только, всё же ПО горной диспетчеризации — это самостоятельный продукт.
Проект бессрочный, минимум на два года запланированы уже работы по переработке текущего функционала и новому. Принимаем в штат. Полная занятость. Большей частью это удалённая работа в Санкт-Петербурге.
Состав группы перспективной разработки: рук.группы, ведущий инженер-программист (senior), middle backend, middle frontend, junior backend, junior frontend, бизнес-аналитик.
Комментарии к вакансии. Процесс. Последовательность. Технологии.
Главная текущая задача – это переход от WPF к SPA.
Текущий сервер — это монолит, но модульный. Запланировано деление на сервисы. Всё это под Linux и в контейнерах, нет ничего необычного.
Сервер перерос начальный вариант. В связи с большим внедрением и возросшей нагрузкой производится деление.
Планируемые технологии/инструменты:
- ORM (любую), ASP.NET 7
- БД: PostgreSQL, ClickHouse;
- Фронт: Node.js, Three.js (если получится, то Web GPU);
- Portainer, Docker;
- Prometheus, Grafana;
- gRPC, REST, SignalR (+ message pack).
Первый этап: чистка от «лёгкого» технического долга, устранение препятствий запуска на Linux (их не много, текущий стек .NET 6). Но по минимуму, текущую версию предлагается только поддерживать. Запустить на Linux к концу 2025-го года.
Второй этап: деление на сервисы с переработкой функционала и поддержкой масштабирования, где это имеет место и необходимо (например, расчёт координат, как самый ресурсный процесс). Разбивать будем пока не поймём, что текущий сервер не содержит логики, которую стоило бы вынести, и только тогда будем переписывать то, что осталось, до тех пор рефактор существующего сервера сводится к минимуму за пределами необходимого в связи с выделением функционала из него в отдельные сервисы.
Условия работы:
- Удалённая работы в Санкт-Петербурге в “гибридном” формате (удалённо большую часть времени, 2-х часовые совещания два раза в неделю в офисе недалеко от “Пионерской” ст.метро);
- В штат компании со всеми обязательствами по ТК РФ;
- Полная занятость;
- Отпуск в соответствии с действующим законодательством (14+14 дней);
- 100 % компенсация больничного (без справок);
- Зарплата на банковскую карточку два раза в месяц с отчислениями в Фонд социального страхования;
- График работы пн-пт, 09:00-17:30. Также (после месяца адаптации к продукту и процессам) возможен более гибкий график начала/окончания работы;
- Офис компании в районе ст. м. “Пионерская” в Санкт-Петербурге (5-7 мин пешком);
- Передаём ноутбук и ПК (в случае необходимости) для удалённой работы, оснащаем рабочее место.
Заработная плата и бонусы:
- Заработная плата по штатному расписанию от 210 000 руб./мес. (до удержания подоходного налога), окончательное решение по итогам технического собеседования или выполнения ТЗ;
- Дополнительно: годовая премия по итогам работы всей группы;
- Индексация заработной платы;
- Оплачиваемые компанией курсы повышения квалификации.
Квалификация (необходимые профессиональные знания и навыки):
- Как минимум 3-х летний опыт в роли инженера-программиста в командной разработке;
- Глубокие знания и опыт работы с React и JavaScript (от 3 лет);
- Опыт работы с RESTful API;
- Понимание принципов разработки на основе компонентов и опыт работы с современными библиотеками управления состоянием (Redux, MobX);
Желательно:
- Знание и опыт работы с React Native;
- Понимание и опыт работы с асинхронными концепциями в JavaScript, включая обратные вызовы, промисы и async/await;
- Опыт работы с TypeScript;
- Опыт работы с gRPC;
- Опыт работы с CI/CD инструментами;
- Опыт работы с git;
- Опыт и понимание базовых механизмов работы с 3D, в частности Three.js (WebGpu\WebGl)