ReCoder (recoder) wrote,
ReCoder
recoder

  • Mood:
  • Music:

Декомпозиция как панацея

Весь мой жизненный опыт, а особенно опыт участия в написании софта привёл меня к интересному выводу:

Простые задачи решаются легко и просто.
Сложные задачи полностью не решаются вообще.

Поэтому единственно верный способ решать [сложные] задачи - это последовательно разбивать сложные задачи на более простые, пока не будет достигнут атомарный уровень простых под-задач. (Ср. с мозговым штурмом - 1,2.)

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

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

Кстати - это вообще универсальное правило. Нельзя проектировать самолёт или начинать ремонт, не представляя себе из чего этот процесс состоит. Как минимум это приведёт к неверной оценке сложности задачи. А обычно - приводит к явлению 'мы делаем то, не знаем что', ну или 'не знаем как'.

Есть, правда, и альтернативный этому подход "Сначала - ввяжемся в бой, а там посмотрим!" © Наполеон. Но он подходит только тогда, когда жизненно важна гибкость процесса и при этом либо есть избыточные ресурсы либо не важна эффективность. Пример:

Мне некогда заранее смотреть по карте как добраться от Москвы до паинтбольного лагеря. Так что я на месте сориентируюсь по солнцу или спрошу у местных. И вполне может быть, что я могу опоздать к сбору на несколько часов, оставить где-нибудь по дороге в болоте свои ботинки или получить пиздюлей от тех же местных.

Ключевой момент - как раз понимать, что теряется и что приобретается в процессе декомпозиции и планирования. Потому что первое обычно очевидно, а второе - нет. И получается как в шутке "Никогда нет времени, чтобы сделать правильно, но всегда есть время, чтобы переделать заново". Так что дедуктивное планирование - forever.

work
management

Tags: management, work
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 11 comments