Привет! Меня зовут Олег и я backend-разработчик в компании «Ситимобил». Сегодня хочу поговорить о важной, но часто игнорируемой теме:«Я в песочнице один, у меня нет игрушек» «Как перестать переживать по поводу отсутствия pet-проектов».

Мы часто слышим о том, что у разработчика есть куча pet-проектов. В выходные он собирает экзоскелеты, а вечерами улучшает жизнь половине населения Земли с помощью своей разработки на основе новой технологии, про которую услышал 5 минут назад. Не спорю, такое имеет место быть. Но очень часто всё совсем не так.

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

Постоянно читая статьи на тему того, как %user% буквально на коленке научил свою кофеварку выгуливать собаку, начинаешь чувствовать себя немного неуютно. Складывается ощущение, что вокруг тебя взрослый мир и все вокруг знают больше тебя, умеют лучше и т.д. 

Если кто-то еще не догадался, я столкнулся с проявлениями «синдрома самозванца». 

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

Ну и, собственно, представляю вам нашего врага — сопротивление. Оно может проявляться в разных формах. Кто-то нагружает себя делами до такой степени, что не может выкроить на свой проект и 15 минут в день. Кто-то (моя тема) начинает обесценивать свое начинание фразами по типу «Да кому это всё нужно», «Да зачем», «Столько людей вон делают и покруче, чем я». Кто-то «загоняет» себя делами по обучению, планированию и другим подготовительным работам настолько, что выгорает, так и не успев начать. 

Это нормально. Представим, что наш мозг — как компьютер. И там предустановлено разное ПО, которое отвечает за разные функции. Есть лимбическая система (она отвечает за выживание и постоянство), а есть неокортекс (он отвечает за наше развитие, помогает нам улучшать нашу жизнь). И это ПО иногда конфликтует между собой. Когда понимаешь, как всё это работает, справиться с сопротивлением уже дело техники. 

Процесс

Если враг известен, остаётся подобрать оружие. В набор моего арсенала вошли: 

  •  тимлид, с которым можно уточнить детали;

  •  знакомые технологии, чтобы не тратить много времени.

Для начала я решил действовать так:

Шаг 1. Найти странное взаимодействие.

Шаг 2. Разобраться в проблеме.

Шаг 3. Принять решение и сделать MVP.

Шаг 4. Показать это всё и «продать». 

Шаг 1.
В работе нашего отдела есть странный процесс, когда, по сути, необходимо перекладывать файлик из одного чатика в другой (видимо, чтобы было больше вовлеченности). Ну и самое страшное: в этот процесс вовлечены целых два человека.

Шаг 2.
Проанализируем процесс:

  • Приходит файл в Telegram-чат.

  • Забираем его и пересылаем в Slack-чат (задействован один человек).

  • Забираем файл из Slack и помещаем его во внутреннюю админку для обработки (задействован второй человек).

  • Копируем результат обработки и постим в Slack-чат (задействован второй человек).

Сформулируем проблему: Использование двух человек для обработки одного файла.

Берем наш первый инструмент — тимлида — и идём разбираться, можно ли нам автоматизировать часть или весь процесс. Главное, чтобы боты не общались друг с другом, и это был мой случай, так что никаких помех не было.

Шаг 3.
Убедившись, что автоматизировать можно всё, но необходимо оставить возможность отключения некоторых шагов процесса, я принялся за дело.

В качестве инструмента реализации взял знакомую мне технологию — Go.

Прежде чем начать работу, я решил разобраться с мотивацией и определить, что для меня важно; 

- я хочу, чтобы проект был полезным (одна из причин, почему я выбираю «не делать» что-то — не вижу ценность для других); 

- проект должен быть на 80 % реализуем с помощью моих знаний (повышенная сложность может сильно затормозить процесс);

- проект должен быть мне интересен (ну, тут всё просто, пытаемся объединить в систему три разных среды Telegram — Slack — Внутренняя система).

MVP, естественно, был реализован на готовых компонентах:

Шаг 4.
Пару часов игры в «отправь файл, посмотри в чатик Slack», и готово. Остались некоторые организационные моменты, такие как перенос всего этого добра во внутренний репозиторий.

Результат

Получился полностью управляемый и автоматизированный процесс.

Я обрёл гордость за реализованный побочный проект. 

Рефлексия

По прошествии времени, оказалось, что проект полезен. Причём не только своим основным назначением, но и дополнительно вот чем:

  1. Я заменил готовые компоненты самописными необходимыми и достаточными, не очень хотелось держать весь инструментарий. К тому же я всё ещё опасаюсь, что репозиторий могут отозвать.

  2. Я сделал инструмент, который мелькает перед глазами и постоянно подкрепляет мой энтузиазм гордостью, когда я вижу, что он работает.

  3. Я понял, что хоть у меня и нет этого идеального pet-проекта, зато я выкинул мысли о нём и занялся тем, что мне интересно и полезно, без размышлений, ведущих к выгоранию.

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


  1. ivegner
    17.11.2021 14:35
    +2

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


    1. oleg_gut Автор
      17.11.2021 15:32
      +1

      Спасибо за вопрос.
      Да, я выбрал "личный проект в рамках компании", это было просто комфортно для меня.
      А по поводу второго вопроса и "роста за пределы компании", то в целом задача конкретной автоматизации применима в конкретном случае и подразумевает, что я оставлю наработки в компании, но возьму с собой некоторые знания и навыки, которыми я стал обладать.


      1. ivegner
        17.11.2021 19:03
        +7

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

        Быть может, поведанной истории недостаёт предыстории, из которой мы узнали бы что-то про распределение ownership в прежних (и текущих?) практиках компании. Потому что если — гипотетически! — сотрудник постоянно делает лишь то, что сказали другие люди, причём лишь так, как сказали другие люди, и получает оценку своей работы от других людей, не находя в этом гармонии с собственным пониманием того, что надо делать, как это делать, насколько хорош вышел результат, то лично для меня конфликт налицо. И если — гипотетически! — суть поведанной истории в том, что сотрудник добился от компании выделения ownership над "что, как, оценка", то я бы сказал, что это куда более успешный успех, чем описанный в статье. Поборол свою голову — молодец, поборол порочные практики в компании — молодец стократ!

        Но это я так теоретизирую.


  1. polearnik
    17.11.2021 15:00
    +9

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


    1. oleg_gut Автор
      17.11.2021 15:19

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


  1. Iv38
    17.11.2021 17:40

    Мне не очень понятно в чём смысл такого пет-проекта. Наличие у тебя открытого пет-проекта полезно при трудоустройстве. По проекту сразу можно оценить код и архитектуру. Если автор его поддерживает и развивает, а проект хоть немного популярен, можно посмотреть как он умеет организовать разработку: как работает с обращениями, как оформляет коммиты, как собирает релизы, работает с версиями, пишет ли тесты, какие инструменты использует для сборки и деплоя. Хороший пет-проект, даже маленький, но хорошо оформленный, может заменить резюме и половину собеседования. Но если проект закрытый, то в чём прикол? Это же тогда просто рабочий проект.


    1. TyVik
      17.11.2021 21:48
      +1

      Закрытый проект можно использовать как полигон по работе с какой-нибудь технологией. Фиг кто мне даст на работе пописать на Vue или настроить поиск на elasticsearch. Зачем этим заниматься в свободное время? Чтобы иметь представление какая технология где лучше будет подходить и какие у неё есть ограничения.


      1. Keyten
        18.11.2021 12:36
        +1

        А чем закрытый проект в этом случае лучше открытого?


        1. TyVik
          18.11.2021 13:29

          В дальнейшем из него можно сделать стартап или просто использовать для себя. Лично у меня один такой для автоматической торговли на аукционе. Другой - придёт ЧПУ фрезер и буду пытаться монетизировать.


        1. Neikist
          18.11.2021 17:36

          Ну как минимум на этапе знакомства с технологией/предметной областью код может писаться очень плохо. Проверка концепций и т.п. подразумевают «Написал->выкинул». Зачем кому то такое в открытом виде?
          Ну и например я свой проект рассматриваю двояко. С одной стороны я его планирую со временем выложить таки в сторы, и даже не уверен что исходники не открою. С другой стороны — возможно часть наработок оттуда потом со временем у текущего работодателя применю, ибо и рабочий проект, и пет проект — читалки, просто на разных технологиях и с разными фичами/целями. И у проекта работодателя конкуренты таки есть. И отношения с некоторыми очень так себе. А значит совместного улучшения его все равно не будет никогда. Лучше уж текущий работодатель преимущество получит (ну, это если проект доведу до ума, и докажу что он лучше текущего решения).


  1. HellWalk
    18.11.2021 10:52

    • У меня нет своих фильмов - потому что кинематограф мне не интересен (хотя есть знакомые, которые снимали свои фанатские корокометражки)

    • У меня нет своих песен, потому что ни петь ни играть на музыкальных инструментах мне не интересно (хотя есть знакомые со своими музыкальными группами)

    • Но у меня есть свои пет-проекты, и есть куча идей в очереди на реализацию - потому что сайты и веб-разработка мне нравится.

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