Несколько дней я размышлял, есть ли смысл писать этот отзыв. В преддверии 2020 года у меня было много энтузиазма, и мне не терпелось начать работу над своими идеями. Но затем случилась эта история с буквой С, положившая конец всем моим самым продуманным планам. Я перешел от ощущения того, что лучше всего можно описать как смайлик со звездными глазами, к тому, чтобы выглядеть как крикун Эдварда Мунка.

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

  1. Что было хорошо в этом году?
  2. Что не получилось в этом году?
  3. Чему я научился?

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

1. Что было хорошо в этом году?

Вот как я превратил эти хаотичные времена в положительные результаты:

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

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

В результате всей этой деятельности было выпущено 56 гемов Ruby. К моему удивлению, к концу года общее количество скачиваний драгоценных камней превысило отметку в 150 миллионов. Увеличение на 50 миллионов только за один год кажется безумием. Знание того, что все больше и больше людей используют мои библиотеки, мотивирует меня.

Я сосредоточился на обновлении всех компонентов инструментария TTY. Это почти 25 драгоценных камней. Выполняя различные обновления, я не мог удержаться от создания новых компонентов. Итак, в феврале я выпустил гем tty-exit. Это относительно небольшой, но важный драгоценный камень, который удовлетворит потребности платформы TTY в более читаемых кодах выхода.

В мае я опубликовал гем tty-option для разбора аргументов командной строки, флагов и переменных окружения. Я вложил массу труда в релиз. Более 300 коммитов вошли в первую версию 0.1. Это, наверное, самый солидный первый релиз, который я когда-либо делал. Он предоставляет множество мощных функций, таких как синтаксический анализ аргументов карты, который является распространенным способом указания значений флагов в терминальных инструментах, таких как Docker.

Теперь, когда все компоненты TTY обновлены (как показано на изображении ниже), планируется выпустить новую версию инструментария в 2021 году. Я с нетерпением жду будущего и того, где будет находиться экосистема драгоценных камней TTY !

Спонсорство. GitHub упростил для отдельных разработчиков, а теперь и компаний, возможность спонсировать проекты с открытым исходным кодом и их создателей. У этого есть огромный потенциал сделать открытый исходный код более устойчивым. Я благодарен и счастлив, что у меня появилось несколько новых спонсоров. Я ценю их щедрость и поддержку!

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

Чтение. Что вы делаете, когда некуда пойти? Ты оставайся дома и читай книги! Я прочитал более 50 книг. Честно говоря, я не планировал читать так много, но они послужили отличным спасением. Темы, которые я выбрал, были настоящей смесью. Придерживаясь более технической темы этого обзора, пара книг выделялась для меня больше всего.

Первая книга, которая мне очень понравилась, — это «Проект Феникс». История о DevOps, которая не разочаровала и оправдала свою шумиху. Я никогда не читал книги, в которой технические концепции вводятся в виде выдуманной истории. Кто мог ожидать, что рассказать историю — такая хорошая концепция, а? Хотя персонажи были выдуманы, история казалась реальной и очень правдоподобной. Я мог бы рассказать о многих проблемах, возникающих при преодолении разрыва между ИТ-службами и командой разработчиков. Я бы даже сказал, что именно на это я тратил большую часть своей энергии в последние годы. Так что да, иногда диалоги и проблемы действительно кажутся пронзительными.

«Работа на публике» также была очень интересной книгой. Надя Эгбал проделала большую работу, проанализировав сообщество открытого исходного кода и обсудив эволюцию открытого исходного кода. Я чувствовал себя немного лабораторной крысой в эксперименте. Это было странное чувство, когда тебя анализировали как часть экосистемы с открытым исходным кодом. Квадрантная диаграмма, объясняющая четыре различных способа структурирования проектов с открытым исходным кодом, была особенно новой и интересной. Насколько я помню, я классифицировал себя как разработчик с открытым исходным кодом типа Stadium. Книга определенно расширила мою осведомленность и укрепила мои мысли об обслуживании и долгосрочной устойчивости открытого исходного кода.

Программирование. Учитывая дополнительные часы в сутках, я углубился в язык программирования Crystal. Несмотря на то, что Crystal все еще находится ниже основного выпуска, у меня не было никаких проблем с ним. Опыт был довольно гладким. Язык имеет синтаксис, вдохновленный Ruby, но вы ошибаетесь, думая, что он не предлагает ничего сверх этого. Наоборот. Crystal — это скомпилированный язык, поэтому он очень быстрый. Он также обеспечивает строгие гарантии типов, которые приводят к функциям, отсутствующим в Ruby. Например, вы можете перегружать определения методов. В большинстве случаев компилятор не заставляет вас предоставлять сигнатуры типов, так как вывод типа очень хорош.

Наконец-то я окунул пальцы ног в язык, похожий на Lisp. Я решил выучить язык Racket. Этот опыт определенно казался большим отходом, чем Кристал. Несмотря на то, что это динамический язык, трудно найти параллели с какими-либо языками, на которых мне до сих пор приходилось программировать. Синтаксис кажется довольно странным для ввода и просмотра в моем редакторе. Написание эквивалента класса — это путешествие по множеству вложенных методов в постоянно растущем лесу скобок. Это эстетика, с которой мне раньше не приходилось сталкиваться. Хотя мне нравится, когда язык расширяет мои навыки кодирования.

2. Что не получилось в этом году?

Теперь давайте посмотрим на некоторые вещи из моего «не очень хорошего» списка.

Ведение блога. Я начал год с намерения публиковать по одной статье в месяц. Это казалось разумной целью, учитывая мои рабочие нагрузки и прошлый опыт. Но мне удалось написать только три статьи, включая годовой обзор.

Из трех статей наибольший интерес вызвала статья Написание спецификации Ruby Gem. Он был показан в известном информационном бюллетене сообщества Ruby Ruby Weekly под библейским изображением с пророческим оттенком. Я рассмеялся. Основываясь на комментариях, электронных письмах и отзывах, многие люди сочли статью полезной. В третьей и, как оказалось, последней статье 2020 года под названием Заглянем внутрь Ruby Gem я продолжил тему объяснения системы упаковки RubyGems.

Потом мой энтузиазм угас. Я потерял импульс, и мне было трудно снова вернуться к писательству. Некоторое время я пытался писать на несколько других тем, но ничего не казалось достаточно основательным или готовым к публикации. Может быть, тяжесть ожиданий, которые я возлагала на себя, вызвала у меня знаменитый писательский кризис? Точно сказать не могу. Несмотря на мои скудные усилия, число читателей моего блога утроилось. Я хочу свернуть за угол в 2021 году и написать больше, но не ожидая регулярного графика публикаций. Планка действительно поставлена ​​очень низко.

Путешествия и конференции. К концу 2019 года я составил грандиозный план посетить несколько стран, в основном европейских. Франция, Финляндия, Россия и Япония были первыми в моем списке. Я был взволнован! Что ж… как и следовало ожидать, грандиозного тура по Европе не произошло. Я посетил только одну страну из списка, Францию. В середине февраля я сел на поезд Евростар из Лондона в Париж, чтобы посетить конференцию ParisRB. Первая и единственная конференция, которую я посетил лично в том году. В тот момент я еще пребывал в блаженном неведении.

ParisRB представлял собой двухдневную конференцию, проходившую в университетской среде. Я путешествовал на переполненном метро и трамваях, чтобы добраться до места, которое сейчас кажется сюрреалистичным. На конференции выступило много замечательных спикеров. В частности, Паоло «Нуско» Перротта рассказал прекрасную историю происхождения того, что мы теперь знаем как область глубокого обучения. Я был впечатлен его презентационными способностями и умением привлечь аудиторию. В другом выступлении, которое мне очень понравилось, дуэт Мелани и Александра из компании Doctolib рассказал о проблемах, связанных с адаптацией новых разработчиков к большой кодовой базе. Мне понравилось слушать о том, как они структурируют свои внутренние программы наставничества и автоматизируют рабочие процессы, чтобы поддерживать согласованность своей большой кодовой базы.

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

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

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

3. Чему я научился?

Мой монашеский образ жизни заставил меня осознать и подчеркнуть важность некоторых вещей.

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

Готовьте себе еду. Самоизоляция дала мне понять, что на диете из каш и рыбы с чипсами очень долго не просидишь. Во всяком случае, есть одно и то же каждый день надоедает. Питательная ценность моих блюд также была сомнительной. У меня появилась тяга к супам. Поэтому с помощью моей мамы я посвятил себя тому, чтобы научиться готовить новый суп каждую неделю. Каждый раз я готовила большую кастрюлю, которой хватило на несколько дней. Кулинария — это один из навыков выживания, который я считаю необходимым для улучшения качества жизни. Это также может сэкономить вам немного денег.

Снизьте свои стандарты. Выслушайте меня, прежде чем бросать на меня свой презрительный взгляд. Я не предлагаю вам выпускать дрянную работу. Отнюдь не. Это означает, что что бы вы ни хотели сделать, будь то написание кода или статьи в блоге, вам нужно отпустить ожидания и погрузиться прямо в дело. Оставьте совершенство за дверью. Не беспокойтесь о применении шаблонов проектирования или выяснении моделей предметной области. Просто напишите этот кусок кода и получайте удовольствие. Вы всегда можете вернуться и исправить ситуацию. Как только будет создана начальная версия, вы сможете улучшить дизайн и провести рефакторинг запутанного кода.

Стать более решительным. Я могу застрять в вечном кругу нерешительности. Обсуждение, иногда целыми днями, стоит ли мне что-то делать или нет. Должен ли я включить эту функцию в библиотеку? Мне написать эту статью? Должен ли я купить это? Что еще хуже, я могу так никогда и не нажать на курок, а вместо этого оставлю решение на несколько недель. Мне нужно остановить это и научиться принимать более быстрые и правильные решения. Наставления от величайших баскетболистов действительно находят отклик у меня:

«Я всегда говорю, что решения, которые я принимаю, я живу с ними. Всегда есть способы их исправить или сделать лучше. В конце концов, я живу с ними». - Леброн Джеймс

Реализуйте свои идеи. У меня есть идеи. Они у вас есть. Они есть у всех. Проходит время и ничего не происходит. Я исследую, думаю и откладываю. Список идей, которые я хочу реализовать, постоянно растет. Единственный выход - начать работать над материалом. Создайте быстрый всплеск кода. Напишите план статьи. Запишите вступительное видео. Что бы ни. Ничто не даст вам большей ясности, чем доза действия. Мой новый девиз исходит от Томаса Эдисона, который сказал: «Видение без исполнения — это галлюцинация».

Вперед и вверх

Что это был за год! Как я уже упоминал в своем последнем обзоре, я не заинтересован в постановке целей. После 2020 года это, вероятно, еще более верно, чем когда-либо. Но это не значит, что у меня нет видения того, каким я хотел бы видеть 2021 год. Я хотел бы посвятить больше времени тому, чтобы помочь и побудить больше людей писать приложения командной строки на Ruby. Я хочу создать ресурсы и сообщество энтузиастов терминальных приложений Ruby.

У меня много мыслей о том, как это можно сделать. Я постараюсь продвигать и освещать проекты Ruby, предназначенные для использования в терминале. Я планирую увеличить свое участие в других проектах с открытым исходным кодом. Мне особенно хотелось бы оказывать поддержку людям, использующим компоненты TTY. Я получаю вопросы о том, как использовать мои различные библиотеки, и я чувствую, что мог бы сделать больше, чтобы помочь. Внесение большего количества кода в другие проекты, предоставление отзывов или внесение предложений по улучшению — вот лишь некоторые из них, которые приходят на ум.

Я думаю, мы все можем согласиться с тем, что 2020 год был странным, но я точно усвоил одну вещь: нужно принять неопределенность. Что бы ни случилось на моем пути, я сделаю все возможное, чтобы превратить это в позитив. Сделаем 2021 год хорошим!

Эта статья изначально была опубликована на PiotrMurach.com