Привет! Меня зовут Олег и я backend-разработчик в компании «Ситимобил». Сегодня хочу поговорить о важной, но часто игнорируемой теме:«Я в песочнице один, у меня нет игрушек» «Как перестать переживать по поводу отсутствия pet-проектов».
Мы часто слышим о том, что у разработчика есть куча pet-проектов. В выходные он собирает экзоскелеты, а вечерами улучшает жизнь половине населения Земли с помощью своей разработки на основе новой технологии, про которую услышал 5 минут назад. Не спорю, такое имеет место быть. Но очень часто всё совсем не так.
Я не раз пытался сделать свои проекты. Но зачастую быстро терял к ним интерес, когда находил что-то аналогичное и широко известное. А реализованные чаще всего относились к работе, либо моей, либо супруги. Так были сделаны системы отложенного кросспостинга в соцсети и другая утилитарная мелочь.
Постоянно читая статьи на тему того, как %user% буквально на коленке научил свою кофеварку выгуливать собаку, начинаешь чувствовать себя немного неуютно. Складывается ощущение, что вокруг тебя взрослый мир и все вокруг знают больше тебя, умеют лучше и т.д.
Если кто-то еще не догадался, я столкнулся с проявлениями «синдрома самозванца».
Но я не был бы собой, если бы не увидел в этом проблему и не решился её препарировать. Если избавиться и не получится, то хотя бы буду знать врага в лицо. Сразу предупрежу: в моем случае самым результативным оказался поход к карьерному консультанту (можно и к психологу, особой разницы в данном случае нет).
Ну и, собственно, представляю вам нашего врага — сопротивление. Оно может проявляться в разных формах. Кто-то нагружает себя делами до такой степени, что не может выкроить на свой проект и 15 минут в день. Кто-то (моя тема) начинает обесценивать свое начинание фразами по типу «Да кому это всё нужно», «Да зачем», «Столько людей вон делают и покруче, чем я». Кто-то «загоняет» себя делами по обучению, планированию и другим подготовительным работам настолько, что выгорает, так и не успев начать.
Это нормально. Представим, что наш мозг — как компьютер. И там предустановлено разное ПО, которое отвечает за разные функции. Есть лимбическая система (она отвечает за выживание и постоянство), а есть неокортекс (он отвечает за наше развитие, помогает нам улучшать нашу жизнь). И это ПО иногда конфликтует между собой. Когда понимаешь, как всё это работает, справиться с сопротивлением уже дело техники.
Процесс
Если враг известен, остаётся подобрать оружие. В набор моего арсенала вошли:
тимлид, с которым можно уточнить детали;
знакомые технологии, чтобы не тратить много времени.
Для начала я решил действовать так:
Шаг 1. Найти странное взаимодействие.
Шаг 2. Разобраться в проблеме.
Шаг 3. Принять решение и сделать MVP.
Шаг 4. Показать это всё и «продать».
Шаг 1.
В работе нашего отдела есть странный процесс, когда, по сути, необходимо перекладывать файлик из одного чатика в другой (видимо, чтобы было больше вовлеченности). Ну и самое страшное: в этот процесс вовлечены целых два человека.
Шаг 2.
Проанализируем процесс:
Приходит файл в Telegram-чат.
Забираем его и пересылаем в Slack-чат (задействован один человек).
Забираем файл из Slack и помещаем его во внутреннюю админку для обработки (задействован второй человек).
Копируем результат обработки и постим в Slack-чат (задействован второй человек).
Сформулируем проблему: Использование двух человек для обработки одного файла.
Берем наш первый инструмент — тимлида — и идём разбираться, можно ли нам автоматизировать часть или весь процесс. Главное, чтобы боты не общались друг с другом, и это был мой случай, так что никаких помех не было.
Шаг 3.
Убедившись, что автоматизировать можно всё, но необходимо оставить возможность отключения некоторых шагов процесса, я принялся за дело.
В качестве инструмента реализации взял знакомую мне технологию — Go.
Прежде чем начать работу, я решил разобраться с мотивацией и определить, что для меня важно;
- я хочу, чтобы проект был полезным (одна из причин, почему я выбираю «не делать» что-то — не вижу ценность для других);
- проект должен быть на 80 % реализуем с помощью моих знаний (повышенная сложность может сильно затормозить процесс);
- проект должен быть мне интересен (ну, тут всё просто, пытаемся объединить в систему три разных среды Telegram — Slack — Внутренняя система).
MVP, естественно, был реализован на готовых компонентах:
Для работы с Telegram (https://github.com/tucnak/telebot/tree/v2.4.0)
Как работать с ботом в Telegram:
Для работы со Slack (https://github.com/slack-go/slack)
Как отправлять сообщения в Slack гуглим и находим
Ручка, за которую я буду дергать админку
Шаг 4.
Пару часов игры в «отправь файл, посмотри в чатик Slack», и готово. Остались некоторые организационные моменты, такие как перенос всего этого добра во внутренний репозиторий.
Результат
Получился полностью управляемый и автоматизированный процесс.
Я обрёл гордость за реализованный побочный проект.
Рефлексия
По прошествии времени, оказалось, что проект полезен. Причём не только своим основным назначением, но и дополнительно вот чем:
Я заменил готовые компоненты самописными необходимыми и достаточными, не очень хотелось держать весь инструментарий. К тому же я всё ещё опасаюсь, что репозиторий могут отозвать.
Я сделал инструмент, который мелькает перед глазами и постоянно подкрепляет мой энтузиазм гордостью, когда я вижу, что он работает.
Я понял, что хоть у меня и нет этого идеального pet-проекта, зато я выкинул мысли о нём и занялся тем, что мне интересно и полезно, без размышлений, ведущих к выгоранию.
Комментарии (11)
polearnik
17.11.2021 15:00+9Пет проекты это хорошо когда есть на это время. Когда есть семья и какое-либо хобби то времени на пет проекты нет . И это нормально. Проведите свободное время за книгой или за сериалом или с семьей ничего страшного не случится. Если надо изучить какой-то новый язык или технологию то лучше взять какую-то избитую идею без подводных камней чтоб не тратить время на решение продукт-специфичных проблем а сконцентрироваться на изучаемом предмете.
oleg_gut Автор
17.11.2021 15:19Согласен. Но мне как видите пришлось до этого дойти, преодолеть этот барьер, который находился только в моей голове, сделать что-то чтобы себя успокоить и прийти к выраженной вами мысли.
Iv38
17.11.2021 17:40Мне не очень понятно в чём смысл такого пет-проекта. Наличие у тебя открытого пет-проекта полезно при трудоустройстве. По проекту сразу можно оценить код и архитектуру. Если автор его поддерживает и развивает, а проект хоть немного популярен, можно посмотреть как он умеет организовать разработку: как работает с обращениями, как оформляет коммиты, как собирает релизы, работает с версиями, пишет ли тесты, какие инструменты использует для сборки и деплоя. Хороший пет-проект, даже маленький, но хорошо оформленный, может заменить резюме и половину собеседования. Но если проект закрытый, то в чём прикол? Это же тогда просто рабочий проект.
TyVik
17.11.2021 21:48+1Закрытый проект можно использовать как полигон по работе с какой-нибудь технологией. Фиг кто мне даст на работе пописать на Vue или настроить поиск на elasticsearch. Зачем этим заниматься в свободное время? Чтобы иметь представление какая технология где лучше будет подходить и какие у неё есть ограничения.
Keyten
18.11.2021 12:36+1А чем закрытый проект в этом случае лучше открытого?
TyVik
18.11.2021 13:29В дальнейшем из него можно сделать стартап или просто использовать для себя. Лично у меня один такой для автоматической торговли на аукционе. Другой - придёт ЧПУ фрезер и буду пытаться монетизировать.
Neikist
18.11.2021 17:36Ну как минимум на этапе знакомства с технологией/предметной областью код может писаться очень плохо. Проверка концепций и т.п. подразумевают «Написал->выкинул». Зачем кому то такое в открытом виде?
Ну и например я свой проект рассматриваю двояко. С одной стороны я его планирую со временем выложить таки в сторы, и даже не уверен что исходники не открою. С другой стороны — возможно часть наработок оттуда потом со временем у текущего работодателя применю, ибо и рабочий проект, и пет проект — читалки, просто на разных технологиях и с разными фичами/целями. И у проекта работодателя конкуренты таки есть. И отношения с некоторыми очень так себе. А значит совместного улучшения его все равно не будет никогда. Лучше уж текущий работодатель преимущество получит (ну, это если проект доведу до ума, и докажу что он лучше текущего решения).
HellWalk
18.11.2021 10:52У меня нет своих фильмов - потому что кинематограф мне не интересен (хотя есть знакомые, которые снимали свои фанатские корокометражки)
У меня нет своих песен, потому что ни петь ни играть на музыкальных инструментах мне не интересно (хотя есть знакомые со своими музыкальными группами)
Но у меня есть свои пет-проекты, и есть куча идей в очереди на реализацию - потому что сайты и веб-разработка мне нравится.
Мораль: нет пет-проектов - ну значит программирование для вас это просто работа. А интересы у вас в других областях.
ivegner
Простите, я не уловил, это личный проект в рамках компании? В случае Вашего, скажем так, роста за пределы компании он перестанет быть Вашим личным проектом?
oleg_gut Автор
Спасибо за вопрос.
Да, я выбрал "личный проект в рамках компании", это было просто комфортно для меня.
А по поводу второго вопроса и "роста за пределы компании", то в целом задача конкретной автоматизации применима в конкретном случае и подразумевает, что я оставлю наработки в компании, но возьму с собой некоторые знания и навыки, которыми я стал обладать.
ivegner
Интересный взгляд. Мне как-то в первом приближении казалось, что конкретная автоматизация конкретной задачи, наработки с которой остаются в компании, — это и есть обычная работа программиста, а получение некоторых знаний и навыков, которые специалист волен унести с собой в светлое будущее, — подразумеваемая выгода специалиста вне зависимости от профиля. И с этой точки зрения я не смог разглядеть, чем же "личный проект в рамках компании" отличается от "выполнения своих обычных обязанностей со всеми обычными вытекающими".
Быть может, поведанной истории недостаёт предыстории, из которой мы узнали бы что-то про распределение ownership в прежних (и текущих?) практиках компании. Потому что если — гипотетически! — сотрудник постоянно делает лишь то, что сказали другие люди, причём лишь так, как сказали другие люди, и получает оценку своей работы от других людей, не находя в этом гармонии с собственным пониманием того, что надо делать, как это делать, насколько хорош вышел результат, то лично для меня конфликт налицо. И если — гипотетически! — суть поведанной истории в том, что сотрудник добился от компании выделения ownership над "что, как, оценка", то я бы сказал, что это куда более успешный успех, чем описанный в статье. Поборол свою голову — молодец, поборол порочные практики в компании — молодец стократ!
Но это я так теоретизирую.