Сегодня я напишу о том, как минимализм применяется в вашей личной жизни, а затем о том, как он может применяться в вашей практике разработки программного обеспечения. Я также представлю принцип Парето, граф эмпирического минимализма и принципы проектирования программного обеспечения.
Это, наверное, самая важная статья, которую я написал за последний год. Для меня это годы обучения и множество моментов «эврики», когда разные дисциплины объединились, что привело к грандиозному объединению таких идей, как ценность, минимализм, простота, тестируемость, поток данных, акторное программирование, теория ограничений, пропускная способность систем. , функциональное программирование, эмпиризм и наука.
Это настолько важно для меня, что я назвала свою онлайн-персону в ее честь.
- Вы знаете, что такое минимализм?
- Может быть, вы слышали о Мари Кондо?
Она коуч, который помогает людям избавиться от ненужного хлама и оставить только то, что приносит радость. Она минималист, член растущего движения, которое признает, что истинная радость, ценность и цель исходят не от количества вещей, которые у вас есть, а от качества переживаний и чувств, которые они вызывают. Наличие слишком большого количества вещей считается препятствием на пути к достижению ваших целей, ведению счастливой и здоровой жизни, развитию отношений…
Минимализм — это философское движение и образ жизни, направленный на избавление от вещей, переживаний, действий, которые являются пустой тратой. Они могут быть пустой тратой времени, пустой тратой денег, пустой тратой места. В любом случае, если что-то не добавляет ценности в вашу жизнь, минимализм учит вас избавляться от этого.
Очевидно, что у каждого будет свое собственное, отличное и личное уравнение ценности. Что-то ценное для одного человека может быть бесценным для другого. Но вот большая часть. Никто не просит вас использовать уравнение ценности другого человека. Вы должны использовать свое собственное уравнение ценности, которое у вас уже есть и которое вы уже используете.
- Как я узнаю, что у вас уже есть встроенное уравнение ценности?
- Как часто вы чувствуете вину за то, что тратите время на какое-то занятие?
- Как насчет чувства вины за покупку того, что вам на самом деле не нужно?
- Почему вы чувствуете себя виноватым?
Вы не следуете своим собственным оценочным суждениям. Ценность этого нового предмета в вашей жизни ниже, чем его совокупная стоимость. Идея в том, что вы должны взять этот внутренний голос и усилить его. Пройдите этот активный шаг по расхламлению своего окружения, и вы сразу же распознаете в нем противоядие от господствующей культуры потреблять все больше и больше, без конца. Спросите себя, что вы цените, какова ваша цель, и организуйте свою жизнь вокруг этого.
Здесь важно помнить — вы не должны использовать вновь обретенную свободу, а дополнительное пространство, дополнительное время, которое вы получаете, и снова наполнять его новыми вещами. Инстинкт и практика, которые вы использовали однажды, должны быть включены постоянно.
Используйте его как средство, чтобы постоянно расставлять приоритеты в том, что важно, и говорить НЕТ вещам, которые НЕ важны.
После того, как вы наведете порядок, слово «НЕТ», вероятно, самое важное, что нужно помнить, когда вы сталкиваетесь с искушением импульсивной покупки или импульсивного действия.
Остановитесь, сделайте шаг назад и переоцените. Приносит ли это ценность вашей жизни?
Минимализм в программной инженерии
Та же самая эвристика минималистского образа жизни может и должна применяться в контексте разработки программного обеспечения. Это приводит к хорошему, целенаправленному дизайну программного обеспечения и даже может быть применено к тому, как мы управляем проектами и организациями в целом.
Кстати, может быть, вы уже заметили, что слово НЕТ — один из самых важных инструментов в арсенале владельцев продукта, когда они оценивают, должна ли пользовательская история попасть в бэклог, и как ей следует расставить приоритеты.
Принцип Парето… Правило 80/20
Принцип Парето гласит, что для многих исходов примерно 80 % последствий исходят из 20 % причин («нескольких жизненно важных»). Другими названиями этого принципа являются правило 80/20, закон меньшинства или принцип редкости факторов.
Подумайте о программном минимализме через призму принципа Парето.
Чтобы дать вам краткое представление о том, что это такое, позвольте мне привести пример.
Имея 6 функций программного продукта, клиенты обычно будут использовать 20% функций почти все время (80% времени), а остальные функции будут использоваться редко, если вообще будут использоваться. В какие функции стоит инвестировать?
Тот же принцип может быть применен к проектам и их ценности для организации, где 20% всех проектов принесут почти всю ценность, измеряемую просто как прибыль, а остальные либо принесут мало, либо даже потеряют деньги.
- Где бы вы сосредоточили свои инвестиции?
- Какой проект вы бы отменили?
Другим примером может быть сама архитектура программного обеспечения, где 80 % оптимизации приходится на устранение 20 % проблем.
Какие классы вы бы реорганизовали или удалили из своего проекта?
На чем бы вы сосредоточили свои усилия по оптимизации?
- Мне это понадобится?
- Сколько времени и усилий требуется от меня, чтобы поддерживать его?
- Насколько это усилие сопоставимо с той ценностью, которую я получаю от этой вещи?
В тот момент, когда вы поймете, что правило 80/20 универсально применимо, и в тот момент, когда вы определите относительную ценность вещей, которые вам небезразличны, вы заметите такое же распределение. Неважно, говорим ли мы о структуре организации, структуре команд, ценности проектов, сложности архитектур, деталях программного обеспечения, даже управлении с помощью таких инструментов, как JIRA, — просто подумайте, сколько возможностей у JIRA, которую вы на самом деле используете, и какие из них никогда не трогались.
Когда вы создаете диаграмму Парето и видите НЕСКОЛЬКО ЖИЗНЕННЫХ и длинный хвост ТРИВИАЛЬНОГО МНОЖЕСТВА, у вас может возникнуть неприятное осознание СТОИМОСТИ поддержания этого длинного хвоста. Ничто из того, что мы делаем, не приходит бесплатно.
Если вы постоянно покупаете новые вещи, у вас быстро кончатся либо место, либо деньги, либо время на усилия по обслуживанию горы вещей, которые у вас есть. Единственный способ убедиться, что вы не попали в ловушку, — это постоянно помнить об уроках минимализма; постоянно оценивать, где новый элемент находится на ВАШЕЙ диаграмме значений Парето.
Эмпиризм Минимализм Граф
Эвристика минимализма применима к разработке, где каждая новая функция, процесс, команда, продукт экспоненциально увеличивает сложность вашей среды.
Если вы будете продолжать добавлять, даже не принимая во внимание растущую сложность и стоимость обслуживания, вещи, которые уже устарели, вы быстро поймете, что ваша организация задушена этой искусственной сложностью.
Это граф эмпирического минимализма. Вы также можете думать об этом как о графике простоты и тестируемости. Он демонстрирует синергию простоты и эмпирического тестирования, и его можно использовать для оценки ваших методов работы.
На графике эмпирического минимализма вы хотите быть в правом верхнем углу, где зависимостей немного и они хорошо управляются, где программное обеспечение не слишком сложно, а дизайн достаточно прост, чтобы приспособиться к изменениям требований. Где процессы в организации адаптируются или позволяют поставлять ценное программное обеспечение.
Но вот проблема, энтропия всегда толкает нас в нижний левый угол, к красной зоне хаоса. И энтропия всегда работает против нас. Мы постоянно должны учитывать это при планировании, расстановке приоритетов и принятии решений. Нам нужно постоянно выбирать НЕ ДЕЛАТЬ вещи, которые толкают нас к хаосу. Я раскрою тему эмпиризма и полностью объясню график EM в другой статье.
Для тех, кто любит головоломки, у меня есть небольшой вызов. Попробуйте описать в комментариях, как процесс научного метода можно представить на этом графике.
Заточка ваших инструментов
Оптимизация способов работы и удаление ненужной работы из системы важнее, чем выполнение самой работы. Вы когда-нибудь видели плотника с тупыми инструментами? Заточка инструментов сводит к минимуму усилия.
Не случайно одна из самых успешных книг по разработке программного обеспечения «Прагматичный программист» выбрала для обложки тему деревообработки и оттачивания своего набора инструментов.
Не случайно 10-й принцип Agile-манифеста гласит: «Простота» — искусство максимизировать объем невыполненной работы — необходима. Может быть, без двойного отрицания было бы легче свернуть язык ;)
Практики и методологии, такие как бережливое производство, теория ограничений, экстремальное программирование, о которых я расскажу в будущих видеороликах, сосредоточены на устранении потерь. Все они основаны на минимализме. Нас пытаются затолкать в правый верхний угол графика минимализма эмпиризма, напрямую борясь с энтропией.
Каждая из них пытается решить задачу: заставить всех нас помнить об уравнении ценности, используя его для создания диаграммы ценности Парето, оставляя то, что способствует тому, что нас волнует, отфильтровывая длинный хвост и, что наиболее важно, делая это постоянно. .
СУХОЙ, ЯГНИ, ПОЦЕЛУЙ
Минимализм в разработке программного обеспечения — отличное практическое правило. Когда вы сочетаете это с некоторыми фундаментальными практиками экстремального программирования, например. простой дизайн, приемочное тестирование, разработка через тестирование, вы получаете хорошо известные принципы DRY или не повторяйтесь, YAGNI или вам это не понадобится, и KISS или сохраняйте простоту.
Из этих популярных принципов YAGNI, вероятно, наиболее непосредственно связан с идеей устранения и ограничения искусственной сложности.
Вам это не понадобится — фразу, которую мы все должны помнить при импульсивных покупках и при разработке программного обеспечения.
Это также правило, которое мы должны использовать в качестве активного фильтра при очистке и без того беспорядочного дизайна, организации со слишком большим количеством зависимостей или команды со слишком большим количеством историй в бэклоге.
Ценным наблюдением является то, что минимализм может и должен применяться ко всем направлениям разработки программного обеспечения: количество функций, дизайн указанных функций, документация, совместная работа, общение и так далее.
Критика
Один из критических замечаний, который я слышал об этих идеях, заключался в том, что кто-то указал на цену, которую вы должны заплатить, чтобы сначала узнать, что действительно важно для проекта или клиента, потому что у них не было четкого понимания цели. Другая критика заключалась в том, что после того, как вы знаете, какова ваша цель, требуется время, чтобы применить оценку к каждому рабочему элементу, чтобы навести порядок.
На второй вопрос можно ответить, просто спросив, расставляете ли вы уже приоритеты? Если вы этого не сделаете, возможно, вы тратите время впустую, делая неправильные вещи, и это более расточительно, чем двигаться так быстро, как вы можете в неправильном направлении. Время, необходимое для уборки, ускорит вашу будущую работу. Заточите свои инструменты.
На первый пункт прекрасно отвечает популярная цитата «если вы думаете, что обучение дорого стоит, попробуйте цену невежества». Если вы думаете, что узнать, что на самом деле ценно для вашего клиента, дороже, чем не понять, что именно ценно… что ж, я мало что могу сказать, что будет убедительно.
А если кто-то скажет, что все важно? Ну, если все важно, то ничего.
Выбор
Лидерство — это выбор 20% из 100 и придерживание их до тех пор, пока у вас не будет доказательств, что они либо работают, либо не работают. Это не пробовать все одновременно, надеясь, что что-то приживется. Это не лидерство, это расточительство, его хаотичность и шум.
Как выбрать? Запомните уравнение ценности и поймите, какова цель. Как только вы это поймете, используйте принцип Парето, чтобы привести вещи в порядок и привести их в соответствие с этой целью, и никогда не бойтесь ИЗБАВИТЬСЯ от вещей, которые не представляют ценности.
Если вы сомневаетесь, это всегда хороший первый шаг, чтобы подумать о минимализме, упрощении, устранении искусственной сложности. Часто с помощью одного только этого упражнения вы можете лучше понять, где вы находитесь, что следует сохранить и куда вам нужно идти.
И помните, те же самые идеи, которые вы используете для уборки своей комнаты, вы можете использовать и для уборки своего дизайна.
Краткое содержание
В век информации, в век контента, генерируемого ИИ, раздутых организаций, экспоненциально растущих затрат на содержание нашей цифровой цивилизации, где легче, чем когда-либо прежде, утонуть в шуме, важнее всего не то, что вы ДЕЛАЕТЕ. Самое важное — это то, что вы решили НЕ ДЕЛАТЬ.
Спасибо за вашу поддержку и увидимся в следующий раз!
Если вам нравится контент, поддержите меня на Patreon или с помощью Super Thank, или посетите и прочитайте мои статьи на Medium.
https://www.patreon.com/SoftwareMinimalist
https://medium.com/@SoftwareMinimalist