Привет, Хабр! Меня зовут Дмитрий Дзюба, я руководитель центра практик «Архитектура» в МТС Digital. Эта статья – о Pet project, собственных проектах, которыми многие из нас занимаются в свободное время. Поговорим о том, нужны ли такие увлечения архитектору и как Pet project может помочь в работе. Также я расскажу о своих проектах и опыте, который я с их помощью получил. Добро пожаловать под кат!

Как-то раз я наткнулся на пост Oren Eini, CEO компании Hibernating Rhinos LTD - разработчика RavenDB. Орен рассказал о том, почему при поиске разработчиков он выбирает тех, кто в свободное время работает над личными Pet-проектами.

В этой статье мне понравилась мысль о том, что Pet project – это хороший индикатор того, что в человеке есть энтузиазм к профессии. Именно энтузиазму работника обучить никак не получится – он либо есть, либо его нет. Кроме того, такой проект – признак любви к тому, чем занимаешься.

Я задумался: а полезен ли Pet project для архитектора или эта «фишка» работает исключительно с разработчиками?

Архитекторы бывают разные

Начнем с того, что по работе мне приходится общаться с тремя «видами» архитекторов:

  1. Системный архитектор
    Работает в небольшой продуктовой agile-команде, обычно он совмещает функции собственно архитектора и разработчика. Одна из основных его обязанностей – проектировать архитектуру своего цифрового продукта.

  2. Архитектор решения
    Он проектирует сложные интеграционные решения, взаимодействуя с большим числом продуктовых команд. Такие архитекторы дистанцированы от программного кода и в своей работе оперируют не внутренним дизайном приложения, а целыми системами.

  3. Корпоративный архитектор
    Этот специалист управляет архитектурой всей компании в целом, взаимодействуя со стейкхолдерами и выступая в роли драйвера исполнения стратегии. Он наиболее далек от программного кода.

С системным архитектором все ясно – это такой «разработчик с дополнительными способностями», для которого способ Oren Eini работает почти всегда, ведь умение писать код – один из основных скиллов этого специалиста. А вот с  архитектором решений и корпоративным архитектором ситуация иная.

Зачем архитектору Pet project?

Архитектору полезно развивать свои Pet-проекты для того, чтобы:

Держать руку на пульсе актуальных технологий

Технологические стеки все время меняются и развиваются. И если лет 10 назад было круто делать приложения в классической сервис-ориентированной архитектуре, то сейчас мы не представляем современное приложение без микросервисов. Меняются и технологии, которые облегчают построение приложений подобного класса: сервера баз данных, распределенные кэши, брокеры сообщений, интеграционные среды и так далее.

Современный архитектор – тот, кто хорошо знает и разбирается в технологиях и может проектировать решения, отвечающие требованиям надежности, доступности, масштабируемости. И Pet-проект – это отличная возможность поиграться с подобными технологиями. Например, я лично знаком с архитекторами, которые заводят у себя дома небольшие Kubernetes-кластеры для решения задач машинного обучения.

Уметь разговаривать с разработчиками

Бывший главный архитектор компании Allianz Gregor Hohpe в своей статье The Architect Elevator – Visiting the upper floors доступно рассказывает про роль архитектора, как связующего звена между топ-менеджментом и технологическими командами. Такой специалист должен уметь общаться как высоким начальством, так и с разработчиками.

Наличие возможности ощутить себя в шкуре разработчика, создавая свой Pet-проект, – это хороший способ понять, как думает разработчик. Так архитектору проще общаться с командой на одном языке.

Pet project также помогает не отрываться от реальности, чтобы избежать превращения в архитектора «Башни из слоновой кости», проектирующего решения, которые невозможно реализовать. Кстати, Asanka Abeysinghe из компании WSO2 в своей статье про ключевые навыки архитектора, особенно выделяет именно Implementation – умение работать с кодом. 

Избежать выгорания

В эру пандемии и удаленной работы вероятность эмоционального выгорания особенно высока. Для меня одна из главных причин выгорания – усложнение получения обратной связи из-за уменьшения интенсивности общения в команде на удаленке. Архитекторы часто страдают от того, что между принятием архитектурного решения и реализацией его на продуктиве проходит слишком много времени. И чем больше систем-продуктов участвует в решении – тем дольше затягивается эта пауза. 

В интернете много исследований на эту тему, авторы которых дружно подчеркивают один факт: программирование – это такой же хороший способ бороться с выгоранием, как музыка или спорт. А еще программирование – это отличная зарядка для ума.

Итак, причин завести Pet project набралось более достаточно. Остался вопрос –  где взять идею для проекта? Поделюсь своим опытом.

Lego-робот - охотник на кошек

Пять лет назад я купил своей 9-летней дочке набор Lego Mindstorm – это игровая платформа для создания роботов. С помощью нее можно собирать и программировать разные интересные штуки.

Собираем  Mindstorm nxt
Собираем  Mindstorm nxt

Поначалу с ней было крайне интересно играть, особенно с детьми, но со временем этот интерес стал угасать. Мне захотелось вдохнуть в игрушку новую жизнь. Появилась задача: с помощью робота построить карту мест в квартире, где любит спать наша кошка по имени «Белка». По моей задумке робот должен был осуществлять обход квартиры и при нахождении кошки отмечать на карте места, где он встретил «объект». 

Фаза проекта №1: Выявление технической возможности

Выяснилось, что на Lego Minstorm EVA можно установить Linux c Java, в котором есть API для управление роботом. К нему также можно подключить USB-камеру и WiFi-адаптер. Поэтому проблем с доступом в сеть и получением изображений для распознавания быть не должно.

Фаза проекта №2: Придумываем архитектуру

Изначально я решил сделать простую многоуровневую архитектуру с умным роботом и распознаванием изображений с помощью Microsoft Azure Vision API.

Архитектура "Версия 1"
Архитектура "Версия 1"

Клиент я сделал с использованием QT, на роботе был поднят простой HTTP-сервер, а код взаимодействия с моторами, датчиками и камерой был написан на Java.

Однако такая архитектура оказалась не слишком эффективной. Неожиданной проблемой оказалось время автономной работы робота – выполняя много задач, он очень быстро «съедал» заряд аккумулятора. Поэтому пришлось вынести все, не связано с управлением «железом» робота, в во внешний сервер.

Так выглядит финальная архитектура:

Архитектура "Версия 2"
Архитектура "Версия 2"

Что получилось

На финальных испытаниях робот выглядел так:

Испытание алгоритма построения карты и обхода помещения
Испытание алгоритма построения карты и обхода помещения

Удалось ли реализовать мою идею? К сожалению, нет. Я научил робота обходить помещение и даже распознавать кошку, однако появилось слишком много «но».

Моторы робота оказались слишком шумными, они пугали кошку, которая убегала всякий раз при появлении механического «дозорного». Такой итог меня, впрочем, не слишком расстроил, ведь в Pet-проектах процесс доставляет не меньше удовольствия, чем результат.

Автомобильная деревня

Вторым проектом я занимаюсь сейчас. Во время отдыха на даче родилась идея – сделать сервис, который считает сколько людей сейчас находятся в нашей деревне.  Заодно можно за пару кликов узнать – приехали соседи на дачу или еще нет? 

Сперва мне показалось, что сделать это просто – въезд в деревню один и оснащен камерой видеонаблюдения. Дело за малым – подключиться к ней и считать количество машин которые въехали в деревню и выехали из нее.

Вот какие архитектурные решения (ADR) я использовал в этом проекте.

ADR 1  Как считать машины?

Есть два варианта: распознавать сами машины и различать их госномера.

Плюс первого варианта – он кажется проще. Но хочется понимать, въезжает машина или выезжает. Кроме того, такая схема не даст информации о том, приехал ли конкретный сосед? Поэтому я выбрал вариант с распознаванием номеров. Для этого будем использовать известное решение.

OpenALPR – это библиотека с открытым исходным кодом для автоматического распознавания номерных знаков, написанная на C++ с привязкой к C#, Java, Node.js, Go и Python. Библиотека анализирует изображения и видеопотоки для идентификации номеров. На выходе получается текстовое представление любых символов номерного знака.

ADR 2 На чем делать сервер и где его хостить?

С облаками мне связываться не хотелось (да, жалко денег за подписку). Поэтому я решил выбрать решение, которое позволит мне хостить сервис прямо на даче.

Электричество в деревне периодически пропадает, поэтому нужно подумать о бесперебойной работе сервиса.

Я остановился на Jetson Nano – это одноплатник от NVidia с возможностью запускать нейронки. Плюс в том, что его можно запитать от powerbank.

Испытания время автономной работы
Испытания время автономной работы

ADR 3 На чем писать сервис?

Сервис для моей цели должен быть легким, потреблять мало процессорных мощностей и не тормозить. По этому в качестве языка разработки я выбрал C++ и распространенный фреймворк для написания встроенных сервисов. Фреймворк актуальный, быстрый и используется большим количеством известных компаний.

Актуальное состояние – я разработал прототип, который может обрабатывать картинки с камеры и делает попытки распознавать номера проезжающих автомобилей. К сожалению, разрешение камеры не дает возможность распознать номер с достаточным качеством. И похоже, что мне придется еще глубже погрузиться в технологии идентификации объектов на изображении. Но меня это только радует,  ведь цель проекта – изучить что-то новое для себя.

Заводить ли Pet project?

Какие выводы я сделал о пользе Pet-проектов конкретно для себя:

  • Они позволяют мне не забывать навыки программирования, ведь писать код самому – это круто!

  • Они стимулируют погружаться в новые для меня области, такие как машинное обучение.

  • Они позволяют мне применять навыки архитектора «в бытовых вопросах».

И помните, что идей для своих Pet-проектов вокруг очень много, нужно только присмотреться. =)

А у вас уже есть опыт ведения Pet project? Расскажите о нем в комментариях. Если же вы только планируете завести такой проект – поделитесь своими идеями, обсудим их вместе!

Комментарии (8)


  1. expdxx
    18.03.2022 01:04
    +2

    С одной стороны да, я согласен, пет-проект важен и для архитектора в том числе. Тем более если волею судеб на основной работе не приходится кодить.

    С другой стороны, такое проведение досуга такая себе смена деятельности. Нет, вроде как она есть, есть даже вознаграждение мозга за решенную задачу. Но сами задачи слишком схожи с рабочими, да ещё и предполагают присутствие за компьютером. А после 30-ти мучительно хочется сохранить зрение и работу мозга.

    Поэтому моё имхо заключается в том, что лучше бы заинтересовать себя чем-то классным, напрямую не связанным с ИТ. Архитектору и так приходится много читать, плюс я не могу себе представить профессии без постоянного обучения чему-либо.

    Лично меня привлек автоспорт и авторство. Первое началось давно и отлично переключает от ИТ, второе дополнительно качает навык презентации своей работы и написания читаемой техдоки. И волки сыты, и крыша на домике цела, плюс есть некая антихрупкость: в случае каких-то адских ситуаций можно найти халтуру тем же копирайтером.


    1. dvdemon Автор
      18.03.2022 09:22

      Согласен. Иметь хобби, которое позволяет забыть на время "виртуальный" мир в которым мы живем, как разработчики - это классно!


  1. snegprog
    18.03.2022 10:04
    +1

    Да, пет-проект это круто, но что делать если увлечен своим проектом на работе (тоже работаю в "МТС Диджитал"), бывает засиживаешься до глубокой ночи или встаешь вместе с петухами и новыми мыслями как реализовать какую-то фичу, подписан на хабр, на несколько телеграмм каналов, читаешь различные статьи по разработке, читаешь книги, НО при этом нет пет-проекта, просто не хватает времени, сил и просто не видишь необходимости т.к. все свои мысли имеешь возможность реализовать на работе. Это значит я не увлеченный человек?


    1. dvdemon Автор
      18.03.2022 10:08
      +1

      Когда Pet-project совпал с работой - это большая удача :-) Вроде Конфуций сказал -"Выбери себе работу по душе, и тебе не придётся работать ни одного дня в своей жизни."


      1. svr_91
        18.03.2022 12:31
        +5

        А когда выгоришь, то выгоришь сразу и на работе и в жизни :)


  1. Sklott
    18.03.2022 11:36
    +1

    Заметил на своем опыте такую тенденцию: чем старше становишься - тем меньше pet-проектов. Пока молодой, свободный и задорный - то нет проблем. Как появляется семья, дети, другие увлечения и обязанности - на pet-проекты уже практически ни остается ни времени ни сил и моральных и физических...

    Пока у меня присутствует pet-проект, но добираюсь я до него уже достаточно редко...


    1. dvdemon Автор
      18.03.2022 13:23
      +1

      В моем случае удалось совместить - проект с "кошкой" мы делали вместе с дочкой. Дочка собирала робота - я писал программу. Получилось и весело и интересно.


  1. Vikingg
    18.03.2022 17:02
    +2

    На самом деле умение довести проект до состояния "не стыдно показать" это уже отдельный успешный проект) Pet проекты однозначно да, и делать их вдвоем гораздо легче! Хотя бы с дочкой или кошкой.