Программист А. присел на край скамейки.
— Как дела на работе? — спросила Грейс.
— Баги замучили, — пожаловался программист А. — Не видно им конца. Больше ни на что времени не остается.
— Хорошо, — сказала женщина-адмирал. — Я вижу ты понял первую истину — дуккху. Жизнь программиста — это непрерывная череда багов, страданий по их нахождению и суеты по их исправлению.
— Да уж, — сказал программист А. — Как может быть иначе, если каждый пишет код, как его левая нога захочет, и никто ничего не тестирует!
— Я вижу, что ты понял и вторую истину, самудаю, — сказала женщина. — Для непрерывной череды багов есть причина.
— И что дальше? — скептически спросил программист А.
— Дальше ты должен понять, что все это можно изменить.
— Как? — удивился программист А.
— Этого я тебе пока сказать не могу, — сказала Грейс. — Но уверяю тебя, даже просто понимание того, что это можно изменить, наполнит тебя неизбывной радостью и блаженством.
— Поэтому ты все время и улыбаешься? — спросил программист А.
— Что? — переспросила Грейс.
— Все время улыбаешься — от понимания? — уточнил А.
— А, это, — сказала Грейс. — Нет. Улыбаюсь я, потому что мне классный анекдот вчера рассказали. Приходит, значит, мужик в публичный дом, и…
Они посидели еще какое-то время, рассказывая друг другу анекдоты, потом Грейс Хоппер исчезла, растаяв в воздухе, а программист А. долго оставался на скамейке, глядя на блики лунного света в озере и вспоминая анекдоты, рассказанные Грейс. С лица его не сходила блаженная улыбка.
К программисту А. приставили в помощники начинающего молодого программиста для работы над проектом.
— Ну, и чего ты знаешь? — спросил программист А.
— Все знаю, — ответил помощник. — Знаю языки программирования — Java, C++, Delphi, NET. Базы данных знаю — Oracle, SQL Server, DB2, работал и с MySQL, и с PostgreSQL. Знаю Perl, PHP, и Python. Не попаду впросак и с Web-технологиями: ASP, JSP, SOAP, AJAX и Web-сервисы мне хорошо известны. Разбираюсь в вычислительных методах и теории алгоритмов, легко отличу машину Тьюринга от машины Поста. Знаю OOP, AOP, UML и модели программирования, extreme programming и TDD, да много чего еще. Какое дадите мне первое задание?
— Читай документацию, — сухо сказал А.
Через две недели программист А. вновь спросил начинающего программиста:
— Так чего же ты знаешь?
— Кое-чего знаю, — ответил тот. — Знаю, что есть языки программирования, и что есть у них общее и различия. Знаю про базы данных, работал с несколькими. Есть многочисленные языки и технологии в Web-программировании, знаю некоторые из них. В общих чертах с архитектурой программных приложений, вроде бы, знаком. Ну и еще теорию кое-какую припоминаю. Не дадите ли мне теперь задание?
— Читай пока документацию, — уже мягче сказал программист А.
Еще через две недели они снова встретились, и А спросил:
— Что ты теперь знаешь?
— Кажется, будто уже ничего не знаю, — ответил начинающий программист. — Все языки перемешались, не помню, в котором нужно писать try, в котором when, только знаю, что результат будет один и тот же. Базы данных для меня все на одно лицо, понимаю, как работают, а что с ними делать — не знаю. В интернете — куча технологий, протоколов один поверх другого, а делают все одно и то же, c одинаковым результатом. Теорий разных много, а говорят все одно. Все их знают, никто им не следует, а когда пытаются следовать, получается только хуже.
— Вот теперь ты готов к первому заданию! — обрадовался программист А.
— Ну тебя в ж…, сам делай свое задание, — сказал начинающий программист и, хлопнув дверью, ушел.
— Какая хорошая нынче молодежь пошла, — думал программист А., глядя ему вслед и смахивая навернувшуюся слезу. — Способные, не то, что мы! Все на лету схватывают. Молодцы!
И он, открыв бутылку Sam Adams, уселся за компьютер.
Программист А. сидел в ирландском пабе Hennessy 's в Бостоне. В окно был виден оживленный бульвар через дорогу, и за ним — ступени площади Говермент-центра. Мимо окна то и дело проходили веселые компании, в руках многие держали большие пластиковые стаканы с пивом. Незнакомая девушка помахала ему сквозь стекло. На столе перед программистом А. стояла полуторапинтовая кружка Гиннесса. Напротив А. сидел Святой Патрик, в накидном плаще, с длинным посохом в руках, и рассказывал свою историю.
— Ну и вот, выкрали меня, увезли в Ирландию и продали там в рабство, — говорил Патрик. — Хозяин сделал меня пастухом, и шесть лет я пас овец у подножий местных гор практически в одиночестве. Потом я услышал голос, который приказал мне убежать и вернуться домой. Я убежал, попал на корабль, плывущий в Англию, но на пол-пути был опять захвачен разбойниками, продан в рабство, а через два месяца снова убежал и семь лет скитался по Европе. Потом осел в одном из монастырей и начал учиться богословию.
Программист А. поднял было кружку, но Патрик жестом его остановил. Программист А., вздохнув, поставил кружку обратно на стол.
— Ну короче, — продолжал Патрик. — В конце концов монастырь послал меня в Ирландию для обращения ее в христианство. Чтобы привлечь внимание короля, я разжег огромный костер в ознаменование начала весны, что никто не имел права делать раньше короля. Был большой шум, но король неожиданно отнесся ко мне с пониманием, пригласил во дворец и вообще разрешил делать все, что я хочу.
За окном напротив паба кто-то упорно пытался запарковаться между двумя близко стоящими машинами. Ничего не получалось, бедолага немного отъезжал, и начинал все сначала. Несколько человек со стаканами в руках остановились и громко помогали советами.
— Такова моя история, — закончил Святой Патрик.
Они помолчали.
— Так подожди, — вдруг спросил программист А. — А пиво-то здесь причем?
— А я откуда знаю! — воскликнул Патрик. — Это вас надо спросить. Я вообще не пью, и пиво ненавижу. У меня, можно сказать, аллергия. Очень мне нелегко было с этими ирландцами работать. Поэтому, собственно, меня Святым и назвали…
— Так вот оно что… — сказал программист А. и неуверенно посмотрел на полную кружку Гиннесса в руке.
— Да ты пей, пей. Чего уж там, праздник все-таки! — сказал Святой Патрик, встал, махнул на прощание рукой, вышел на улицу прямо через стекло и растворился в толпе.
— Happy St. Patrick Day! — крикнули программисту А. из-за соседнего столика. Разгоралось веселье.
Как-то программист А. сидел за стойкой в баре, и знакомый бармен, желая над ним подшутить, поставил перед ним два бокала — пустой и полный — и спросил: