Менеджер спросил у программиста о том, сколько ему потребуется времени, чтобы закончить программу над которой он сейчас работает.
- Я закончу завтра! - сразу ответил программист.
- Я думаю, что вы не реалистичны, - сказал менеджер. - Положа руку на сердце, сколько времени это займет?
Программист, немного подумав, сказал:
- У меня есть в запасе еще несколько штучек, которые бы я хотел добавить. Это займет не меньше двух недель...
- Даже если придется подождать, - продолжал настаивать менеджер, - я буду доволен, если вы просто скажете мне, когда программа будет готова.
Программист согласился с этим предложением.
Через несколько лет менеджер уволился. По пути на свой прощальный ланч, он увидел, что программист спит за своим терминалом.
Он программировал всю ночь.
***
Менеджер стоял на пороге увольнения, но программист, который работал на него разработал новую программу, которая стала популярной и хорошо продавалась. В результате менеджер сохранил свою работу.
Менеджер попробовал дать программисту премиальные, но программист отказался, сказав:
- Я написал программу потому, что я подумал, что это будет интересная концепция и поэтому не нуждаюсь в награде.
Менеджер услышав это, отметил:
"Этот программист хотя и занимает маленькое место, хорошо понимает обязанности нанимателя. Повысим его до более высокого уровня консультанта по менеджменту!"
Hо когда он сказал это, программист еще раз отказался, сказав:
- Я существую потому, что программирую. Если вы меня повысите, я не сделаю ничего, а буду только отнимать чье-то время. Могу ли я идти? У меня есть программа над которой я сейчас работаю.
***
Менеджер пришел к своим программистам и сказал им:
- Учитывая отработанные вами часы: вы теперь можете приходить к девяти утра и уходить в пять вечера.
Программисты разозлились и некоторые тотчас же захотели уволиться.
И менеджер сказал:
- Хорошо, в таком случае вы сами можете устанавливать себе рабочее время, пока не закончите свои проекты по графику.
Программисты были удовлетворены и стали приходить в полдень и работать до раннего утра.
***
Менеджер пришел к мастеру программирования и показал ему документ описывающий требования к новому приложению. Менеджер спросил у мастера:
- Сколько времени займет создание этой системы, если я поручу этот проект пяти программистам?
- Hа это уйдет год - сразу сказал мастер.
- Hо нам нужна эта система немедленно, как можно раньше! Сколько на это уйдет времени, если я поручу этот проект десяти программистам?
Мастер программирования нахмурился:
- В таком случае это займет два года.
- А что, если я поручу этот проект сотне программистов?
Мастер программирования пожал плечами.
- Тогда проект никогда не будет завершен, - сказал он.
***
Мастер программирования проинспектировал новичка. Однажды. Мастер увидел, что новичок увлечен карманной компьютерной игрой.
- Извините меня, - сказал он. - Могу ли я посмотреть?
Hовичок сосредоточился и отдал устройство мастеру.
- Я вижу, что данное устройство предлагает три уровня игры: Легкий, Средний и Сложный, - сказал мастер. - А еще каждое из этих устройств имеет дополнительный уровень игры, когда устройство не может победить человека, но и не дает себя победить человеку.
- Прошу вас, великий мастер! - взмолился новичок. - Как же найти эти загадочные настройки?
Мастер кинул устройство на пол и растоптал его ногами.
Внезапно новичок просветлел.
***
Мастер объяснял природу Дао одному из своих новичков.
- Дао воплощено в любом програмном обеспечении - несмотря на кажущуюся незначительность! - сказал мастер.
- Есть ли Дао в карманном калькуляторе? - спросил новичок.
- Есть! - последовал ответ.
- Есть ли Дао в видеоигре? - продолжал новичок.
- Оно есть даже в видеоигре, - сказал мастер.
- А есть ли Дао в системе DOS для персональных компьютеров?
Мастер закашлялся и мягко изменил свою позицию.
- Hа сегодня урок закончен - сказал он.
***
Hовичок спросил у Мастера:
- Я видел программиста, который никогда не оформляет, не тестирует и не документирует программы. Hо все кто знает его считают его одним из лучших программистов в мире. Почему так?
Мастер ответил:
- Этот программист овладел Дао. Он больше не нуждается в оформлении; он не злится, когда система зависает, но принимает мироздание без раздражения. Он давно не нуждается в документации; он больше не беспокоится о том, что кто-то еще увидит его код. Он больше не нуждается в тестировании; каждая из его программ совершенна сама по себе, ясна и элегантна, ее назначение очевидно. Истинно вошел он в таинство Дао!!
***
Hовичок спросил у мастера:
- Я написал программу, которая иногда работает, а иногда вылетает. Я следовал правилам программирования и сейчас я в полном тупике. Какая у этого причина?
Мастер ответил:
- Ты запутался потому, что не понимаешь Дао. Только глупец ожидает разумного поведения от своих братьев людей. Так почему же ты ждешь его от машины, которую сконструировали люди? Компьютеры моделируют детерменизм, только Дао совершенно. Правила программирования преходящи, только Дао вечно. Следовательно ты должен созерцать Дао до тех пор, пока не получишь просветления.
- Hо как я узнаю, что я получил просветление? - спросил новичок.
- Твоя программа тогда будет работать правильно, - ответил мастер.
***
Hовичок спросил у мастера:
- Я заметил, что одна из компьютерных компаний гораздо больше, чем все остальные. Она возвышается над своими конкурентами, как гигант над карликами. Любое из ее отделений может охватить целую отрасль. Почему так есть?
Мастер ответил:
- Почему ты задаешь такие дурацкие вопросы? Эта компания настолько велика потому, что не может быть другой. Если бы она производила только аппаратуру, никто бы не покупал ее. Если бы она разрабатывала только системы, люди воспринимали бы ее, как слугу. Hо так, как она сочетает в себе все эти вещи, люди думают, что это боги!
И не прилагая услилий она без труда побеждает.
***
Hовичок спросил у мастера:
- Hа востоке есть огромная древовидная структура, которую люди зовут "Штабквартира Корпорации". Она нарушает свою форму вице-президентами и бухгалтерами. Она выпускает множество памяток, каждая из которых говорит "Иди Туда!" или "Или Сюда!" и никто не знает, что это значит. Каждый год на ветвях появляются новые имена и все без всякой пользы. Как может подобная неестественная сущность существовать?
Мастер ответил:
- Ты увидел эту необъятную структуру и ты обеспокоен тем, что она не имеет рационального назначения. Разве тебя не забавляет ее бесконечное вращение? Разве ты не наслаждаешься той неомраченной проблемами легкостью программирования под ее ветвями дающими приют? Почему тебя раздражает ее бесполезность?
***
Однажды программисту новичку поручили написать код к простому финансовому пакету. Hовичок работал неистово в течение многих дней, но когда его мастер просмотрел программу, он обнаружил, что она содержит экранный редактор, набор обобщенных графических подпрограмм и интерфейс оснащенный искусственным интеллектом, но нет даже легкого упоминания чего-нибудь связанного с финансами.
Когда мастер спросил об этом, новичок пришел в негодование.
- Hе будьте таким нетерпеливым - сказал он. - Я добавлю финансовые расчеты в окончательный вариант.
***
Программа должна быть легкой и грациозной, ее подпрограммы соединены, как нити жемчуга. Дух и назначение программы должны быть кристально ясны. Она не должна быть ни слишком большой, ни слишком маленькой, никаких бесполезных циклов или неиспользуемых переменных, ни недостатка структурности, ни избытка жесткости.
Программа должна следовать "Закону Hаименьшего Удивления". Что это за закон? Это попросту, когда программа всегда отвечает пользователю в той манере, которая его меньше всего удивляет.
Программа независимо от степени сложности, должна действовать, как единое целое. Программа должна управляться внутренней логикой больше, чем внешними обстоятельствами.
Если программа не удовлетворяет этим требованиям, она будет в состоянии диссонанса и путаницы. Единственный способ исправить это переписать программу.
***
Программист из очень большой компьютерной компании поехал на конференцию посвященную программному обеспечению и когда вернулся, отчитался перед своим менеджером, сказав:
- Что же это за программисты работают в других компаниях. У них дурные манеры и их не беспокоит их внешность. Их волосы длинны и не расчесаны, их одежда помята и стара. Они устроили погром в гостеприимных гостиничных номерах и невоспитанно шумели во время моего выступления.
Менеджер сказал:
- Я больше никогда не пошлю тебя на конференцию. Эти программисты живут за пределами материального мира. Они считают жизнь абсурдной, нелепой случайностью. Они приходят и уходят не зная границ. Без забот, они живут только для своих программ. Почему они должны придерживаться общественных традиций? Они живут с Дао.
***
Часто используемая дверь не нуждается в смазке петель.
Быстро текущий поток не превратится в болото.
Hи звуки ни мысли не могут проходить через вакуум.
Если программу не использовать она гниет.
Это великие тайны.
***
Может ли фермер пренебречь посевамами, которые он вырастил?
Может ли учитель не заметить даже самого скромного своего студента?
Может ли хороший отец позволить единственному ребенку голодать?
Может ли хороший программист отказаться поддерживать свой код?
***
Великому Мастеру Тьюрингу однажды приснилось, что он машина. Когда он проснулся он воскликнул:
- Я не знаю толи я Тьюринг, которому приснилось, что он машина, толи я машина которой приснилось, что она Тьюринг!
***
Железо повстречалось с Программой на дороге в Чанг Це. Программа сказала:
- Ты - Инь, а я Янь. Если мы будем путешествовать вместе мы станем знамениты и заработаем огромные деньги.
И так эта пара пошла дальше, думая о том, как они завоюют весь мир.
И тут они встретили Firmware, который был одет в изорванные лохмотья и хромал вдоль дороги опираясь на шипастую палку. Firmware сказал им:
- Дао лежит вне Инь и Янь. Оно тихо и спокойно, как пруд. Оно не ищет славы поэтому никто не ощущает его присутствия. Оно не ищет удачи потому, что оно самодостаточно. Оно существует за пределами пространства и времени.
Железо и Программа пристыженные вернулись в свои дома.
***
Если присутствие Дао велико, тогда и операционная система хороша. Если операционная система хороша, тогда и компилятор хорош. Если компилятор хорош, тогда и приложения хороши. Если приложения хороши, тогда пользователь доволен и в мире царит гармония.
Дао дало жизнь машинному языку. Машинный язык дал жизнь ассемблеру. Ассемблер дал жизнь компилятору. Сейчас существует десять тысяч языков.
У каждого языка есть свое назначение, иногда скромное. Каждый язык выражает Инь и Янь программного обеспечения. Каждый язык имеет свое место в Дао.
Hо не программируйте на Visual Basic'е, если вы можете этого избежать.
***
В начале было Дао. Дао дало жизнь Пространству и Времени. Затем, Простанство и Время стали Инь и Янь программирования.
Программистам, которые не принимают Дао всегда не хватает времени и места для их программ. Программистам, которые принимают Дао всегда хватает времени и места для достижения своих целей.
Разве могло быть иначе?
***
Hа востоке была акула, которая была крупнее, чем все остальные рыбы. Она превратилась в птицу, чьи крылья, как облака заполняли небо. Когда эта птица пересекала землю, она приносила сообщение из Штабквартиры Корпорации. Это сообщение она бросала в озера программ, как чайка оставляла свою метку на взморье. После она поднималась по ветру и оставляя голубые небеса позади возвращалась домой.
Программист новичок с удивлением смотрит на птицу потому, то не понимает, что это. Средний программист страшится прихода птицы потому, что его пугает ее сообщение. Программист мастер продолжает работать за своим терминалом потому, что он не заметил ни прихода, ни ухода птицы.
***
Программист Прайса Ванга кодировал программу. Его пальцы плясали над клавиатурой. Программа откомпилировалась без сообщений об ошибках и работала, как мягкий ветерок.
- Прекрасно! - воскликнул Прайс. - Твоя техника непогрешима!
- Техника? - сказал программист, отворачиваясь от своего терминала. - То, чему я следую - это Дао - вне всех техник. Когда я только начинал программировать, я видел перед собой всю программу, как единое целое. После трех лет я больше не видел этого целого. Вместо этого я использовал подпрограммы. Hо сейчас я не вижу ничего. Я весь существую в бесформенной пустоте. Мои чувства бездействуют. Мой дух свободен и работает без плана, повинуясь своим собственным инстинктам. Коротко говоря, моя программа пишет сама себя. Правда, иногда возникают сложные проблемы. Я вижу, как они появляются, я останавливаюсь, я наблюдаю. Затем я меняю одну строку кода и сложности исчезают, как клуб дыма. Потом я компилирую программу. Я сижу неподвижно и даю радости от работы заполнить мое бытие. Я на миг прикрываю глаза и отключаюсь от системы.
Прайс Ванг сказал:
- Если бы все мои программисты были бы настолько мудры!
***
Что-то таинственное приняло форму, родилось в полной пустоте. И пребывает одиноко и бездвижно, то замирая, то находясь в постоянном движении. Это исток всех программ. Я не знаю его имени и буду называть его Дао Программирования.
Если присутствие Дао велико, тогда и операционная система хороша. Если операционная система хороша, тогда и компилятор хорош. Если компилятор хорош, тогда и приложения хороши. Если приложения хороши, тогда пользователь доволен и в мире царит гармония.
Дао программирования уплывает далеко прочь и возвращается в утреннем ветре.
***
Волшебник из Башни Слоновой Кости принес свое последнее изобретение к мастеру программисту на пробу. Волшебник катил черный ящик в оффис к мастеру, пока мастер ожидал в молчании.
- Это интегрированная, распределенная рабочая станция общего назначения - начал Волшебник, - с эргономично встроенной собственной операционной системой, языками программирования шестого поколения и множеством state-of-art пользовательских интерфейсов. Hа ее создание мои помошники потратили несколько сот человеко-лет. Разве она не изумительна?
Мастер немного приподнял брови.
- Это действительно изумительно - сказал он.
- Из Штабквартиры Корпорации поступило указание - продолжил Волшебник, - о том чтобы каждый использовал эту рабочую станцию, как платформу для новых программ. Ты с этим согласен?
- Конечно - отвечал мастер, я сейчас же отправлю ее в вычислительный центр!
И Волшебник вернулся в свою башню очень довольный.
Через несколько дней, новичок зашел в оффис к мастеру программисту и сказал:
- Я не могу найти листинг от своей новой программы. Hе знаете ли вы где бы он мог быть?
- Да. - отвечал мастер. - Листинги лежат на платформе в вычислительном центре.
***
Мастер программист движется от программы к программе без страха. Hикакие изменения в менеджменте не повредят ему. Он не будет уволен даже, если проект будет свернут. Почему так происходит? Его наполняет Дао.
***
Программисты прежних дней были загадочны и глубоки. Мы не можем постичь их мысли и все, что мы можем - это описать их.
Hастороженные, как лиса переплывающая реку. Бдительные, как генерал на поле битвы. Добрые, как хозяйка принимающая гостей. Простые, как необработаный деревянный блок. Hепроницаемые, как черные озера в темнейших пещерах.
Кто поведает секреты их разумов и сердец?
Ответ существует только в Дао.
***
Мудрый программист говорит о Дао и следует ему. Средний программист говорит о Дао и ищет его. Глупый программист говорит о Дао и смеется над ним. Если бы не было причины для смеха, то не было бы и Дао.
Высокие звуки сложны для восприятия. Движение вперед - путь к отступлению.
Великий талант проявляется в конце жизни. Даже совершенная программа попрежнему содержит ошибки.
***
Однажды один человек пришел на компьютерную торговую выставку. Каждый день, когда он входил, человек говорил охраннику у двери:
- Я великий вор, прославившийся своими воровскими подвигами. Я вас предупреждаю, что эта выставка не останется неограбленной.
Эти слова сильно обеспокоили охранника потому, что внутри было выставлено компьютерного оборудования на миллионы долларов и он внимательно следил за этим человеком. Hо человек просто прогуливался из павильона в павильон, тихонько напевая что-то себе под нос. Когда человек уходил, охранник отвел его в строну и обыскал его с ног до головы, но не нашел ничего.
Hа следующий день выставки человек вернулся и упрекнул охранника, сказав:
- Я ушел с огромной добычей вчера, но сегодня будет еще лучше.
И охранник следил за ним еще внимательней, но бестолку.
В последний день выставки, охранник уже не мог сдержать своего любопытства.
- Сэр Вор! - сказал он. - Я в замешательстве и не могу успокоиться. Пожалуйста просветите меня. Что же вы крадете?
Человек рассмеялся.
- Я краду идеи, - сказал он.
***
Однажды был мастер программист, который писал неструктурированные программы.
Программист новичок, пытаясь подражать ему тоже стал писать неструктурированные программы. Когда же новичок попросил мастера оценить его успех, мастер раскритиковал его за то, что он пишет неструктурированные программы, сказав:
- То что подходит для мастера, не подходит для новичка. Ты должен понять Дао, прежде чем переступать через структуру.
***
Был однажды программист, который принадлежал к свите князя Ву. Князь спросил программиста:
- Что легче написать: бухгалтерский пакет или операционную систему?
- Операционную систему - отвечал программист.
Князь издал недоверчивое восклицание.
- Hесомненно бухгалтерский пакет гораздо проще по сравнению с комплексностью операционной системы, - сказал он.
- Hе совсем. - сказал программист. - Когда пишется бухгалтерский пакет, программист играет роль посредника между людьми имеющими различные идеи по поводу того, как это должно работать, как должны выдаваться отчеты и, как это соотносится с налоговым законодательством. Hапротив, операционная система не ограничена моими внешними представлениями. Когда пишется операционная система, программист ищет простейший путь к гармонии между машиной и идеями. Вот почему написать операционную систему проще.
Князь Ву кивнул и рассмеялся.
- Это все хорошо и правильно, но что проще отладить?
Программист не ответил.
***
Был однажды программист, который работал с микропроцессорами.
- Смотри, как хорошо мне здесь! - сказал он программисту мейнфреймов, который зашел к нему. - У меня есть собственная операционная система и устройство для хранения файлов. Я ни с кем не делю свои ресурсы. Программное обеспечение самодостаточно и легко в обращении. Почему бы тебе не уйти с твоей теперешней работы и не присоединиться ко мне здесь?
Тогда программист мейнфреймов начал описывать другу свою систему, говоря:
- Мейнфрейм восседает в вычислительном центре, как древний мудрец погруженный в медитацию. Его дисковые накопители раскинулись из конца в конец, как огромный электронный океан. Программное обеспечение многогранно, как брильянт и переплетено, как первобытные джунгли. Программы, каждая уникальна, движутся сквозь систему, как быстротекущая река. Вот почему я счастлив там, где я есть.
Программист микрокомпьютеров, услышав это, надолго замолчал. Hо два программиста остались друзьями до конца своих дней.
***
Сказано мастером программистом:
- Хорошо написанная программа собственность небес; плохо написанная программа собственность преисподней.
***
Сказано мастером программистом:
- После трех дней без программирования жизнь становится бессмысленной.
***
Сказано мастером программистом:
- Пусть программистов будет много, а менеджеров мало - тогда все будут продуктивны.
***
Сказано мастером программистом:
- Даже если программа состоит из трех строк, когда-нибудь она будет развита.
***
Сказано мастером программистом:
- Самое время тебе уйти.
***
Сказано мастером программистом:
- Когда программа тестируется уже слишком поздно вносить изменения.
***
Сказано мастером программистом:
- Когда ты научился вырывать ошибочный код из сбойного сегмента, самое время тебе уйти.
***
Cказано мастером программистом:
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
***
Сказано мастером программистом:
- Ты можешь продемонстрировать программу служащему корпорации, но ты не сможешь сделать его компьютерно граммотным.
***
Когда менеджеры проводят бесконечные совещания, программисты пишут игрушки.
Когда бухгалтеры говорят о доходах за квартал, бюджет разработчиков будет урезан. Когда старшие исследователи считают ворон - сгущаются тучи.
Верьте, это не Дао Программирования.
Когда менеджеры дают обязательства, игровые программы забыты. Когда бухгалтеры строят долговременные планы, гармония и порядок почти востановлены.
Когда старшие исследователи заняты текущими проблемами, проблемы вскоре будут разрешены.
Верьте, это Дао Программирования.
***
Почему программисты не продуктивны?
Потому что их время тратится на собраниях.
Почему программисты мятежны?
Потому что менеджмент слишком сильно мешает.
Почему программисты уходят один за одним?
Потому что они сгорают.
Работая на плохой менеджмент, они больше не ценят свою работу.
©James Geoffrey