Python-программист
Контакты
Ищу работу Python разработчиком. Full-time.
Предпочитаю работу в офисе (Санкт-Петербург), но можно и удаленно.
Общий стаж в IT более 7 лет.
Специализация - Разработчик встраиваемых систем (Embedded Developer).
Цель - поменять специализацию, т.к. хочется разрабатывать более высокоуровневые системы.
Желание поменять специализацию возникло около 4-х лет назад. Выбор пал на веб-разработку. Закончила курс Frontend-разработчик в HTML Academy https://htmlacademy.ru/. Верстка меня не сильно притягивает, однако было очень круто познакомиться с языком Javascript.
Уволилась с работы, чтобы найти работу веб-разработчиком, но практически сразу меня нашла другая компания и сделала очень крутое предложение. Так я проработала Embedded программистом еще около 3-х лет. Получила отличный опыт работы в большой международной продуктовой компании.
Идея смены специализации при этом никуда не делась. Единственное, я все-таки отказалась от идеи Frontend разработчика, т.к. разработка пользовательских интерфейсов скорее всего мне бысто наскучит. И решила попробовать зайти с другого конца - Backend, т.к. задачи решаемые этим направлением гораздо более широкие и интересные, мне нравится язык Python и я его довольно неплохо знаю.
Языки: C, Python (ранее: C++, C#)
Git, Perforce
Управление проектами
Разработка архитектуры
Структуры данных
Базы данных (MySQL, InfluxDB, MongoDB), SQL
Графические фреймворки: pyQt, WinForms, WPF
HTML/CSS
Poetry
Веб-фрейморки: Django, Flask, aiohttp (базовое представление)
Асинхронность в Python: корутины, asyncio (базовое представление)
ООП
TCP/IP
Опыт
Разработка электромобилей.
Разработка низкоуровневых программных компонентов, которые переиспользуются всеми разработчиками в компании.
Язык разработки: С
Примеры программных компонентов:
- Загрузчик и механизмы его обновления
- Механизмы бекапа текущей прошивки
- Модуль контроля здоровья платы
- Модуль периодического запуска self-тестов
- Драйвера внешних устройств (трансиверы, датчики и др)
- CAN интерфейс и протоколы поверх CAN: CCP, XCP, USD
- Модуль диагностики
- Калибрационные параметры
- Универсальные входы/выходы, их динамическая гибкая реконфигурация
Помимо программных модулей общего пользования, в команде есть 3 продукта
1. Drive Control Unit
2. Универсальная платформа для подключения самой разной периферии (стеклоподъемники, фары, подсветка и т.д.)
3. Устройство для удобства обновления, конфигурирования и отладки всех устройств в компании.
Зона ответственности:
1. Драйвер CAN
2. Модуль универсальных входов/выходов. В зависимости от того, в какой части электромобиля используется устройство, к нему нужно подключать различную периферию => должна быть возможность сконфигурировать пины на вход, PWM выход (HighSide/LowSide) или объединить пины в мост для управления, например, шаговым двигателем.
3. Перевела почти всю кодовую базу на драйвера MCAL. Это сертифицированные драйвера от производителя микроконтроллеров.
4. Огромное количество кода было приведено к стандарту MISRA. Когда я пришла в компанию, меньше 1% всей кодовой базы было написано по стандарту MISRA. Теперь более 90%.
5. Написание юнит и интеграционных тестов на код. Покрытие кода тестами должно быть не менее 95% процентов, что часто является задачей не тривиальной, т.к. код работыет с "железом" напрямую.
6. Написание документаци
7. Поддержка других команд, консультирование по использованию системного софта, помощь в диагностике и т.д.
Разработка электроники на заказ.
Полный цикл разработки: от ТЗ до сдачи проекта заказчику.
Язык разработки: С++
Для разработки отладочно-конфигурационного ПО использовался сначала C#, потом перешли на Python.
Проекты:
Система управления фазированной антенной решеткой (встраиваемое ПО и приложение для настройки и тестирования);
Метеостанция “Ласточка” (встраиваемое ПО, приложение для мониторинга показателей и простой веб-интерфейс на базе weewx). Изначально был Pet-проект, о котором можно прочитать на Хабре (https://habr.com/ru/post/387589/), потом проект прошел несколько циклов перерождений и теперь погодную станцию можно найти в Санкт-Петербурге в пространстве Севкабель, а погоду можно смотреть в телеграм-боте @swallowws_bot
Корабельные панели управления (встраиваемое ПО);
По сей день иногда беру на аутсорс проекты этого заказчика, из последнего - это Система Контроля Дееспособности Вахтенного Помощника (https://seacomm.ru/catalog/108/sistema-kontrolya-deesposobnosti-vakhtennogo-pomoshchnika/З)
Аппаратный менеджер паролей Pastilda (встраиваемое ПО). Внутренний open-source проект компании, почитать про него можно на Хабре (https://habr.com/ru/post/305594/).
Про то, как я расшифровывала базу данных KeePass можно почитать там же (https://habr.com/ru/post/346820/). Было весело, публиковались на CrowdFunding платформе (https://www.crowdsupply.com/third-pin/pastilda), разослали несколько сотен устройств, на этом проект, к сожалению, закончился. Исходный код лежит тут: https://bitbucket.org/thirdpin_team/pastilda/src/master/Модули для бурового оборудования (встраиваемое ПО и приложение для настройки);
Система телеметрии для вендинговых аппаратов (встраиваемое ПО)
Зоны ответственности:
1. Участие в составлении ТЗ
2. Планирование работ, распределение ресурсов
3. Формирование архитектуры проекта
4. Написание низкоуровневой части - драйвера для микросхем, поднятие необходимой периферии микроконтроллера, т.е. полная подготовка проекта для написания бизнес логики, которую уже, как правило, разделяла с другими разработчиками.
5. Отладка проекта, внедрение модулей написанных другими моими коллегами.
6. Сдача проекта заказчику.