Комментарии 24
Кстати, у вас задачи могут рваться?
Например:
у Алисы задача А:3дня и задача С:10 дней
у Боба Б:2 дня, но от неё зависит А
Алиса будет:
1. 2 дня балду пинать, а потом возмется за А
2. будет делать 2 дня С, потом А, потом С
3. Сделает С целиком, потом возьмется за А
Ну и я бы получив граф задач ходил не по нему, а по исполнителям/квантам времени(далее — датам) — в конце концов их надо работой загрузить. (неявные зависимости в этом случае не нужны)
1. Отсортировать пары исполнитель/дата по дате
2. Для текущей верхней пары выбрать задачи исполнителя без входящих связей
3. Назначить на дату самую приоритетную
4. Сократить ей время на день
5. Если задача завершилась, убрать из графа
6 GOTO 2 если граф не пуст.
Как вариант условие выхода — достижение горизонта планирования. Тогда можно отвечать на вопрос «а что вы успеете за месяц»
Разрыв задачи — интересная штука. На практике, правда, редко когда так делаем, т.к. уходит дополнительное время на переключения, да и сами задачи стараемся короче формулировать. Поэтому сильно про такую штуку не думал.
В вашем алгоритме надо еще как-то отслеживать занятость исполнителя и временные сроки. Кажется, это довольно все усложнит.
Занятость исполнителя надо отслеживать в любом случае. Мы же ради этого алгоритм делаем. У меня описание конечно под разрыв задач сделано.
Какие сроки нужно отслеживать? (да, мой алгоритм только под явные связи начало — окончание и задачи начинать "как можно раньше" под экзотику нужно доделывать, но кажется не сильно усложнит)
Если задачи не рвем, то можно по исполнителям сделать иначе:
- Собираем список исполнителей указываем для каждого дату, когда он свободен (сегодня по умолчанию, если он сейчас занят на задаче — окончание задачи +1)
- Отсортировать исполнителей по дате освобождения
- для верхнего исполнителя выбрать задачи без входящих связей (здесь если надо ограничения "не ранее" для задачи)
1 если таких нет, то дата освобождения сдвигается на день (квант) го 2
2 Назначить самую приоритетную задачу - сдвинуть исполнителю дату освобождения (здесь праздники, отпуска и тд)
- Исключить назначенную задачу из графа (по сути — обновить счетчики входящих у связанных с ней задач)
- го 3
По сути работаем с 3 объектами:
- Граф задач с явными связями и счетчиком входящих для каждой задачи
- список исполнителей с датами освобождения
- Список задач с 0 входящих. Этот список один раз строится по графу, а в процессе работы из него исключаются назначенные задачи и туда просто переносятся задачи у которых счетчик обнулился на шаге 5, без дополнительных обходов графа.
Сетевое планирование и метод критического пути. Насколько помню, Мстислав Всеволодович Келдыш по заказу Госплана.
Действительно, для полноты решения также надо выводить критический путь и добавить инструменты выставления неточных сроков. Последнее, кстати, в каком-то виде есть в Omniplan, там сроки вех вычисляются с помощью симуляции Монте-Карло.
Интересная тема про поздние сроки (запас времени для окончания работ по задаче) и в целом понятие резерва, такого я нигде еще не видел.
Вообще меня это вдохновило попробовать сделать не Ганта для работы с проектом, а сетевые графики из системы в ролике.
Интересно, система Голдратта наша реализацию в каком-нибудь ПО?
Кирилл, со сравнению с 2017 годом, сейчас BIPULSE — почти не имеет проблем, однако для эффективного применения требует использования Метода управления «Pulse Management» pulsemanagement.org (цикл публикаций на Хабре habr.com/ru/post/462423)
Метод учитывает особенности применения CCPM для «реальной жизни» ИТ-проектов.
Проблема внедрения CCPM не в софте, а в головах. Так как требуется перестройка способа мышления и принятия решений.
Но то что софт с хреновым юзабилити проблемы эти усугубляет на порядок — это тоже факт, подтвержденный опытом. Люди и так сопротивляются изменению устоявшейся практики, а тут вы им вгружаете дополнительные не самые простые инструменты…
Простой пример — циркулярный опрос команды «сколько осталось времени до завершения твоей текущей задачи?». Это в BIPULSE как реализовано? Есть простое приложение для iOS, чтобы оно мне напомнило в конце дня записать мои свежие оценки по завершению в простейшую форму или прямо из тайм-трекера отправить? Зуб даю, что нет, зато на скриншоте видно «План выполнен на 88%». Смекалка подсказывает что исполнитель по прежнему сообщает не «сколько осталось», а «сколько сделано». Пичалька.
1. Собираем всех на «летучку»
2. Открываем «План / Оперативный / Задачи в работе» (там все факты есть сколько потратили времени и сколько хотели)
3. Идем по каждой задаче и задаём вопросы.
Если команда работает асинхронно и проект идет по CCPM (важно), и «летучку » не провести, то:
1. У исполнителя как правило есть своя задача «в работе» и карточка на неё уже открыта
2. Он тыкает в «осталось дней» и вводит значение +таб. Всё.
3. Мы на План/Тактический видим отклонение проекта.
Но этот метод плох тем, что мы не можем ускорить исполнение «в моменте». Так как на живой вопрос, мы получаем живой ответ и можем сразу предпринять корректирующие действия. Я соглашусь что дополнительный робот-пинатель будет хорошо, но его отсутствие пока это ни разу не являлось препятствием к внедрению.
>>Люди и так сопротивляются изменению устоявшейся практики, а тут вы им вгружаете дополнительные не самые простые инструменты…
Классное замечание! Мы это в версии 7.0, которая вышла в апреле этого года, преодолели! И теперь для исполнителей есть профили «исполнитель» — для тех кто «могу копать, могу не копать» и «инженер» — доски, списки задач и целей. А все стальное только для руководителя
Это если айтишники. А если проект из реального мира, под рукой исполнителя только телефон, как правило. Это не моя блажь, с мобильным интерфейсом, к сожалению, а реальная боль. И исходя опять же из опыта, если «управляемым» дать удобный мобильный интерфейс для отчетности, довольно большое количество проблем исчезает. Сам удивился, но факт. Народ практически саботировал внедрение таск-трекера, сделал им простейший PWA с тремя полями и двумя кнопками + напоминалкой, пользоваться стали вообще без понуканий. Мелочь, но может оказаться важной.
(прошло 2 года) Теперь есть Телеграм-бот. Для монтажников и бригадиров есть команда "Указать сколько дней надо для завершения задачи".
Для ГИП-ов , когда побывал на площадке потом заполнил статус - есть в веб-версии "заполнение отчёта" чтобы массово заполнить состояние по задачам.
Для упрощения эргономики - мы добавили "однопроектный режим" - чтобы было "как в других трекерах" и настройку словаря под сферу применения.
По прошествии времени оказывается что, основной клиент которому нужны "проекты в срок или раньше" это строители (не все), проектировщики, конструктора. В ИТ-сфере, к сожалению, принято продалбывать сроки или "закрывать проекты печенью".
Здорово, что продолжает работы в этом направлении! С наступившим (к слову)!
ИТ оно, ведь, разное бывает. Спустя два года мне все также актуально понимать на завершение каких проектов в рамках полугодия можно надеяться. Сейчас, правда, начинаю больше думать про понятное закладывание рисков в сроки. ИМХО в ИТ сроки часто пробалтываются именно из-за неучтенных рисков.
Риски в сроки нужно закладывать правильно, иначе сработает Закон Паркинсона. Способ резервирования и контроля я в Методе рассказываю.
А на всякие вопросы "когда закончим" система умеет отвечать. Даже если её поставить "поверх другой системы". Хотя если проектов до 5 и это ИТ, то всё в эксельке можно посчитать, если данные об объемах есть на основе внесения трёх показателей: текущая дата, всего работы, сделано работы. (остальные копируются с прошлых ячеек)
Прошёл еще +1 год, в 2023 году появилась функция "Заполнить отчёт", чтобы быстро пробежаться по всем и указать какой физический объем выполнен и сколько дней еще нужно. Как раз для обзвона всех и отмечания прогресса.
Также мы завершили все работы с упаковкой в коробочную версию (вот буквально бинарник, на KPHP) и есть поставка на AstraLinux. И выпустили версию для рабочего стола "BIPULSE. АРМ Планировщик", как замену MS Project Pro.
Из недавних примеров изменений на основе запроса: добавили опцию режима ручного планирования задач и задание режима расчета буфера чисто по CCPM и его размера вместо «адаптивного» по Pulse Management.
Алгоритм планирования задач на TypeScript. Теория графов наконец-то пригодилась