Мы ищем программиста в существующий проект, в котором уже есть большое количество кода различной продуктизации. Код в активной разработке, но требуются дополнительные руки.
Нам требуется высококлассный программист с опытом, чтобы расширить команду. Она небольшая, но именно сейчас она растет. Работа будет интересной и разнообразной. На данном этапе нужен «универсальный солдат», который в перспективе может стать тимлидом и подбирать команду «под себя». Мы прекрасно понимаем, что найти такого человека крайне трудно, но это возможно, т.к. один такой человек у нас есть и сможет помочь и «прикрыть». Но будучи техническим директором, он хотел бы сосредоточиться именно на этом аспекте своей деятельности.
Формального диплома программиста не требуется, вполне заменяется опытом и любовью к профессии, при условии владения технологиями ниже.
Для защиты интересов всех сторон, мы будем настаивать на подписании договора и NDA (договора о неразглашении).
Подразумевается знание следующих технологий:
На стороне клиента:
Embedded:
- Arduino toolchain
- ESP32 (текущая ревизия проекта будет работать на Olimex ESP32-EVB)
Языки программирования:
- C++ высокий уровень и минимум 5 лет опыта (это основной язык). Обязательно знание стандарта C++11, C++14/17 являются бонусом и плюсом в карму. STL обязателен, boost крайне желателен.
- Python. В управляющем коде есть машинное обучение и основные некритичные к времени реакции алгоритмы пишутся на этом языке. В зависимости от роста команды требование к знанию этого языка будет либо высоким (в случае, если это будет основной деятельностью) либо минорным (если реализацией алгоритмики будет другой человек). В первом случае подразумевается хорошее знание библиотек, идиоматики языка и умение писать и тестировать масштабируемые модули. В последнем случае нужно лишь умение читать для общего понимания происходящего.
- Perl. Приветствуется умение читать, но строго обязательным не является (еще один плюс к карме за широту кругозора). Исторически один кодогенератор был написан на этом языке, ничего нового писать не планируется.
Технологии и протоколы:
- FreeRTOS
- painlessMesh (можно выучить по ходу)
- Bluetooth (BLE), Bluetooth Mesh (при выходе рабочей версии от Espressif станет обязательным).
- MQTT
- Modbus
- M-Bus
- Конечные автоматы
- Теория графов и алгоритмы на графах.
На стороне сервера:
- TICK stack (InfluxDB, Kapacitor,…) либо (с серьезными аргументами) ELK.
- MongoDB на начальном уровне. Знание PyMongo/Motor предпочтительно.
- Flask.
- Grafana или Kibana.
- Понимание сетевой безопасности.
В общем:
- Понимание принципов разработки надежных/отказоустойчивых систем.
- Владение письменным английским.
- Знание Linux огромный плюс Debian/Raspbian, systemd.
Мобильная разработка:
- Кроссплатформенный тулкит вроде ionic. Тут пока нет legacy кода, так что обсуждаемо.
Огромным плюсом в среднесрочной и долгосрочной перспективе будет знание популярных IoT платформ от Intel, Microsoft, Samsung и Amazon.