Gaperton (gaperton) wrote,
Gaperton
gaperton

Categories:

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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


Или так:

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


Или так:

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


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

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


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

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

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

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

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

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

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

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

И эта - с новым годом, друзья!
Tags: декларативное планирование
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 55 comments