Создано по мотивам https://alexthunder.livejournal.com/290612.html?nojs=1. Очень близка эта тема, решил немного лоска навести, пофиксить ошибки, где-то сменить обороты. Да простит меня Автор.
Не буду об отпуске, я бываю в них крайне редко. И в основном это вынужденные дни, больше для родных и близких. Не для меня. Я лучше о другом. Часто, в самый разгар рабочего дня, ко мне подходят сотрудники организации со своими вопросами, часто просто спросить, поинтересоваться.
И каждый раз, когда в голове держишь пяток переменных, твоя мысль ползёт по коду, сохраняя в мозгу логику работы программы, вопрошающий просто кидает шар в стоящие кегли и весь, полчаса назад построенный мир из переменных и правил рассыпается на мелкие, стеклянные кусочки.
И я вспоминаю эту историю. Этот пост.
Мне часто не даёт покоя вопрос: как объяснить людям, никогда не занимавшимся трудом подобного рода, каким занимаюсь я то, что происходит у меня в голове, и у таких как я, как мы работаем? Ну вот, как НЕ программисту представить себе работу программиста и понять, наконец: что же происходит у нас в голове, каков мыслительный процесс?..
И, похоже, понимаю как. В общем: хватит предыстории. Итак…
Как работает программист?
Работа программиста — это СОН.
Звучит нелепо, правда?
Если вы хотите представить, что именно делает программист во время работы, то легче всего это представить именно так.
Он спит!
Продукт труда программиста — это продукт сна — химера. Сновидение, записанное специальным языком и переданное электронному устройству для того, чтобы продолжаться там, когда программист уже проснулся или просто сменил один сон на другой.
Это вы думаете, что программист взял задачу, написал программу и задача решилась. Всё не так просто. Или даже: всё вообще не так.
Возьмём, к примеру, задачу нахождения пути выхода из лабиринта. Программист в решении этой задачи не перст указующий, который ведёт воображаемую, маленькую, заблудившуюся девочку незнакомой тропой к выходу. Он и не эта девочка тоже. И не стены лабиринта. Он — не выход, который надо найти.
Он — всё это вместе разом.
Для решения задачи программисту приходится стать в своём сознании и лабиринтом, и искомым выходом, и заблудившейся девочкой, и тем перстом, что ведёт её куда-то, и теми хлебными крошками, которые она разбрасывает по дороге, чтобы узнавать уже пройденные места. И даже видеть ситуацию, когда крошки будут съедены голубями. Всё это СНИТСЯ программисту во время работы.
Я не фигурально выражаюсь. Это БУКВАЛЬНО снится. Программист, при решении задачи, виртуально живёт в создаваемом мире химер, похожих, каким-то образом, на условия решаемой задачи.
Внешне, наблюдение за работающим программистом — это тоже самое, что наблюдение за спящим человеком. Скажите, вы сразу засыпаете когда решаете отойти ко сну?
Большинство людей процесс засыпания воспринимают как определённый ритуал. У кого-то он довольно короткий, а у кого-то довольно сложный и длинный. Кому что. Кому-то надо непременно почитать перед сном, кто-то не засыпает, если тридцать приседаний не выполнит перед тем как лечь. Так или иначе, отход ко сну у каждого происходит по своему, и это не просто ЧИК — и заснул. Хотя, у некоторых бывает и так.
И тоже самое и в работе программиста. Процесс начала работы — это тоже самое. Программист не может просто сесть и начать работать, точно также как вы, не можете сказать себе «СПИ УЖЕ СКОРЕЙ!» и отключиться. И общего какого-то способа тоже нет, как нет его в ритуале засыпания.
Кто-то считает баранов, которые будучи вызванными к жизни самим процессом счёта, потом вынуждены как-то дальше жить, у нас, здесь, на нашей планете. Кто-то фантазирует. Кто-то следит за своим дыханием, а кто-то просто бахнет чаю с ромашкой и дрыхнет уже.
А тем более, этот процесс, со временем, способен изменяться. Сегодня вы легли спать и всё — уже сладкие грёзы. А завтра ворочаетесь час, два, три и — ну никак. Тоже самое и в работе программиста. Буквально тоже самое. Вот прямо так.
Ну и что делать в связи с этим?
Если вы НЕ программист, и вы каким-то образом заинтересованы, напрямую или косвенно в том, чтобы он производил-таки продукт своего труда, то вам надлежит, просто придётся понять всё выше сказанное, какой-либо, более-менее осознанной форме.
Представьте себе: от вашего сна зависит вся ваша жизнь, жизнь ваших детей и вообще всё. Представьте, что от того, как вы спите, зависит: будут ли ваши дети учиться в университете или пойдут мести улицы. Представьте, что от того, насколько красивы, успешны, живучи и полны ваши сновидения, зависит жизнь пассажиров в самолётах и качество обслуживания в супермаркетах, работа вашего смартфона, автомобиля или дверцы шкафа, сведённый баланс в бухгалтерии, а главное: от этого зависит содержимое вашего кармана в день зарплаты.
Представили?
Именно так для нас — программистов, выглядит весь этот процесс. БУКВАЛЬНО ТАК.
Со стороны, вам покажется, что вы просто подошли и спросили меня, который час.
А давайте я к вам подойду и спрошу, в три часа ночи: который час? Чего страшного-то? Ну и что такого, что вы только что заснули? Я просто спрошу, вы ответите и спите дальше. Чего такого-то?
Вот так, наверно, легче понять будет. На таком примере, я думаю.
Держите в голове мысль о том, что от вашего сна зависит ВСЁ! Всё при всё. Вот от того как вы сегодня поспите, зависит: будет завтра чего дома жрать или нет. Зависит: будет ваша дочь замужем или нет. Вырастет ваш сын неудачником или добьётся чего-то в жизни. Всё это зависит от того, как продуктивно вы сегодня поспите.
Представили? Осознали?
И вот вы собираетесь начать этот сон. Этот, вот самый, сон от которого ВСЁ, ваше нужное, зависит и вы это отчётливо осознаёте. Держите в голове.
А вот теперь скажите, как насчёт спать, этим невероятно важным сном и одновременно, немножко, краем глаза разговаривать, чуть-чуть помогать сыну решать арифметику, немножко подглядывать в телевизор и чуток так, совсем немного, съездить в магазин? Не на долго…
Как спится, сладко?
А теперь подумайте, что происходит с программистом, к которому два-три раза в час подходят люди и просят что-либо подсказать, что-то помочь где-то, расписаться, заполнить что-то, отметить где-то, не забыть сделать что-либо…
Вы бы так смогли КАЖДЫЙ ДЕНЬ?
Ну то есть, каждый день, вы ложитесь спать ЗНАЯ, что от вашего сна зависит всё-при-всё-при-всё и даже больше. И вот в процессе вашего сна происходят эти штуки — напоминания, запоминания, помогания, звонки (особенно радостно, сложно же письмо написать), разговоры, посторонние под ухом, и всё такое. И так каждую ночь. Как вам такая жизнь?
Хотите?
Приходите работать программистом. В любую контору с численностью сотрудников больше 10-ти человек. Получите в полной мере!
Хотя не всё так трагично. Конечно, есть люди которые способны кемарить просто постоянно. Водители такие бывают, что чуть-ли не на каждом светофоре способны чуток вздремнуть. Ну вы знаете — им чуть бибикнуть приходится, чтобы вернуть к жизни. Наверняка вы знакомы с такими типами.
Ну так вот и программисты тоже такие бывают. Они всегда находятся в состоянии близком ко сну. Чуть не мешает никто — сразу «брык», и в сон. Не глубоко, только на чуть-чуть. Особо серьёзных никаких химер не успеешь понагрезить, но чуть-чуть, немножко, слабо-туманных — вполне успеешь. Вот в такой сон.
Именно так и производится большая часть программного продукта. Она производится людьми, которые, либо вообще не понимают, что они делают, либо теми кто в силу каких-то причин, просто не может погрузиться в сон достаточно глубоко. Соответственные и результаты.
Ну потому что отвлекают постоянно. Потому что БУДЯТ же, блин, постоянно! Потому что люди не понимают, что ты же спишь, и что их недальновидная менеджерская, «организационная» активность — она, на самом деле, только мешает работать. Большинство людей, НЕ программистов, не понимают этого.
Я надеюсь, что осознав аналогию работы программиста со сном, может быть, люди лучше поймут, как надо обходиться с программистами, и откуда вообще берутся хорошие программы. Поймут, наконец, что вот этот грёбаный интернет — это то самое, что я читаю ПЕРЕД СНОМ. Вот также, как вы. Вы не можете спать, пока не начитаетесь или пока телевизор не насмотритесь. Не можете ведь?
Вот и я не могу я работать, пока не-начитаюсь, не-нахожусь в туалет, не-начищусь зубов, не-напишусь в бложике, не-на-вот-это-всё-наделаюсь. И если мне не дать закончить это до конца, до состояния наступления глубокого сна, если вмешаться в этот ритуал, то его придётся потом начинать практически заново. Точно также как вам придётся снова считать баранов, если вас разбудить, когда вы только что заснули.
Хотите хороших программ?
Хотите, чтобы ваш муж — программист был успешен и заработал много денег?
Хотите, чтобы ваши подчинённые — программисты наконец-то сделали всё как надо?
Тогда вот вам простой рецепт:
НЕ БУДИТЕ ПРОГРАММИСТА СЛИШКОМ ЧАСТО!
Текст изменён, немного подточен под свои реалии, но основную мысль не потерял. И, уж точно, не стал хуже.
Огромное спасибо автору alexthunder, за развёрнутую мысль, а мне будет куда посылать очередного, разбудившего меня, сотрудника.