Время

Заметки об оценке

* * *

Что значит оценить?

Всякое действие направленное на снижение неопределенности называется измерением1. Между оценкой и измерением невидимая грань: часто разница лишь в точности предоставляемого результата измерения. Самый точный способ измерить сколько времени что-то займет — включить секундомер и сделать дело.

* * *

Модель «Зануда»

Что делает компьютер? Безошибочно и буквально следует вашим желаниям.

* * *

Модель «Космонавт»

Какую точность оценки можно ожидать? Если длина среднего человеческого шага где-то 1 метр, то современный процессор с тактовой частотой 4 ГГц совершит почти 4 миллиарда шагов за 1 секунду, то есть «пройдёт» 4 миллиона километров. За 45 секунд вы сможете пешком добраться до Марса (около 175 миллионов километров от Земли), за 15 секунд совершить 1500 кругосветных путешествий, прогулка до Луны займет лишь 1/10 секунды. Какую точность оценки мы ожидаем услышать от человека, который по долгу службы вынужден существовать в этом бескрайнем пространстве, что без должной заботы само по себе2 превращается в вязкое непроходимое болото для него самого и коллег? Какую степень уверенности и привлекательности должно излучать лицо «ресурса»3, чтобы озвучиваемая точность оценки вызывала доверие инвестора?

* * *

Слабая позиция

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

* * *

Без удовольствия

Если вы программируете не удовольствия ради, то скорее всего делаете это в интересах инвестора5. Следовательно, нечего даже и шевелиться без оценки ожидаемой окупаемости (ROI). Естественно с учетом стоимости денег (NPV).

* * *

Команда

Игра внутри организации разработчика не обязательно кооперативная, а сам процесс разработки можно моделировать в терминах теории игр. Равно как и процесс финансирования проекта.

* * *

Модель «Дикари»6

Вы прокладываете маршрут пешего похода по Калифорнийскому побережью из точки А в точку Б на карте. Глядя с высоты МКС на свой маршрут, вы будете видеть ровную стройную линию предстоящего пути. Стоит спуститься на высоту птичьего полета и вам станут заметны некоторые серьезные оттяпанности береговой линии. Её первоначальная гладкость уступит место извилистому живому пейзажу, проступят непроходимые участки и карта в целом подгрузит множество новых деталей, которые не были заметны с высоты первой космической скорости. Позумив еще чуть-чуть, вы обнаружите, что не учли сильные перепады высот ландшафта некоторых из участков пути, а это значит, что вам понадобится кое-какое снаряжение для их преодоления. Оно в свою очередь увеличит вес ваших рюкзаков, а значит уменьшит скорость прохождения всей дистанции. Измерить точно, сколько времени займет путь, не исследовав его вдоль и поперек — довольно сложно. Даже имея релевантный опыт прокладки маршрутов в похожих обстоятельствах в одной и той же географической широте.

* * *

Модель «Победители»

Вы один из нескольких десятков победителей дубайского спортлото. Шейх мультимиллиардер с нескрываемым удовольствием и за просто так готов оплатить все, что вы сможете вынести из местного бесконечного молла за 15 минут. Каждый из счастливчиков может позволить себе взять что угодно на будущее. Никто не станет останавливать ваши любые порывы к стяжательству. Одному нужен новенький шмот для любимой баси. Другая думает о своем дедушке и будет рада найти противопролежневый матрас и грелку. Вон тому лысому в бобочке нужна плойка и телевизор. У всех счастливчиков существует возможность договориться о стратегии и тактиках, которые позволят извлечь максимально возможную пользу из этих 15 минут уникального шопинга. Стоит ли им всем быть каждому самому по себе? Какие именно процессы, о которых возможно договориться, приведут к оптимальному всеобщему благу? Можно ли после этих 15 минут вместе остаться в теплых и дружеских отношениях чтобы еще долгое время после совершать совместные набеги на прилавки?

* * *

Модель «Война и мир»7

«Маркетолог спрашивает программиста: в чём сложность поддержки большого проекта? Ну представь, что ты писатель и поддерживаешь проект "Война и мир". У тебя ТЗ — написать главу как Наташа Ростова гуляла под дождём по парку. Ты пишешь "шёл дождь", сохраняешь, вылетает сообщение об ошибке "Наташа Ростова умерла, продолжение невозможно". Почему умерла? Начинаешь разбираться. Выясняется, что у Пьера Безухова скользкие туфли, он упал, его пистолет ударился о землю и выстрелил в столб, а пуля от столба срикошетила в Наташу. Что делать? Зарядить пистолет холостыми? Поменять туфли? Решили убрать столб. Получаем сообщение "Поручик Ржевский умер." Выясняется, что он в следующей главе облокачивается о столб, которого уже нет...»

* * *

Жук в коробке

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

Услышав слово «оценка», мы часто наделяем его каким-то своим личным смыслом по привычке. Думаем, что собеседник имеет ввиду ровно то же самое, что и мы. Часто это не так. Важно понять, в самом ли деле человека интересует время в его вопросе. Стив Макконнелл8, например, предлагает различать прогноз (или просто оценка, estimate), цель (target, deadline) и обязательство (commitment).

Если инициатор вопроса в командно-административном тоне требует точного ответа для галочки, то чаще всего ему неизвестны производственные особенности озвученные выше. Может быть и известны, тогда, скорее всего, вы имеете дело с попыткой смещения ответственности. Вам необходим если не абсолютный, то достаточный уровень доверия к собственной оценке. Это все равно что обещать через две недели ясное безоблачное небо. Если вы в Аризоне — пожалуйста, Фареры — бог вам в помощь. Использовать оценку в качестве инструмента давления — один из самых действенных способов подорвать мораль всех участников игры.

Часто пункт назначения — цель или дедлайн — уже известны. Если выставка проходит с 23 по 30 марта, то необходимость набрать классы вполне очевидна. Если встреча с новыми потенциальными инвесторами назначена на какое-то конкретное число, то демо-версия должна содержать нужные штуки к дате представления. Если существует сложная зависимость графиков использования уникальных ресурсов вроде магнито-резонансного томографа в больнице, частного самолета директора по деградации, производственных цехов на Аляске, то провороненный слот в расписании может оказаться бедой. А может и не оказаться. Во всех этих случаях важна реальная точность прогноза, которую довольно сложно достичь. Поэтому чаще всего, чтобы хоть как-то компенсировать неопределенность, гнут железный треугольник. Вопрос меняет свою структуру превращаясь из «сколько времени это займет» во «что ещё можно сделать к этому времени».

Если через год после релиза фичи X ожидается 600 новых пользователей ($1 стоит услуга для 1 человека), а через месяц работы над фичей Y ожидается лишь 50, то даже такая грубая оценка позволит принять более взвешенное решение. Пусть 600 постоянных пользователей в абсолютном значении и больше 50, однако «сарафан» из последних может в значительной степени скорректировать планы развития программы, когда спустя два месяца её эксплуатации появится уже 1000 новых пользователей, но с предпочтениями, о которых ранее даже не приходилось задумываться, что может отменить разработку фичи X полностью. В таком случае, работа в течение года в погоне за количеством может быть не самой лучшей инвестицией. А может быть и хорошей, если работа одного человека в течение года, будет дешевле работы нескольких групп в течение того же месяца. Именно для того, чтобы помогать делать правильные решения в условиях повышенной неопределенности, и нужна оценка9.

* * *

Краткая история рождения взаимопонимания

Не существует человеческого эго, личности. Сознание — это техническое средство, помогающее нам выживать, результат работы эволюции. Именно через эго мы воспринимаем и познаём окружающий мир. Фактически это устройство, которое создаёт виртуальную реальность, которую мы называем «действительность», помещает в неё само себя и даёт нам иллюзию того, что мы являемся агентами, живущими и действующими в этой реальности. Никто не говорил, что объективной реальности не существует, просто-напросто у нас есть своя, адаптированная версия оной, псевдо-реальность, виртуальная реальность. Наши тактильные ощущения, звуки, запахи, цвета, вкус — всё эти лишь порождение нашего архи-сложного головного мозга. Посему меня, как какой-то уникальной личности, божественной искры во враждебном мире, вечной души или бессмертного странствующего между перерождениями духа не существует. Есть просто динамическая система, сформированная в результате целой череды событий, начавшейся еще со времён большого взрыва. Пожалуй, это есть хорошие новости. Я никто. Меня нет. Это великолепно! Ведь это уничтожает границу между мной и всем остальным. Я и есть всё остальное, потому что меня нету.

— Томас Метцингер. «Эго туннель»


1

Дуглас Хаббард. Как измерить все, что угодно.

2

https://en.wikipedia.org/wiki/Software_rot

3

Есть много людей, для которых это и подобные определения — не ирония вовсе.

4

Customer collaboration over contract negotiation. https://agilemanifesto.org/

5

Здесь инвестор и программист в широком смысле этих слов. Агенты экономических взаимоотношений. Можно быть самому себе инвестором и использовать все текущие сбережения для того чтобы создать что-то такое, что в будущем не только окупится, но и будет иметь большую ценность для многих. Для одного $500.000 первого раунда это игра ва-банк, для другого всего лишь вошедшее в привычку изменение циферек в компьютере после ежегодного прокручивания наследства на финансовых рынках. https://neal.fun/printing-money/

6

https://www.quora.com/Why-are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3/answer/Michael-Wolfe

7

RSDN

8

Steve McConnell, Software Estimation: Demystifying the Black Art.

9

Responding to change over following a plan. https://agilemanifesto.org/

10

Рэндольф Несси. Хорошие плохие чувства.