?

Log in

No account? Create an account
November 2016   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
cartoon

Инструмент планирования - notepad

Posted on 2011.01.05 at 00:57
Tags:
"- Многих интересует вопрос - какой САПР вы применяли для создания великолепного Cray-1? - спросили Крэя.
- Помню, я использовал карандаш третьего номера и разлинованную квадратной сеткой бумагу.
- Да, но ведь этого мало... - растерялся собеседник.
- Да, чуть не забыл, это важно. Очень помогает писать на оборотной стороне бумаги, чтобы линии разметки не доминировали в чертеже."
?

Какой же САПР подойдет для разработки планов? Под "планом" я имею в виду не невнятную херню для "профессионального" создания впечатления о факте проведенной менеджерской работы, нет.

Речь, конечно же, о _настоящем_ плане. О том, который делается не для галки, не для того, чтобы впечатлить руководство или инвесторов. Который делается не "потому, что так правильно", а для работы - чтобы самому понимать, что, когда, и зачем будет делаться. О плане, который не уплывет при малейшем изменении обстоятельств. Том, который реально _выполнятся_.


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

Если нет - полюбому читайте дальше, все понятно станет. Пример я выбрал доступный.

Суть "декларативного планирования" в том, что ваш план состоит только из событий (целей, майлстонов), и временных связей между ними. И критерии наступления событий-целей вы должны расписывать подробно. А вот давать названия действиям-задачам вы, увы, не можете. При всем желании. Вот так, или никак. Именно это позволит вам при планировании не скатиться к научной фантастике. Однако, мысль о том, что любая "задача" задается парой событий "предусловие - постусловие" - должна греть вам душу.

Итак, к делу. Что, собственно, сподвигло меня на написание поста. Мне удалось придумать более-менее годную текстовую [вроде вики] разметку для описания декларативного плана. Я пытался сделать это давно, уже больше года. И наконец, у меня получилось.

Чем это хорошо, и зачем пытаться?
1) Оно нормально кладется в контроль версий, со всеми вытекающими. Например, удобно смотреть диффы. И разницу с "бэйзлайном" - на халаву.
2) Можно применять обкатанные программерские навыки работы с кодом. Например, разбить план на группу файлов-модулей, и работать над ним командой.
3) Его можно разобрать самописной тулзой, и что-нибудь с ним сделать. Например, преобразовать в другой формат, или же - "зашедулить" его, превратив в конкретные даты.

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

Итак, к делу. Наш план состоит из событий-целей. Как выглядит цель? Как чеклист. Набор пунктов, которые вы должны проверить, чтобы понять, что цель - достигнута.

|Закуплены продукты к новогоднему столу
|[] Масло 
|[] Икра красная, не имитация
|[] Белый хлеб
|[] Водка


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

Но, допустим, водка у нас продается в другом магазине, и он у нас ближе к дому. Сначала мы зайдем в него. Мы так решили. Что это означает? Что у нас в плане появилась временная связь. Мы отразим это так:

|Закуплены продукты к новогоднему столу
|[] Масло 
|[] Икра красная, не имитация
|[] Белый хлеб
|<-
   |[] Водка


Или так:

|Закуплено спиртное
|[] Водка
=>
|Закуплены прочие продукты
|[] Масло 
|[] Икра красная, не имитация
|[] Белый хлеб


Или так:

|Закуплено спиртное
|[] Водка
|->
   |Закуплены прочие продукты
   |[] Масло 
   |[] Икра красная, не имитация
   |[] Белый хлеб


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

|Закуплены продукты к новогоднему столу
|[] Масло 
|[] Икра красная, не имитация
|<-
   |[] Белый хлеб
|<-
   |[] Водка


Вот. В какой же из магазинов мы пойдем сначала - в хлебный, или в винный? А план этого не показывает. Он говорит только лишь, что мы за маслом с икрой пойдем в последнюю очередь. И если этот магазин будет закрыт, или деньги внезапно кончатся - то не судьба. Но главное мы купили, не так-ли? Суровый у нас новый год, правда? :)

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

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

И кроме того, вы отметите очевидную неполноту этого плана. "Лажа какая-то", скажете вы, "ну кто же так встречает новый год?!"

Зрите в корень, друзья. К водке, очевидно, пропущены сало, и черный хлеб. :) Гы-гы :)

Но главное в другом. Главное в том, что глядя на такой план, вы понимаете, что план - говно. Это потому, что я расписал вам его в терминах критериев достижения целей. И именно поэтому, а не почему-либо другому, вы можете его критиковать. А исполнитель - выполнить.

А вот если бы я сделал это в терминах действий, как Gantt-chart какой-нибудь - хрена лысого вы бы это поняли. И кроме того, я бы не оставил исполнителю свободы - идти в супермаркет, или в три гребаных магазина.

Преимущества декларативного планирования показаны понятно? Структура разметки - понятна? Это была база, в следующих постах объясню более продвинутую нотацию.

И эта - с новым годом, друзья!

Comments:


Serguey Zefirov
thesz at 2011-01-04 22:09 (UTC) (Link)
Разборщик пробовал писать?
Gaperton
gaperton at 2011-01-04 22:15 (UTC) (Link)
Уже начал. Обычная двухмерная разметка. Геморрой, однако. :)
Gaperton
gaperton at 2011-01-04 22:29 (UTC) (Link)
Как ты ты понимаешь, у целей будут атрибуты, скажем, [due] апрель 2011, и у стрелок - ограничения, вроде 2w-3w/thesz :)
sdtsdt
sdtsdt at 2011-01-04 22:12 (UTC) (Link)
Отличный заход на новый год
Denis Bugrov
bugroff at 2011-01-04 22:22 (UTC) (Link)
Хм, я примерно такое обычно и пишу в том же прожекте. Ганта вообще не использую никак :-) а вот к табличкам как-то привык за много лет.
aamonster
aamonster at 2011-01-04 22:52 (UTC) (Link)
Ребе, так это ж классический иерархический чеклист, только приоритеты добавлены.
Gaperton
gaperton at 2011-01-05 09:53 (UTC) (Link)
Не совсем :). Классический иерархический чеклист - это описание одной цели. Вот:

|[] hkhkf
|   [] hkhks
|   [] hhdf
|[] ghghd


А добавлены временные ограничения - эту цель не достигнуть без достижения этой (событие А случится не позже, чем событие Б). Это не то же самое, что простая группировка. И "стрелки" способны на куда большее, чем просто указать приоритеты. :) По выразительной силе это не уступает сетевому графику. Покажу в следующем посте.
Alexei V. Vasilyev aka Comm
sbase at 2011-01-04 23:13 (UTC) (Link)
Самый простой метод обозначения прогресса я делал такой:

-------------------------
закупка еды
+ водка
* масло
- икра
- хлеб
------------------------

+ готово
* в процессе
> тоже в процессе
- в очереди.

без знака - этап работ


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

а всякие там "атрибуты" в таком плане настолько вторичная информация что ее имеет смысл вообще писать только в хвосте, например так:

- купить воду // до весны
- еды на завтрак // срочно

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

закупка еды
* + водка
* / масло
* - икра
* - хлеб


Alexei V. Vasilyev aka Comm
sbase at 2011-01-04 23:32 (UTC) (Link)
(это был комментарий на тему формата записи плана)

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

* + Умеем ходить
* / Умеем прыгать
* - умеем летать


А то в моем понимании, событие (как факт) то обязательно это какое-то действие протяженное во времени:
* встретиться в 10-00
* пойти гулять


zhacka [blogspot.com] at 2011-01-05 02:12 (UTC) (Link)
Хотя это не совсем об одном и том же, но чем-то напомнило мне emacs org-mode. Хотя, в принципе, возможно декларативное планирование возможное и там. Надо попробовать.
Alex Ott
alexott at 2011-01-05 07:50 (UTC) (Link)
+100500 - там можно делать зависимости между задачами, а также произвольные статусы, а не только стандартные (TODO, STARTED, DONE, etc). плюс можно расписывать правила переходов между этими статусами
P.S. и MobileOrg для него же очень удобно использовать на телефоне/айпаде
Alexey Tigarev
t_gra at 2011-01-05 09:31 (UTC) (Link)

Декларативное планирование

Take a look on TaskJuggler.
Это такой инструмент для декларативного планирования с интерпретатором командной строки и с гуи-фронтендом.

Ну да, и в системе контроля версий файлы держать можно.

Имело бы смысл:
- сделать вашу разметку альтернативной к нативной разметке таскджагглера, дописав его
- сделать конвертер из этой разметки в таскджагглеровскую (+возможно, в обратную сторону)

Таким образом, можно на шару получить все фичи таскджагглера и не писать каких-то планировщиков.
Gaperton
gaperton at 2011-01-05 10:08 (UTC) (Link)

Re: Декларативное планирование

Видел и знаю.

- сделать конвертер из этой разметки в таскджагглеровскую (+возможно, в обратную сторону)

Об этом думал. Но:
- пока он linux-only.
- в шедулере у него проблема (сильно разные раскладки leveling-а при небольших изменениях плана), такой шедулер не годится.

Думаю о простом но устойчивом своем шедулере, и в перспективе - привязке к трекерам.
dutchthemad at 2011-03-18 12:21 (UTC) (Link)
А зачем велосипед изобраетать ?
Есть org mod для емакса, есть taskpaper для MacOs, есть todopaper для Windows.

|||=> - какой смысл в этом непотребстве ? походу, программисты жить не могут без синтаксиса.

Gaperton
gaperton at 2011-03-18 15:58 (UTC) (Link)
Пользуйся org-mod на здоровье.

Будешь пользоваться моим журналом для бессмысленных комментариев - забаню.
Previous Entry  Next Entry