Показаны сообщения с ярлыком codeless. Показать все сообщения
Показаны сообщения с ярлыком codeless. Показать все сообщения

пятница, 6 ноября 2015 г.

Счастье в неведении

Клан Паука потерял настоятелей из-за учителя Суку, которая не терпела управленческую глупость*. Но сейчас Суку путешествует со своими послушниками, и Храм, наконец-то, нанял очередного настоятеля: незнакомца с Запада по имени Рух Чин.

Рух Чин был приглашён самой мадам Джинью, настоятельницей всех кланов и групп. Так как молодой учитель Жинг была прикреплена к клану Паука, Джинью пригласила её познакомиться с новым настоятелем.

Рух Чин неуклюже поклонился Жинг: "Я с нетерпением ожидаю нашей совместной работы", - весело сказал он. - "Я думаю, что мы как два больших уродливых мула, тянущих одну телегу. Так что я сделаю всё возможное, чтобы не стоять у Вас на пути и не сбивать с толку, иначе мы оба окажемся мордами в грязи".

"Это... хорошая новость", - сказала Жинг.

Мадам Джинью добавила: "Рух Чин не только новичок в нашем Храме, но и разработка программного обеспечения для него в новинку. На своём предыдущем месте он управлял командой рыбозаготовителей".

"Это... менее хорошая новость", - сказала Жинг.

"Мне кажется, что java - это то, что Вы пьёте, а tomcat - Ваше домашнее животное", - сказал Рух Чин с улыбкой. - "Так что я буду сильно зависеть от того, как Вы меня обучите тому, что мы здесь делаем".

"Это... уф!" - сказала Жинг, так и не найдя подходящего для описания прилагательного. - "Извините меня, но я должна сообщить клану Паука эти... новости".



Жинг созвала своих монахов на частную конференцию. Их изумление быстро перешло в страх.

"Как этот настоятель надеется управлять, если он ничего не понимает?" - спросил один.

"Как старая Джинью могла нанять его?" - возмутился другой.

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

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

Гомон продолжался, пока Жинг не потребовала тишины.

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

И как только эти слова сорвались с её губ, Жинг осенило.



Тем же вечером мадам Джинью вызвала Жинг к себе в офис.

"Мои шпионы донесли до меня Ваши успокаивающие слова клану Паука", - сказала старая настоятельница.

"Это были мои слова, но сама я не верила им," - призналась Жинг вполголоса. - "Я только хотела восстановить порядок".

"И порядок был восстановлен," - сказала настоятельница. - "Почему же тогда маленькая Жинг выглядит так, будто её что-то беспокоит?"

Жинг сказала: "Когда я стала учителем, то подумала, что всегда надо говорить правду как её видишь, чтобы хорошо служить. Но сегодня я поняла, что, чтобы хорошо служить, иногда нужно говорить ложь мудрыми словами. Что же такое мудрость? Что же такое истина?"

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

Комментарий Ци


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

Стихотворение Ци


Муген спросил Эку: "Я толстый и невзрачный?"
Эку спросила Мугена: "Я бледная и морщинистая?"
Когда лживые ответы лгут, правда пропадает.
Но два старых учителя держатся за руки на закате.

* См. истории 61, 62, 67, 120, 153.

Original: Ignorance is Bliss













среда, 28 октября 2015 г.

Булева алгебра


Чтобы отметить торжественное появление двухсотой записи в летописи Храма, я попросил монахиню Йывень подготовить для меня длинный и информативный трактат с большим количеством ссылок по истории логического типа данных (Boolean). К моему ужасу вместо него я получил это подобие стихов. Приношу свои извинения тем из вас, кто пришел сюда в поисках наставлений, - Ци.



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

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

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

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

Такие слова, как float, int или bool,
являются всего лишь инструментами,
обеспечивающими только грубое приближение
для облегчения общения.

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

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

Original: The Boolean

понедельник, 5 октября 2015 г.

Невольный соучастник

К учителю Банзену подошёл его ученик Джишин и сказал: "Храму требуется REST-библиотека с поддержкой JSON. Я нашёл несколько подходящих от сторонних производителей, но не знаю, как мне выбирать среди них".

Банзен, казалось, опешил: "Разве не ты являешься автором подобной библиотеки, написанной специально для клана Паука?"

"Да", - сказал Джишин, - "но теперь она, как камень на шее. Каждую неделю клан Паука просит некоторую новую функцию или сообщает об ошибке, устанавливая максимальный приоритет. И всякий раз, когда что-то идёт не так с нашими веб-сервисами, меня зовут, чтобы я разобрался, не мой ли код тому виной! Та же история и с другими библиотеками, что я написал для нашего Храма. Даже если я буду жить десять тысяч лет, то больше никогда не напишу ни одной!"

Тем же вечером Банзен пошёл к настоятельнице Джинью и сказал:

"Я потратил годы, пытаясь подавить желание Джишина к написанию своих библиотек вместо приобретения уже существующих*. Снова и снова я показывал ему, что его решения или слишком амбициозные, или слишком негибкие, или слишком небезопасные. Но в конце концов, это удалось не благодаря моему учению, а из-за боязни ответственности! Если бы я позволил ему опубликовать его жалкий код в Храме, когда он стал моим учеником, я бы не беспокоился так всё это время!"

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

У Банзена отвисла челюсть: "А почему Вы не рассказывали об этом прежде?"

Джинью ударила Банзена по голове своей тростью: "А почему ты никогда не поднимался ко мне в офис за советом? Не жалуйся мне на Джишина - он учился на твоём примере".

* См. истории 78, 108, 109, 134, 167, 190.

Original: Unwitting Accomplice

пятница, 2 октября 2015 г.

Это тоже должно пройти

В дворе Храма один монах спросил учителя Кайму: "Как я могу идти в ногу со всем, что мне следует знать, когда технологии меняются всё быстрее и быстрее с каждым годом?"

Кайму ответил: "Если нечто кажется важным, запомни это".

Монах спросил: "Всегда ли Кайму такой легкомысленный? Также Вы могли бы сказать, если капля падает, выпей её. Первый же шторм взорвёт мой живот!"

Кайму нахмурился и сказал: "Ступай к колодцу у подножия горы и не возвращайся в Храм, пока не выпьешь десять тысяч вёдер".

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

Когда его тело избавилось от воды, монах обрёл просвещение.

Он сразу же вернулся к Кайму и сказал: "Я пришел только затем, чтобы сообщить о любопытном парадоксе. Я досыта напился, но и завтра буду пить".

Кайму ответил: "Мы раньше встречались? Ежели да, то я забыл при каких обстоятельствах".

Так Кайму заставил монаха заново поступить в Храм.

Original: This Too Shall Pass

вторник, 29 сентября 2015 г.

Прощение

Наиболее деликатные задачи реализации часто доверяют только учителям, и одна такая задача была поставлена перед начинающим учителем Жинг.

"Это критически важный метод веб-сервиса, который должен быть готов завтра утром", - объяснил учитель Банзен. - "Я послал Вам по электронной почте мои записи о том, как он должен работать".

Всю ночь Жинг работала в своей маленькой хижине. Но на рассвете она заметила что-то неладное: если приложение вдруг бросит исключение, то Банзен предлагал его поймать и вернуть статус SERVICE_ERROR.

"Либо ему не хватает знания наших протоколов, либо он делал заметки в сильной спешке", - сказала себе Жинг, - "ибо я уже сделала дюжину таких сервисов, и мы всегда возвращали SYSTEM_ERROR в таких случаях".

Она начала было писать письмо учителям Храма с просьбой разрешить внести изменения, но остановилась и задумалась:

"Пройдёт несколько часов до того, как они увидят письмо. Неужели я так не уверена, что поставлю под угрозу наше расписание, сидя на руках, пока мои старшие коллеги не скажут мне, что я и так уже знаю? Какие учителя так ведут себя? И какое бесчестье я принесу бедному Банзену, если о его ошибке станет известно! Верно говорят: когда времени мало, легче просить прощения, чем разрешения".



В следующую полночь весь клан Железных Костей был разбужен сигналом CRITICAL OUTAGE на их мобильных телефонах. Ответственный учитель Иши-Шинг разбудил монахиню Хвайду, чтобы она помогла разобраться.

"Я обнаружила проблему в новом коде Жинг" - объяснила Хвайда заспанным голосом. - "Ее веб-сервис вернул SYSTEM_ERROR при появлении RuntimeException".

"У нас так принято", - сказала Жинг.

"Но не тогда, когда веб-сервис является внутренним монитором, и исключение появилось из-за того, что некритичный сайт производителя недоступен", - сказал Банзен. - "В этом случае у нас принято возвращать SERVICE_ERROR, молодой учитель... Вы разбудили весь клан Иши-Шинга тогда, когда они отсыпались после трёхдневного марафона обновления. Они весьма заинтересованы в Вашем наказании".

"Полагаю, что мне повезло, что они не знают, где я живу", - сказала Жинг.

В тот момент раздался сердитый стук в дверь Жинг.

"Ой, а Вы хотели сохранить это в тайне?" - сказал Банзен. - "Я прошу прощения".

Original: Forgiveness

пятница, 25 сентября 2015 г.

Гонорар

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

Наконец они добрались до шаткой конструкции, где жила одна настоятельница и дюжина послушников.

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

"Мы берём только знаниями", - сказала Суку. - "Пусть в первый день лекцию проведёт Ваш храм, и мы проведём лекцию на следующий день".

"Это нас устраивает", - сказала настоятельница.

"Тогда выделите нам на полу место для сна", - сказала Суку. - "а как наступит утро, мы станем учиться друг у друга".

Когда всё было приготовлено, а последний фонарь был выключен на ночь, старший ученик прошептал Суку: "Учитель, чему могут нас научить эти люди?"

Суку начертила знак ∅ на заплесневелой половице, легла на коврик и закрыла глаза.



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

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



Тем же вечером Суку тихо спросила старшего ученика, чему он научился от послушников.

Старший ученик начертил знак пустого множества ∅ на заплесневелой половице, лёг на коврик и закрыл глаза.

Суку щёлкнула его по носу и повторила свой остальным.

Второй ученик ответил: "Наш старший умеет осуждать, но не умеет убеждать".

Третий ученик ответил: "Наши старший хочет, чтобы другие были готовы принимать, но ему не удалось сделать так, чтобы они сначала стали отвергать".

"Отлично", - сказала Суку. - "Некоторые из нас кое-что узнали, поэтому наш гонорар можно считать полученным".

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

Продолжая держать указательный палец старшего ученика, Суку медленно стёрла нуль с половицы и провела линию через центр. Рассмотрев новый символ, старший послушник исправился.

Original: Fee

понедельник, 21 сентября 2015 г.

Магический код

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

После быстрого изучения Баван заявил: "Автоматически созданный прокси-объект вашей службы не выполняет транзакцию, так как аннотация Transactional указана на закрытом вспомогательном методе, а не на доступном интерфейсном методе, который его вызывает".

"Я не понимаю", - сказал монах, - "что это за 'прокси-объект', о котором Вы говорите?"

Баван посмотрел на монаха с подозрением: "Опишите мне, как выполняются и отменяются транзакции в библиотеке AOP".

Монах пожал плечами: "Они выполняются автоматически".

Баван ударил монаха по голове: "Если бы я спросил Вас, как маг Императора заставляет кроликов исчезать, то Вы бы ответили 'с помощью магии'? Думайте, прежде чем говорить, или я покажу Вам, как можно заставить исчезнуть монаха".

Монах потёр голову: "Выходит, что сторонние библиотеки не освобождают нас от необходимости знать, как они устроены внутри? А как насчёт принципа Чёрного Ящика?"

Баван протянул руку за левое ухо монаха, достал из воздуха деревянную ложку и опять ударил ей монаха: "Когда кролика кладут в Чёрный Ящик и он там исчезает по команде, то у зрителей есть привилегия просто охать и ахать в изумлении. Но мы, стоя на сцене, должны знать, как выполняется фокус. Ценой аплодисментов является потеря наивности".

Original: The Magician's Code

четверг, 17 сентября 2015 г.

Отбившийся от стада

Молодая учитель Жинг позволила старшему монаху Вангохану выбрать свой собственный набор технологий для его проекта.

"Ибо, как я заметила в долине", - объяснила она, - "управление разработчиками похоже на выпас скота: если вы хотите заставить животное двигаться вперед, то хуже всего будет встать у него на пути".

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

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

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

"Я должна разобраться, - подумала Жинг.

Она начала с кода Вангохана и обнаружила, что всё там было незнакомо - даже язык программирования был одним из тех, которые в Храме не использовали. Продираясь через чужеродный синтаксис, она узнала, что пользовательский интерфейс был написан с помощью библиотеки AJAX-JSON-XPath, сложность которой была за пределами возможностей младших разработчиков Храма; язык шаблонов заставил Perl4 выглядеть цивилизованно и причудливо; а на уровне хранения данных использовалась экспериментальная СУБД NoSQL, номер версии которой начинался с двух нулей и заканчивался словами 'alpha' и 'SNAPSHOT'.

"Я разобралась, - подумала Жинг. - "И теперь мне надо прилечь".



На следующий день, под давлением, Вангохан сознался, что не смог заставить работать различные технологии, как ему хотелось. Появлялись странные исключения. Иногда приложение зависало, иногда память заканчивалась. Так как в Храме не было никого, к кому Вангохан мог бы обратиться, он пользовался форумами, рассылками, непроверенными патчами и дикими догадками.

Жинг извинилась, покинула свою хижину и провела остаток дня в раздумьях, опираясь на низкую ограду и глядя на пастбище.

В конце концов, за забором показался крупный рогатый скот, бредущий в её сторону. Затем ещё дюжина, и дюжина следом.

"Фермер!" - окликнула она человека, который шёл за стадом. - "Как Вы умудряетесь отвести так много скотины к сладкому клеверу, ни одну при этом не потеряв?"

"Уф", - воскликнул фермер. - "Я не делаю ничего подобного, так как быки и коровы не умеют следовать, только избегать. Посмотрите, как они отходят от того места, куда подхожу я! Иногда я иду справа от них, чтобы держать их подальше от леса, иногда я иду слева, чтобы держать их подальше от канавы, а иногда я иду сзади, чтобы не давать им развернуться. Я всегда в движении, но спокоен; наблюдаю за всем и всегда. Таким образом, я держу скот вместе, но не так тесно, чтобы они не разволновались и не разбежались. Первым правилом выпаса является необходимость собрать стадо, а стадо - это нечто смутное, нечто между порядком и хаосом".

Жинг, услышав эти слова, обрела просветление.



* Переводчик Andre Bogus предложил такой стих:
    Стадо спокойно паслось
    Жинг поражалась им
    Эти коровы полны гармонии!
    Не то, что монахи на лугу.

Original: Stray

вторник, 1 сентября 2015 г.

Порочный круг

Три сестры из бедной семьи обратились к настоятелю клана Смеющейся Обезьяны с просьбой взять их в Храм в качестве разработчиков.

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

"Но такой же отказ мы получаем всюду, куда ни придём!" - возмутилась одна из сестёр. - "Как мы можем приобрести опыт, если нам запрещён вход в любое место, где можно его получить, только потому, что нам не хватает опыта?"

Учитель Кайму случайно проходил мимо и услышал это. Он сказал девушкам: "Желание есть корень всех страданий. Если вы не можете делать то, что хотите, то делайте то, что должны, таким образом, чтобы в свободное время вы могли делать то, что вы по-настоящему любите".

Затем учитель их оставил, но девушек его слова не утешили.



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

Первая сказала: "Днём я работаю плотником, чтобы оплатить счета, а ночью я вырезаю скульптуры ради развлечения".

Вторая сказала: "Днём я продаю рыбу, чтобы оплатить счета, а ночью я занимаюсь танцами ради развлечения".

Третья сказала: "Днём я чиню одежду, чтобы оплатить счета, а ночью я пишу небольшие приложения ради развлечения".

Кайму вернулся к настоятелю и, рассказав ему о встрече, сказал: "Примите третью сестру в клан, ибо она - то, что мы ищем".

Настоятель спросил: "Должны ли мы посоветовать старшим сёстрам последовать её примеру, чтобы они тоже могли получить опыт и быть приняты в клан?"

"Null", - ответил Кайму. - "Как же мы можем советовать им, что они должны 'по-настоящему любить'?"



* Stealthy Wombat предложил такой стих:
    Энкуду начала путешествие в тысячу ли,
    Имея только плащ, посох, воблу и программу навигации.
    Как же счастливы первые две сестры!
    Энкуду не должна презирать их любовь.

Original: The Vicious Circle

пятница, 14 августа 2015 г.

Четыре слова страдания (часть 2)

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



В первый подход монах выделил время на добавление кнопок помощи (Help) по всему интерфейсу, которые реализовал в виде ссылок на руководство пользователя. Он подумал, что это потребует минимум времени и сил, и, кроме того, что фермеры должны ценить низко висящие плоды.

Но вскоре после завершения работы монах обнаружил записку, приколотую к его двери остриём топора:

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



Во второй подход монах выделил время на добавление кнопок отмены (Cancel) по всему интерфейсу, чтобы любое важное действие могло происходить только после подтверждения.

Но вскоре после завершения работы монах обнаружил вторую записку, приколотую к его двери зубцами вил:

    Когда спросили "Действительно ли я хочу отменить заказ?"
    Я мог выбрать только между Хорошо и Отмена.
    Я выбрал Отмена, но всё же получил десять тысяч вил.
    Мне следует прислать Вам одну в зад... Хорошо?



В третий подход монах выделил время на добавление вездесущих кнопок отката (Undo), чтобы любое действие могло быть отменено. Для этого понадобилось много времени и сил, но он всё же был доволен результатом.

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

    Кающийся человек закричал "Что же я сделал?"
    Милосердные боги повернули время вспять.
    Сверчок стрекочет. Все остальные затихли.
    Теперь человек кричал "Что же я сделал откат?"



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

Монах заявил: "Три из Ваших четырёх слов не помогли мне!"

Учитель ответил: "У Эку был попугай, который дословно повторял её слова, но никто не приходил к попугаю за советом".

"Как я могу утешить моих пользователей?" - спросил монах.

"Попугай утешил кошку Эку во время обеда", - сказал Баван.

"Есть ещё четвертое слово страдания", - сказал монах. - "Может ли оно спасти меня?"

"Только если Вы используете его сами", - сказал Баван.

На своей рабочей станции монах нажал кнопку выключения (Off) и навсегда бежал в горы.

Original: The Four Words of Distress (Part Two)

вторник, 19 мая 2015 г.

Четыре слова страдания (часть 1)

Учитель Баван подошёл к монаху, застрявшему у копировальной машины. Монах в отчаянии тыкал кнопки, но она не работала.

Баван отодвинул парня, сказав: "Машины чувствуют отчаяние. Оно выбивает их из колеи".

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

Монах спросил: "Как такая простая вещь может распознавать тонкости эмоций?"

Баван ответил: "Озеро знает, когда ветер злится, потому что оно морщит лицо и бьётся о берег".

Монах обдумал это.

Наконец, он сказал: "Когда врач чувствует моё страдание, она уделяет внимание моим потребностям. Дизайнеры интерфейса к этой машине хорошо поступят, если последуют примеру врача".

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

Монах спросил: "Что это за четыре слова?"

Учитель ответил: "Вот они, от менее удобных к более удобным: Помощь (Help), Отмена (Cancel) и Откат (Undo). Предложите их всем пользователям Ваших собственных интерфейсов, и тогда они скажут: "Здесь исцеляет врач величайшего сострадания, который понимает, что мы можем ошибаться, и избавляет нас от саморазрушения!"

Монах сказал: "Вы же назвали только три слова. А четвёртое?"

Баван нажал кнопку Выключение (Off) и вышел.

Original: The Four Words of Distress (Part One)

вторник, 12 мая 2015 г.

Чтобы сделать яичницу

Монах Джишин разрабатывал приложение, управляющее конфиденциальной информацией незначительной важности. Он подошел к учителю Банзену и сказал: "Я много дней потратил на изучение криптографии. Я уверен, что могу реализовать фреймворк с разделением секрета.

Банзен сказал: "Учитель Мизух в своём учении сказал, что монах не постиг криптографию по-настоящему, если он не жонглировал целых восемь минут восемью свежими птичьими яйцами над дощатым полом. Возвращайтесь в свою келью и тренируйтесь. Через восемь дней мы увидим, на что Вы способны".

Неделю спустя Джишин вернулся к Банзену, опустив голову.

Монах сказал: "Гравитация и неуклюжесть меня победили. Я потратил весь мой паёк яиц на год, заляпав пол моей кельи".

Банзен сказал: "Любой идиот сможет подбрасывать объекты в воздух и ловить их один или два раза. Чтобы быть жонглёром надо понимать потоки в атмосфере, ограничения рук, точную математику движения под действием силы тяжести. Жонглёр защищает пол, как будто бы каждое яйцо - вор".

Джишин обдумал это.

Наконец монах сказал: "Риск пропорционален стоимости того, что под угрозой. Если вор вламывается в мою келью из-за плохого замка, то какое это имеет значение, если в худшем случае я потеряю свою подушку?"

Банзен стукнул Джишина посохом по голове и спросил: "Как пахнет Ваша комната?"

"Тухлыми яйцами", - ответил Джишин, потирая череп.

Банзен сказал: "Истинная проблема не в упущенных яйцах, а в том, что желток просачивается под доски пола. Если у Вас плохой замок, но подушка не украдена, то загляните под кровать! Вор может просто лежать в засаде, ожидая Вашего возвращения со звенящим кошельком".

Комментарий Ци


Джишин задолжал Банзену завтрак в постель. Лучше пусть монах год не ест яйца, чем в одной яичнице окажется сальмонелла.

Стихотворение Ци


Мизуху угрожал учёный бандит.
Он хотел узнать имя, данное тому при рождении.
"Мои родители никогда не говорили мне", - сказал Мизух.
Бандит ушёл удручённым, а Мизух улыбался.

Original: To Make An Omelette

среда, 6 мая 2015 г.

Густой лес

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

В их последнюю ночь в храме, учитель Суку просматривала код старшей монахини.

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

Старшая монахиня рассмеялась: "Если бы я использовала Ваш способ, то поддерживающему код пришлось бы сначала изучить десяток различных методов, чтобы понять основной. Но при моём подходе весь код находится в одном месте. И они называют Вас учителем!"



Старшая монахиня больше ничего не помнила до своего пробуждения в лесу в полном одиночестве. Она положила руку на пульсирующую голову и обнаружила свежую шишку и сумку, висящую на шее. К сумке была приделана записка:
Стыдно спать так долго во время путешествия по лесу... Много троп петляет и пересекается между собой, в них очень легко заблудиться. Но не бойтесь! Мы составили Вам точный маршрут до дома.
Внутри сумки монахиня нашла толстый рулон бумаги, какой обычно используется торговцами в их кассовых аппаратах. Текст на рулоне начинался так:
Встаньте. Посмотрите на комок мха. Согните правое колено и поднимите правую ногу на три дюйма. Шагните правой ногой на восемнадцать дюймов в сторону ближайшего дуба. Опустите правую ногу. Перенесите на неё вес. Согните левое колено...
Концентрацию старшей монахини нарушил волчий вой, звучащий уже рядом.

Original: The Dense Forest

вторник, 28 апреля 2015 г.

Жёсткая любовь

Молодой монах спросил учителя Кайму: "Кроме технического мастерства, какое важное качество всегда должно быть у учителя?"

Кайму ответил: "Доброта".

Монах спросил: "Когда Банзен наказывал меня посохом, к кому он был добр?"

Кайму ответил: "К Вашему будущему".

Монах спросил: "Когда Суку не утвердила меня на руководящую должность, к кому она была добра?"

Кайму ответил: "К нашему храму и нашим клиентам".

Монах сказал: "На прошлой неделе Баван помог кандидату упасть с высокой башни за подделку его резюме. Там не было ни храма, ни клиентов, а теперь нет и будущего. К кому Баван был добр?"

Кайму ответил: "К миру".

Original: Tough Love

пятница, 24 апреля 2015 г.

Выходное собеседование

Учитель Баван начал собеседование кандидата в клан Следа Слона. После обычных предварительных вопросов (об абстрактных классах, например), Баван нарисовал на доске простую схему базы данных и попросил кандидата определить некоторые POJO, подходяще аннотировав их для Hibernate.

"Я не понимаю, что Вы имеете в виду", - сказал кандидат.

"Доменные объекты", - сказал Баван, - "с аннотациями Hibernate".

"Я до сих пор не понимаю, что Вы имеете в виду", - сказал кандидат.

"Возможно, Вы их знаете как аннотации JPA", - подсказал Баван.

Кандидат покачал головой.

"EJB3?" - спросил Баван. - "ORM?"

Кандидат снова покачал головой.

Баван уставился на лист бумаги: "Тогда, возможно, Вы сможете мне сказать, почему Hibernate, JPA, EJB3 и ORM упомянуты в начале Вашего резюме под заголовком Основные навыки."

"О!", - сказал кандидат. - "Мой вербовщик сказал их там написать. Он сказал, что на собеседовании они принесут большую пользу".

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

Кандидат поблагодарил Бавана и ушёл.



На следующий день Баван спросил мнение Кайму о кандидате.

"Я его даже не видел", - сказал Кайму. - "Похоже, что выйдя от Вас он повернул направо, а не налево, поднялся на башню у края отвесной скалы и выбросился через служебную дверь, которая обычно используется для доступа к Wi-Fi антенне снаружи здания. Возможно, Вы сможете мне сказать, почему моё имя написано на этой двери прямо над табличкой Закрыть глаза и сильно толкнуть".

"О!", - сказал Баван. - "Мадам Джинью сказала мне его там написать. Она сказала, что на собеседовании оно принесёт большую пользу".

Original: Exit Interview

четверг, 9 апреля 2015 г.

Ничто, вечно

Холодным весенним утром монахиня Йывень повстречала одного монаха, стоявшего посередине моста. По его лицу текли слёзы пока он смотрел в бездну.

"Что беспокоит Вас, брат?" - спросила Йывень, опасаясь за состояние молодого человека.

"Тщетность бытия!" - зарыдал монах. - "Что является результатом наших трудов, когда их плоды портятся так быстро? Ничто не вечно, и меньше всего - код, что я пишу. Всё, что я делаю, всё превратится в пыль... в ничто, навечно".

Вспомнив, как однажды учитель Банзен столкнулся с такими же мрачными мыслями, Йывень сняла огромный шарф, который она носила, и привязала один его конец к перилам. "Хороший прыжок на тарзанке всегда очищает голову", - сказала она. - "Нет ничего лучше погружения, чтобы вернуть перспективу. Разве Вы не согласны?" Она плотно привязала другой конец шарфа к щиколотке монаха, и прежде, чем он успел спросить, что значит тарзанка, она толкнула его через перила.

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

Монах с облегчением рассмеялся. Его мрачное настроение, которое до сих пор казалось постоянным, прошло. Монах обрёл просветление. Ничто не вечно, понял он.

Услышав смех монаха, Йывень улыбнулась и продолжила путь.



В тот же день к Йывень подошёл парень из клана монаха.

Он сказал: "Мой брат хочет знать, когда Вы вернётесь за шарфом и за ним; ибо он всё ещё болтается под мостом. И хотя в его сердце появился свет, его тело довольно тяжёлое и мне нужна Ваша помощь".

"Раз в его сердце свет", - сказала Йывень, - "то он в лучшем состоянии, чем когда я нашла его, и моя работа завершена".

Челюсть паренька отвисла: "Вы не можете оставить его в этом состоянии навечно!"

Йывень покачала головой. "Ничто не вечно", - сказала она печально.

Комментарий Ци


Но никогда не говорите это своей девушке, если не собираетесь продолжить фразу словами "... кроме нашей любви, конечно".

Стихотворение Ци


Банзен нарисовал картину, чтобы она радовала его сердце.
НИЧТО НЕ ВЕЧНО, гласила она, но не приносила ему радости.
Однажды картина была украдена.
Теперь Банзен смотрит на пустое место и улыбается.

Original: Nothing, Forever

вторник, 31 марта 2015 г.

Жизнь

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

"Объясните", - сказала настоятельница, показав на экран.

"Я разработал новую разрежённую структуру данных", - сказал монах, - "и я хотел посмотреть, можно ли её использовать для реализации эффективного моделирования игры Жизнь".

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

Джинью нахмурилась: "Значит это 'Жизнь', не так ли?"

Монах нервно кивнул.

Джинью очистила экран, как это делал монах, затем взяла стилус и написала:

ВСЕ НАШИ ТРУДЫ
ЗА ВСЕ ГОДЫ

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

Джинью вернула планшет монаху: "Очень точное моделирование".



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

Original: Life

пятница, 27 марта 2015 г.

Выбирай свои сражения

Из всех, кого порадовало назначение Жинг учителем, более всего был доволен Вангохан, монах клана Паука. У Вангохана было много идей на тему улучшения программного обеспечения Храма, и он был готов поделиться ими с тем, кто готов его выслушать.

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

"Ещё один фреймворк?" - сказал Баван. - "Мы уже используем Angular, Backbone, Bootstrap, Dojo, Ember, Jumpstart, Knockout"...

"Он считает, что у этого есть преимущества, которых нет у других", - сказала Жинг.

"Он считает?" - спросил Кайму, подняв бровь. - "А что же считает Жинг?"

Наступило неловкое молчание.

"Юная учительница", - нахмурился Банзен (и теперь Жинг почувствовала себя неуверенно, как и тогда, когда её отец называл её юной леди), - "Вы сражаетесь за Вангохана потому, что верите в его дело, ожидаете от него дружбы или боитесь яда в его приправах?"

Жинг сделала глубокий вдох. - "Уф", - сказала она, найдя внезапное вдохновение. - "Если мы не будем баловать старших разработчиков, выполняя их наиболее разумные просьбы, то они будут впадать в уныние и прекратят попытки улучшить храм. И мы будем в ответе за это".

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

Послушница Сато, ученица Банзена, подошла к нему после встречи: "Вы часто предостерегли меня от неизведанного. Сколько лет должно пройти, прежде чем Вы будете доверять мне, как доверяете Вангохану?"

"Уф", - сказал Банзен. - "Я верю только в то, что решение Жинг является плохим и что она скоро сама поймёт почему. Но если мы не будем баловать молодых учителей, выполняя их наиболее разумные просьбы, то они будут впадать в уныние и прекратят попытки улучшить храм. И мы будем в ответе за это".

Original: Choosing Your Battles

пятница, 20 марта 2015 г.

Мышеловка

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

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

"Расскажите о проекте 'мышь', который Вы создали", - приказал Банзен.

"У него чрезвычайно плохой дизайн", - сказала Жинг.

Старший монах с удовлетворением улыбнулся.

Банзен спросил: "Насколько плохой?"

"Сегодня утром наши инструменты оценки качества программного обеспечения нашли триста восемь отдельных недостатков", - ответила Жинг.

"Это проблема", - сказал Банзен. - "Если мне не изменяет память, то они должны были найти триста двадцать".

"Правильно", - сказала Жинг. - "Кажется, что кто-то отключил подсистему обнаружения утечки ресурсов. Автоматическая диагностика проекта прислала мне уведомление - я разберусь".

Банзен пожелал ей доброй охоты и повернулся к монаху: "Если когда-нибудь Вы испугаетесь, что в ваших стенах заведутся мыши, то прислушайтесь к здравому смыслу и купите четырёх прекрасных кошек. Но также прислушайтесь к Жинг и каждый день выпускайте к кошкам одну мышь, чтобы убедиться в том, что они не забыли, как охотиться".

Original: Mousetrap

среда, 18 марта 2015 г.

Будущее несовершенное

На следующий день та же самая монахиня посетила Шинпуру в его саду, где монах заканчивал зимнюю прополку.

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

Шинпуру вытащил сухой стебель, отдал его монахине и сказал: "Этот не подходит для моего сада. Так как несмотря на то, что всё ещё цепляется за жизнь, он будет забирать воду из рассады и приносить только горькие плоды".

Затем Шинпуру приложил ухо ко второму стеблю, идентичному первому. Через некоторое время он кивнул: "Этот может остаться только потому, что хочет быть частью сладкого урожая". Он вытащил второй стебель, помял его в руках и посадил глубоко в землю, чтобы тот ожидал прихода весны.

Original: Future Imperfect