Гуманистическая декомпозиция работы

Гуманистическая декомпозиция работы

About me

Alexander Petrov (a.k.a Lysenko) @alexpetrov_rb

Humanist | Programmer | Sing, Play Sax & Guitar |

Love #Ruby, #Clojure, #Emacs

Since 2015 Senior Ruby / Rails / Erlang Developer at FunBox

2006 - 2014 Enterprise Java Developer / Trainer / Architect / Team Leader

Структура доклада

  • Суть гуманизма
  • Гуманистическая декомпозиция работы

Гуманизм

Эрих Фромм (23 марта 1900 - 18 марта 1980) Философ, гуманист, психоаналитик, писатель

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

Июнь 2019 - я открыл для себя его книги и мысли

это помогло преодолеть кризис самосознания и сформулировать идеи этой презентации

Антигуманистические заблуждения (1)

  • Человек от природы порочен, и только давление общества заставляет его сдерживать свои порывы
  • В частности, человек ленив, и его нужно заставлять работать, иначе он будет прокрастинировать
  • Работа занимает всё отведённое на неё время ("Закон Паркинсона", сформулированный для бюрократии, и не являющийся универсальным)

Антигуманистические заблуждения (2)

  • Человеком движут жажда материальных ценностей и эгоизм
  • Человек нуждается в подчинении и в том, чтобы ему подчинялись (Авторитаризм)
  • Человек не любит людей и стремится избегать взаимодействия с ними в процессе решения рабочих и жизненных задач

Гуманистические убеждения

  • При рождении человек не плох и не хорош
  • Он является частью природы, но отчужден от неё, обладает самосознанием и ослабленными инстинктами, осознаёт конечность жизни
  • Он осознаёт невозможность при жизни реализовать все потенциальные возможности (глубинная причина синдрома самозванца)
  • Он движим дихотомией жизни и смерти
  • Он должен решать вопрос существования: "Быть или не быть?", то есть искать смысл жизни

Вопрос существования: Прогрессивный ответ

  • Истинная любовь к себе, другим людям и живому
  • Свобода ДЛЯ самореализации: наполнение жизни смыслом через спонтанную творческую деятельность, которая происходит из внутреннего интереса, а не навязана внешними силами
  • Свобода ОТ зависимости: ощущение себя гражданином мира и независимой личностью
  • Радость бескорыстно отдавать
  • Борьба с желанием судить людей свысока и сравнивать себя с ними
  • Борьба с нарциссизмом и алчностью (нормальные качества только для детей)

Вопрос существования: Регрессивный ответ (1)

Неблагоприятные обстоятельства могут затруднить выбор прогрессивного ответа, и тогда…

  • Оргиастический ответ (отключение от действительности): алкоголь, наркотики, оргии, избыточный сон, виртуальная реальность в играх
  • Альтруизм: Отказ от свободы, своей личности и подчинение внешней отчужденной силе
  • Нарциссизм: себялюбие, а не истинная любовь к себе, восприятие людей вещами
  • Уподобление роботам: отсутствие независимого суждения

Вопрос существования: Регрессивный ответ (2)

  • Алчность: сверхпотребление вещей и людей
  • Стремление вернуться в утробу матери, то есть к состоянию небытия
  • Любовь к мертвому, а не живому
  • Враждебность: Разрушительность направленная на себя (депрессия) и/или на других
  • Симбиотическая связь с матерью | идеологической группой | родом | нацией | расой

Динамизм свободы выбора

Степень свободы выбора между добром (прогрессом) и злом (регрессом) динамически меняется в течение жизни:

  • Чем чаще выбираешь зло, тем сложнее выбрать добро, ибо сердце ожесточается

После определённого момента ты не свободен выбрать добро и становишься абсолютно злым

  • Чем чаще выбираешь добро, тем легче его выбирать

После определённого момента ты не свободен выбрать зло и становишься святым

Идеальный мир vs реальность

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

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

Уменьшение несовершенства

Стремление максимизировать совершенство не может привести к удовлетворяющему результату

Мне кажется что это стремление сродни алчности, которая не уталима по своей природе и ведёт к разочарованию и депрессии

Вместо этого стоит минимизировать степень несчастья / несовершенства и радоваться даже маленьким победам на этом пути

Вместо борьбы за увеличение мотивации сотрудников, борьба с демотивацией

Вместо борьбы за абсолютную чистоту кода, борьба с нечистотой тех частей, в которые вносятся изменения

Неврозы

Гуманистическая совесть - внутренний голос нашего Я, противоположность Авторитарной совести

Недостаточная реализация своих человеческих возможностей и братской любви вызывает необъяснимую тревогу и подавленность

Невроз - это один из механизмов гуманистической совести сигнализировать об этой проблеме

Если вовремя не распознать причину невроза, это может привести к клинической депрессии

Гуманистическая совесть также старается подавать сигналы посредством сновидений

Как снизить боль

Безусловный доход пока не является реальной возможностью в большинстве государств

Что может помочь в рамках реального мира снизить риск неврозов и депрессии:

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

Гуманистическая декомпозиция работы

Формирование заданий, комфортных для выполнения живыми, творческими, неравнодушными людьми, а не человеческими роботами

Стили декомпозиции

Стили декомпозиции работы лежат в континууме

ОТ Максимального дробления на атомарные задачи

ДО Отсутствия формального дробления и оценки

No Estimates - поставка работающих фич до осознания их необходимости стейкхолдерами и потребителями

Критика дробления на атомы

Антигуманистический подход, характерный для работы крупных капиталистических организаций, критикуемый в книге Эриха Фромма "Революция надежды" 1968

  • Подразумевается, что людям нужно платить за сделанную мелкую работу, которую они могут сделать не задумываясь о целостности и полезности результата
  • О целостности заботятся "Архитекторы" (авторитеты), которые знают, как все фичи поделить на атомы, чтобы обезличенные люди-роботы их выполняли

Критика No Estimates

При экстремальной гуманистичности, No Estimates может не сработать, если:

  • используются мейнстримовые технологии с посредственной продуктивностью
  • команды не состоят из "10X" программистов
  • стейкхолдеры нуждаются в ориентировочных сроках (B2B, B2C, Digital с нуждой в маркетинге и рекламе)

Гуманистическая декомпозиция

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

Свойства гуманистической декомпозиции (1)

  • Задача должна быть самодостаточной и целостной: создавая её решение в голове, не должно быть частей в других задачах, которые могли бы ключевым образом повлиять на решение
  • Задача не должна превышать 3-5 дней в оценке, чтобы иметь обозримый, сильно сцепленный скоуп и быть управляемой, то есть помещаться в голове

Свойства гуманистической декомпозиции (2)

Loose Coupling / High Cohesion

Слабая зависимость / Сильная сцепленность

Loose Coupling: зависимости между задачами должны быть минимальными

High Cohesion: сами задачи должны содержать сильно сцепленные наборы функциональности, чтобы ничего нельзя было выбросить, не потеряв целостность размышлений о задаче

Верификация декомпозиции (1)

Контрольные вопросы к каждой задаче:

  • Можно ли о задаче думать целостно в изоляции от других задач?
  • Можно ли вынести из задачи что-то лишнее, так чтобы при этом не разрушилась целостность?
  • Не является ли задача слишком маленькой, не является ли она частью какой-то большей задачи, чтобы та была целостной?

Верификация декомпозиции (2)

Контрольные вопросы к декомпозиции в целом:

  • Нет ли между задачами слишком сильных зависимостей или неявных зависимостей, в особенности если они даются разным исполнителям?
  • Являются ли все задачи управляемыми по объему (оценка не превышает 3 - 5 дней)?
  • Не слишком ли мелко разбиты задачи и не нарушена ли их целостность?

Примеры нарушения целостности задачи

  • Разделение задач по созданию или изменению модели и задач, в которых реализуются части, которые этой моделью пользуются, будь то пользовательский интерфейс или бизнес-логика
  • Разделение задач внутри границ единого неделимого алгоритма

Стратегии декомпозиции

Для получения декомпозиций, удовлетворяющих описанным критериям, могут помочь следующие стратегии

Отказ от декомпозиции

Если фича недостаточно велика и вернхеуровнево оценена уже в 3 - 5 дней, то, возможно, дальнейшее деление не даст никаких преимуществ

Делегирование исполнителю

Лучше всего делегировать декомпозицию исполнителю задачи

У него максимальная мотивация разобраться в требованиях, обеспечить себе и коллегам комфортные для выполнения задачи

Отказ от детального проектирования

Велик риск ошибки детального проектирования во время декомпозиции

Детальному проектированию место при непосредственной работе над фичей или прототипировании

Во время декомпозиции нужно от куска "мрамора" (фичи) отделять части, границы которых очевидны при предварительном проектировании

Поэтапная декомпозиция

Очень большие бизнес-/фичи/ или наборы связанных фич стоит декомпозировать поэтапно

Это соотносится с принципом откладывания решений до момента, когда их необходимо принимать, из Бережливого Производства

Совет. При рассмотрении задач удобно оценивать степень неопределённости, содержащуюся в них, например, бинарно: высокая или низкая

Выделение смыслового ядра (1)

Выбрать основного исполнителя под смысловое ядро фичи и делегировать ему декомпозицию

Делегировать второстепенные механизмы другим членам команды, чтобы разгрузить от них мозг основного исполнителя

Выделение смыслового ядра (2)

Важно обеспечить минимальную зависимость (связность) между работами этих разработчиков

  • Зависимость через наличие поля или группы полей в модели - хорошая, ибо поля модели имеют более стабильную природу
  • Зависимость от API сервисного объекта уже менее хороша для разделения, она может служить признаком ошибки декомпозиции

Выделение смыслового ядра (3)

По Фреду Бруксу, это напоминает метафору работы команды как хирурга и его ассистентов

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

Выделение прототипа (1)

Если после выделения смыслового ядра оно остаётся достаточно большим и неуправляемым по трудозатратам,

и не очевидно, как разделить его на подзадачи управляемого размера,

можно выделить несколько дней на прототипирование и остальное время оставить на реализацию продуктовой версии фичи

Выделение прототипа (2)

После прототипирования может возникнуть идея разделения на подзадачи

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

Выделение прототипа (3)

По Фреду Бруксу вторая версия системы всегда лучше первой

Прототип это первая версия системы в миниатюре

Нас не парализует необходимость сделать всё сразу и не ниже уровня нашего внутреннего стандарта

Прототип идёт в корзину, но позволяет реализовать вторую версию как следует, ибо мозг потренировался в безопасном режиме

Книги

  • Эрих Фромм все книги
  • Том ДеМарко и Тимоти Листер "Человеческий фактор"
  • Фред Брукс "Мифический человеко-месяц" и другие его книги
  • Мери и Том Поппендик "Бережливое производство программного обеспечения"
  • Дейв Томас и Энди Хант "Программист прагматик"

Подкасты и доклады

Подлодка №132 - Олег Сорока "Дисфункции Организаций"

Подлодка №126 - Артем Овечкин "Осознанность"

Подлодка №98 - Алексей Пименов "Kanban"

RailsConf 2019 - David Heinemeier Hansson "Opening Keynote"

Благодарности

FunBox - за прекрасную работу на Ruby, дружную профессиональную команду и ценнейший опыт

Вопросы и дополнения

  • А что так можно было? :)
  • А это вообще законно? :)

Прошу подсказать мне:

  • стратегии гуманистической декомпозиции из вашего опыта
  • в какой книге я мог раньше прочитать, усвоить и забыть контрольные вопросы для верификации декомпозиции? :)

Спасибо за внимание

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Created by Alexander Petrov (a.k.a Lysenko).