Привет! Меня зовут Олег и я 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-проекта, зато я выкинул мысли о нём и занялся тем, что мне интересно и полезно, без размышлений, ведущих к выгоранию.