Хорошие программисты умеют прогнозировать. Часто они могут приблизительно предсказать, сколько времени потребуется на выполнение конкретной задачи программирования. Они также могут предсказать, когда и в какой степени проект получит окупаемость от конкретных технических инвестиций.
К сожалению, развитие этого навыка не гарантировано по мере того, как мы набираемся опыта в программировании. В статье Superforecasters авторы отмечают, что многие опытные люди на удивление плохо умеют делать прогнозы, и что время и опыт часто не делают нас лучше.
Они представляют собой схему того, как совершенствоваться в качестве прогнозиста, и с тех пор, как я начал свою новую работу, я использую эту схему. Я заметил небольшое, но измеримое улучшение своих способностей к прогнозированию, и я хотел бы поделиться особенностями того, как я использовал эту схему для этого. Я разделю объяснение на две части: во-первых, я кратко объясню простую математику, лежащую в основе структуры, представленной в Superforecasters. Затем я расскажу, как я использую простую электронную таблицу Google и несколько напоминаний, чтобы отслеживать свои успехи в этой структуре.
Математическое измерение качества прогнозов
Прогнозы в этой структуре представляют собой вероятностные предсказания того, что определенное событие произойдет к определенному времени. Например, я мог бы сказать:
Я на 75% уверен, что завершу задание X к концу недели.
Или, если взять пример, связанный с рентабельностью инвестиций:
Я на 85% уверен, что рефакторинг кода в этом файле облегчит будущие изменения продукта в течение 3 месяцев.
Если прогнозируемое событие происходит, мы присваиваем этому событию 1
. Если этого не происходит, мы присваиваем ему 0
. Как только мы это сделаем, определить, был ли конкретный прогноз хорошим, легко: мы просто берем квадрат разницы между нашим вероятностным прогнозом и значением, которое мы присвоили событию после истечения крайнего срока.
Продолжая приведенный выше пример задачи программирования: если я действительно не выполнил задачу к концу недели, значение качества, которое мы дадим прогнозу, будет следующим:
Здесь мы берем в основном квадрат ошибки нашего прогноза, поэтому меньшее значение означает, что наш прогноз на самом деле был ближе к истине.
Когда мы делаем N
прогнозы, мы можем просто взять среднее значение суммы квадратов ошибок наших прогнозов:
Это называется «оценкой Брайера».
Моя таблица + напоминания
Я использую электронную таблицу, чтобы применить эту структуру двумя способами. Во-первых, это позволяет мне легко вводить прогнозы и рассчитывать скользящий балл на основе моих последних 10 прогнозов. Я также использую его, чтобы построить график моей оценки по Брайеру с течением времени. В этом разделе я быстро расскажу, как эти вещи работают.
Электронная таблица выглядит как эта таблица:
Несколько быстрых заметок о том, как это работает. TRUE
и FALSE
в Google Таблицах кодируются как 1
и 0
. Формула для столбца «Ошибка прогноза в квадрате» представляет собой простое вычитание. Кроме того, как я упоминал ранее, я отслеживаю скользящую оценку Brier последних 10 прогнозов в столбце «Оценка Brier». У меня также есть некоторые настройки условного стиля, чтобы окрасить строку в зеленый цвет, если пришло время заполнить фактический результат для более долгосрочного прогноза:
Конечно, построить график этого довольно просто. Вот как выглядит мой:
Я также установил несколько простых ежедневных напоминаний о перерывах в работе, чтобы мне было необходимо обновлять эту таблицу. Одно напоминание говорит мне делать прогнозы в начале дня, другое говорит мне записывать, были ли эти прогнозы точными в конце дня:
Этот фреймворк, электронная таблица и график вместе дают ясное представление о том, действительно ли я улучшаюсь как прогнозист / программист, и заставляют задуматься над тем, делаю ли я одни и те же ошибки снова и снова (недавно я добавил столбец с примечаниями к каждому из них. предсказание, чтобы я мог записать, почему был хороший или плохой прогноз). Я бы порекомендовал его всем, кто хочет совершенствоваться как прогнозист и как программист.
Примечания:
- Когда я был менеджером по маркетингу, я также адаптировал фреймворк для работы в контексте управления продуктами.
Первоначально опубликовано на https://www.philosophicalhacker.com 19 октября 2020 г.