четверг, 14 мая 2009 г.

Людская “многозадачность” vs “многопакетность”

И эх, а весна-то похоже закончилась. И солнышко пропало, и температура к прогулкам не располагает... Уж не знаю, это природа чувствует разработку софта, или наоборот разработка природу!?! Но после выхода очередной версии, несмотря на все “да здрям один месяц – одна версия”, весь прогресс как-то застопорился. Похоже профессор Преображенский прав: “разруха не в клозетах, разруха в головах”. И вроде и требования написаны, и план есть, и даже прототипы набросаны… Ан нет! Не катит что-то, не складывается – чувствуется что сыровато решение, не хочется с ним спешить.

Ну, а коль случился такой ступор, чтобы не маяться пьянством хандрой от безделья, перебросил усилия на другое приложение. Причем не столько не от необходимости, сколько от того, что в первом классический ступор. Ну и по паре часиков, по пол вечера тратил на второй проект. Долго ли коротко, но постепенно мозг освободился от непротыков с Aml Pages, и погрузился в проблемы Мапли. И вот что получилось: пока я ковырялся с Маплей, постепенно стали очевидными все проблемы и в первом проекте. И через какое-то время стало можно спокойно тратить полдня на один проект, и полдня на другой. Причем как только застреваешь в первом, переключаешься на второй, и наоборот. Рехех, но ведь многозадачность применительно к людям неэффективна?

У Джоэла Сполски есть отличное рассуждение на предмет применимости многозадачности к людям. Суть его сводится к тому, что человеки – в отличие от компьютеров – медленно и довольно долго переключаются между разными задачами, потому что нужно сосредоточиться, “въехать”, “войти в зону”. Что-ж, мысль бесспорная. Действительно сложно постоянно переключаться между разными задачами. Однако это мое “туда-сюда-обратно” продемонстрировало и вполне весомые преимущества. Что же, Джоэл не прав или “найди один отличий”?

У меня – помимо Преображенского – есть еще один очень хорошо знакомый мне “прохфессор”, причем вполне действующий, а не литературный. И как любой профессор, он без конца читает лекции, принимает экзамены, и все остальное, что профессорам полагается. И, конечно же, пишет, пишет и пишет – статьи, учебники, книги и.т.д.

У него есть один любопытный прием: после написания статьи, прежде чем ее редактировать и тем более публиковать, статья отправляется “в лёжку” – то бишь лежит безо всякого внимания несколько дней. И только по прошествии этого времени, начинается редакция, уже со свежим взглядом на написанное.

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

Сдается мне, все эти же аспекты точно также распространяются и на код. Стоит отправить код “в лёжку” и вернуться к нему спустя некоторое время, как сразу замечаешь массу шероховатостей, ошибок, “ляпов” и тому подобной шелухи.

Так что же такое в разработке программного обеспечения эта самая многозадачность применительно к людям? Если мы занимаемся разными задачами в течении часа это уже многозадачность или нет? А если в течении дня? А если недели? Наверное, все зависит от того, сколько заниматься самой задачей, а сколько переключаться на задачу, “въезжать” в нее? Если “въезд” в задачу составляет, ну скажем, 15 минут – то занимаясь 2-мя задачами в течении часа, мы тратим примерно одинаковое время и на переключение, и на решение задачи. Неэффективно, ёпырш однако!

Ну, а если в течении дня? 2 раза по 15 минут на переключение = полчаса. Итого: стандартный рабочий день 8 часов минус полчаса на 2 переключения = 7 с половиной часов полезной работы. Такая ли это уж многозадачность? Не похоже ли это больше на пакетную обработку – когда продолжительное время тратиться сначала на одну задачу, а потом на другую.

Самое интересное, что по ходу этого ”многопакетного” переключения между проектами за последние 3 дня в Мапле сделано куда больше, чем за последние два месяца нытья “как не хочется делать”. И главное, ступор в первом проекте за эти дни тоже как-то рассосался. Взглянув на первый, понял,что мучился не пойми над чем. Есть понятные требования, направления развития, есть очевидные решения и есть куча всякой шелухи, которая подождет (а там глядишь и похерится, ибо выяснится что не нафиг не нужная).
Сдается мне, что просто-напросто первый проект в момент ступора был – по примеру того профессора – отправлен “в лежку”. И с разработкой софта это точно также сработало , как и в эпистолярном жанре! А так ли эти жанры должны отличаться? И первое, и второе – дело творческое... Так что, пожалуй, “многопакетность в жисть!”.

И напоследок пара ссылок по теме.
Упомянутая у Джоэла Сполски многозадачность опубликована и на русском: “Джоэл о программировании” и собственно продолжение “Джоэл: и снова о программировании”.

Хотя некоторые из этих статей есть и в онлайн-варианте в его же блоге, и в CHM-формате здесь. Но и там, и там только некоторые статьи, так что взглянуть можно, но бумажный вариант полнее – must have.

Комментариев нет:

Отправить комментарий