Подписаться на RSS

плюс

Получать обновления на email:



Мои любимые книги:

М. Руссинович, Д. Соломон. Внутреннее устройство Microsoft Windows

Майкл К. Физерс. Эффективная работа с унаследованным кодом:

Стив Макконнелл. Совершенный код

Мартин Фаулер Рефакторинг. Улучшение существующего кода

Бьерн Страуструп. Язык программирования С++.

Андрей Александреску Современное проектирование на С++. Серия С++ In-Depth

Том Демарко, Тимоти Листер Человеческий фактор: успешные проекты и команды

Посмотреть весь список книг для программистов...

Не будите спящего программиста

Спящий программист

С разрешения автора копипастю его творение:

Меня всегда мучал вопрос - как объяснить людям никогда не занимавшимся такого рода трудом, каким занимаюсь я, то, что вот происходит у меня и у таких как я в голове когда мы работаем. Как НЕ программисту представить себе работу программиста и понять наконец чего же происходит и как вообще с этим быть.

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

Ну вобщем хватит предъистории. Как работает программист.


Работа программиста - это СОН.

Звучит нелепо, правда?

Если вы хотите представить что именно делает программист во время работы, то легче всего это представить именно так. Он спит!

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

Это вы думаете что программист взял задачу, написал программу и задача решилась. Всё не так.

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

Для решения задачи программисту приходится стать в своём сознании и лабиринтом, и искомым выходом, и заблудившейся девочкой, и тем перстом что ведёт её куда-то, и теми камушками которые она разбрасывает по дороге чтобы узнавать уже пройденные места. Всё это СНИТСЯ программисту во время работы.

Я не фигурально выражаюсь. Это БУКВАЛЬНО снится. Программист при решении задачи виртуально живёт в создаваемом мире химер, похожих каким-то образом на условия решаемой задачи.

Внешне наблюдение за работающим программистом это тоже самое что наблюдение за спящим человеком. Вы вот сразу засыпаете когда решаете отойти ко сну?

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

Вот тоже самое и в работе программиста. Процесс начала работы это тоже самое. Программист не может просто сесть и начать работать точно также как вот вы не можете сказать себе “СПИ УЖЕ СКОРЕЙ!” и отключиться. И общего какого-то способа тоже нет, как нет его в ритуале засыпания.

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

Это ведь ещё и меняется со временем. Сегодня вот вы легли спать и всё - уже сладкие грёзы. А завтра ворочаетесь час, два, три и ну никак. Тоже самое и в работе программиста. буквально тоже самое.

Ну и что делать всвязи с этим?

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

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

Представили?

Вот это именно так выглядит для нас - программистов. БУКВАЛЬНО ТАК.

Это вам со стороны кажется что вы просто подошли и спросили который час.

А давайте я вас подойду и спрошу в три часа ночи который час?
Чего страшного-то? Ну и что такого что вы только что заснули?
Я просто спрошу, вы ответите и спите дальше. Чего такого-то?

Так легче понять я думаю будет. На таком примере.

Вот вы представляйте что от вашего сна зависит ВСЁ! Всё при всё. Вот от того как вы сегодня поспите зависит будет завтра чего дома жрать или нет. Зависит будет ваша дочть замужем или нет. Вырастет ваш сын неудачником или добьётся чего-то в жизни. Всё это зависит от того как продуктивно вы сегодня поспите.

Представили?

И вот вы собираетесь начать этот сон. Этот вот самый сон от которого ВСЁ зависит и вы это отчётливо осознаёте.

Скажите вот теперь. Как насчёт спать и одновременно немножко, краем глаза разговаривать, чуть чуть помогать сыну решать арифметику, немножко подглядывать в телевизор и чуть чуть так совсем немного съездить в магазин? Не на долго…

Как спится, сладко?

Вот теперь подумайте что происходит с программистом к которому раза два-три в час подходят и просят чего-то подсказать, чего-то помочь там вот и тут, чего-то просят его где-то заполнить, отметить и ещё о чём-то не забыть.

Вы бы так смогли КАЖДЫЙ ДЕНЬ?

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

Хотите?

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

Хотя не всё так трагично. Конечно есть люди которые способны кимарить просто постоянно. Водители такие бывают что чуть-ли не на каждом сфетофоре способны чуток вздремнуть. Ну вы знаете - им чуть бибикнуть приходится чтобы вернуть к жизни. Наверняка вы знакомы с такой ситуацией.

Ну так вот и программисты тоже такие бывают. Они всегда находятся в состоянии близком ко сну. Чуть не мешает никто - сразу “брык” и в сон. Не глубоко, только на чуть чуть. Особо серьёзных никаких химер не успеешь понагрезить, но чуть-чуть немножко слабо-туманных вполне успеешь. Вот в такой сон.

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

Ну потому что отвлекают постоянно. Потому что БУДЯТ же бля постоянно! Потому что люди не понимают что ты же спишь и что их ебучая менеджерская “организационная” активность она на самом деле только мешает работать. Большинство людей НЕ программистов этого не понимают.

Я надеюсь что осознав аналогию работы программиста со сном может быть люди лучше поймут как надо обходиться с программистами и откуда вообще берутся хорошие программы. Поймут наконец что вот этот ебучий ЖЖ - это то что пишу и читаю ПЕРЕД СНОМ. Вот также как вы. Вы не можете спать пока неначитаетесь или пока телевизор не насмотритесь. Не можете ведь?

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

Хотите хороших программ?

Хотите чтобы ваш муж-программист был успешен и заработал все деньги?

Хотите чтобы ваши подчинённые программисты наконец-то сделали всё как надо?

Тогда вот вам простой рецепт:

НЕ БУДИТЕ СЛИШКОМ ЧАСТО ПРОГРАММИСТА!

 Понравилась статья? Подпишись на RSS!

31 комментариев к Не будите спящего программиста

  • Xor

    Отличный пост.
    Стоит прочитать как программерам, так - и особенно - их друзьям и начальникам :)

  • Lazin

    А у меня не получается “заснуть” без чашечки кофе =)

  • Dmitry Gusev

    Да, сон - хорошая аналогия :)

  • Анатолий Белайчук

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

    • Думаю, это относится к любой профессии, требующей сосредоточения и полного погружения в свои мысли:
      Программирование, наука, математика, теор. физика и т.п.

    • iam

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

      Как то в одном физическом институте видел как физики по коридорам очень тяжелые железки перевозили. Если бы кроме этого знакомства с физикой не сек ящик и не читал научпоплит по физике, то сейчас бы реально “считал свой случай уникальным”. Однако не считаю и вас, Анатолий, от этого отговариваю.

  • Анатолий Белайчук

    А что, математика и теор.физика - это уже не науки? :)

  • Кирилл

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

  • Vladislav Artukov

    “НЕ БУДИТЕ СЛИШКОМ ЧАСТО ПРОГРАММИСТА!”

    Как раз об этом говорил Сполски - эффективность программиста понижается при повышении частоы смены контекстов.

    • Во-первых, у Сполски не было такой точной аналогии со сном.
      А во-вторых, “повышении частоы смены контекстов” - не совсем верный термин. Любое даже одиночное прерывание, смена контекста, может убить эффективность на целый день. Не всегда, но может. Как и сон - проснешься бывает посреди ночи и уже не уснуть. А бывает, 10 раз проснешься и сразу опять засыпаешь.

      Очень точная аналогия со сном, нравится мне :)

  • Kos

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

  • Alexey Kovyazin

    Хороший пост :)
    Собственно, вся книга Peopleware посвящена тому, как создать программерам такие условия, чтобы они не отвлекались, так как время входа в состояние программирования составляет около 15 минут.

  • Vladimir

    Будете (наверняка) смеяться:
    схожий алгоритм поиска решения (особенно - сложных вопросов) присущ и системным администраторам.

    И, когда мы, как будто отвлекаемся на то, что считается нерабочими моментами - на самом деле обдумываем их, “отсекая” таким образом все лишнее…

    И нас то же пинают, полагая, что мы “уснули”…

  • Jack

    нефига дома работать, дома дети и ты принадлежишь им целиком. Иначе - злободром

  • FlaMas

    Точно, в яблочко!

  • Han

    отличная аналогия!
    я в своё время, работая сисадмином в крупной корпорации, сумел руководству втолковать, что все оргвопросы должны оставаться за стенами моего кабинета.
    а для решения “злободневных” вопросов манагерского (читай - юзверьского) состава существует техподдержка, которая может и должна (в разумных пределах) их няньчить.
    я даже умудрился отказаться от корпоративной телефонной связи. Мой номер был только у моего непосредственного руководителя. :)
    но это частный случай.
    не всем так удаётся, к сожалению.

    • Да уж, не всем удается так убедить руководство. А многие в руководстве и слушать про это не хотят - просто твердят “я должен всегда иметь возможность позвать или поговорить”. Тут нужно понимание с их стороны в первую очередь.

  • Han

    Мне было проще. Это крупная корпорация и руководство занято глобальными вопросами. За 4 года работы я всего 3 раза общался по рабочим вопросам (вернее, это было соглашение о порядке взаимодействия и уточнение деталей “стратегической линии партии”:)) с бигбоссом. Все остальные вопросы я решал непосредственно с прямым руководителем. А он человек адекватный.

  • Такой же программер

    Аналогия очень удачная. Еще бы грамматические ошибки исправить и было бы вообще здорово.

  • SS

    Если бы не столько восторженных отзывов, тоже восторгался, но придется добавить разнообразия в виде вопроса не укладывающегося в теорию “сна” :)
    Что тогда скажет автор про экстремальное программирование ХР в частности про “Парное программирование”? :)

    • Парное программирование - зло. Вот что скажу :) Надо бы про мое отношение к этому статью написать…

      • Владимир Степанов

        мммм… и в чем именно - зло? По мне, так это один из способов повысить эффективность: не нужно переключаться из режима автора, в режим критика - только взглянул на отвисшую челюсть напарника и ну переписывать все по новой :)

  • Владимир

    В точку! Спасибо за разнесение проблемы уже распечатал и всем дал на прочитку кто меня достает во время программирования!

Ответить

 

 

 

Вы можете использовать эти HTML тэги

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>