Введите зависимости вашего проекта и позвольте python выяснить наиболее эффективный способ их решения.

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

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

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

Ранжирование ответов: «Если оставить в стороне все ограничения, что самое ценное, над чем мы могли бы работать?»

Последовательность ответов: «С учетом наших приоритетов и ограничений, над чем мы можем работать наиболее эффективно?»

Разделение приоритезации на ранжирование и последовательность отделяет мыслящую часть проблемы (ранжирование) от механистической части проблемы (последовательность). В первом тайме нет серебряной пули - всегда сложно решить, что является самым важным. Но, к счастью для нас, последовательность действий - это предсказуемый процесс, который следует последовательному набору правил.

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

После слишком долгого ручного упорядочивания и переупорядочения списков функций я решил автоматизировать процесс с помощью простого скрипта Python.

Как это работает

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

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

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

После завершения сценария он выводит результаты в такую ​​таблицу.

Вы увидите два новых столбца. sorted_priority - оптимальный порядок работы над этими функциями с учетом их приоритетов и зависимостей. priority_change отслеживает, насколько изменился порядок функций.

Запуск скрипта

Предпосылки:

  • Рабочая установка Python 3
  • Установлены пакеты numpy и pandas
  • Базовое понимание того, как перемещаться по компьютеру с помощью командной строки.

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

Вариант два (я надеюсь, вы примете его) - потратить час или два на изучение Python и командной строки. Независимо от вашей роли, наличие даже базовых технических навыков принесет большие дивиденды в долгосрочной перспективе. Быстрый поиск в Google найдет множество учебных ресурсов. Похоже, у Django Girls хороший учебник, но есть и другие. Не стесняйтесь выбрать тот, который соответствует вашему стилю обучения.

Теперь, когда базовые знания утеряны, вот как запустить скрипт:

1. Сохраните приведенный ниже код в файл с понятным вам именем (я выбрал prioritize.py).

2. Используя введенный выше формат CSV, создайте CSV в той же папке, что и скрипт python (я назвал minesource_features.csv). В этом CSV перечислите функции, приоритеты и зависимости, которые вы хотите упорядочить.

3. Откройте свой терминал и используйте cd, чтобы перейти к папке, в которую вы поместили скрипт python и входной CSV.

4. Запустите сценарий, используя python3 YOUR_SCRIPT_FILENAME --source YOUR_INPUT_CSV_FILENAME

5. Наслаждайтесь!

По умолчанию сценарий выводит результаты обратно в командную строку. Если вместо этого вы хотите распечатать вывод в другой файл CSV, добавьте к команде флаг --output и имя файла назначения (например: python prioritize.py --source source_features.csv --output sequenced_features.csv)

Удачной расстановки приоритетов!

Сценарий

Примечание: это упрощенная модель! Он не учитывает некоторые внутренние стратегии, такие как разное время разработки и распараллеливание работы. Если результат не совсем соответствует тому, что вы знаете, возможно, измените его! Как всегда, делайте то, что имеет для вас смысл.

Если вы хотите, чтобы рука обдумывала вашу ситуацию, оставьте комментарий ниже или напишите мне в twitter.

Эта история опубликована в The Startup, крупнейшем предпринимательском издании Medium, за которым следят +401 714 человек.

Подпишитесь, чтобы получать наши главные новости здесь.