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

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

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

Математическое измерение качества прогнозов

Прогнозы в этой структуре представляют собой вероятностные предсказания того, что определенное событие произойдет к определенному времени. Например, я мог бы сказать:

Я на 75% уверен, что завершу задание X к концу недели.

Или, если взять пример, связанный с рентабельностью инвестиций:

Я на 85% уверен, что рефакторинг кода в этом файле облегчит будущие изменения продукта в течение 3 месяцев.

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

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

Здесь мы берем в основном квадрат ошибки нашего прогноза, поэтому меньшее значение означает, что наш прогноз на самом деле был ближе к истине.

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

Это называется «оценкой Брайера».

Моя таблица + напоминания

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

Электронная таблица выглядит как эта таблица:

Несколько быстрых заметок о том, как это работает. TRUE и FALSE в Google Таблицах кодируются как 1 и 0. Формула для столбца «Ошибка прогноза в квадрате» представляет собой простое вычитание. Кроме того, как я упоминал ранее, я отслеживаю скользящую оценку Brier последних 10 прогнозов в столбце «Оценка Brier». У меня также есть некоторые настройки условного стиля, чтобы окрасить строку в зеленый цвет, если пришло время заполнить фактический результат для более долгосрочного прогноза:

Конечно, построить график этого довольно просто. Вот как выглядит мой:

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

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

Примечания:

  1. Когда я был менеджером по маркетингу, я также адаптировал фреймворк для работы в контексте управления продуктами.

Первоначально опубликовано на https://www.philosophicalhacker.com 19 октября 2020 г.