Александр Петровчич - Записки программиста А.
К программисту А. приставили в помощники начинающего молодого программиста для работы над проектом.
— Ну, и чего ты знаешь? — спросил программист А.
— Все знаю, — ответил помощник. — Знаю языки программирования — 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, уселся за компьютер.
0111101Программист А. сидел в ирландском пабе Hennessy 's в Бостоне. В окно был виден оживленный бульвар через дорогу, и за ним — ступени площади Говермент-центра. Мимо окна то и дело проходили веселые компании, в руках многие держали большие пластиковые стаканы с пивом. Незнакомая девушка помахала ему сквозь стекло. На столе перед программистом А. стояла полуторапинтовая кружка Гиннесса. Напротив А. сидел Святой Патрик, в накидном плаще, с длинным посохом в руках, и рассказывал свою историю.
— Ну и вот, выкрали меня, увезли в Ирландию и продали там в рабство, — говорил Патрик. — Хозяин сделал меня пастухом, и шесть лет я пас овец у подножий местных гор практически в одиночестве. Потом я услышал голос, который приказал мне убежать и вернуться домой. Я убежал, попал на корабль, плывущий в Англию, но на пол-пути был опять захвачен разбойниками, продан в рабство, а через два месяца снова убежал и семь лет скитался по Европе. Потом осел в одном из монастырей и начал учиться богословию.
Программист А. поднял было кружку, но Патрик жестом его остановил. Программист А., вздохнув, поставил кружку обратно на стол.
— Ну короче, — продолжал Патрик. — В конце концов монастырь послал меня в Ирландию для обращения ее в христианство. Чтобы привлечь внимание короля, я разжег огромный костер в ознаменование начала весны, что никто не имел права делать раньше короля. Был большой шум, но король неожиданно отнесся ко мне с пониманием, пригласил во дворец и вообще разрешил делать все, что я хочу.
За окном напротив паба кто-то упорно пытался запарковаться между двумя близко стоящими машинами. Ничего не получалось, бедолага немного отъезжал, и начинал все сначала. Несколько человек со стаканами в руках остановились и громко помогали советами.
— Такова моя история, — закончил Святой Патрик.
Они помолчали.
— Так подожди, — вдруг спросил программист А. — А пиво-то здесь причем?
— А я откуда знаю! — воскликнул Патрик. — Это вас надо спросить. Я вообще не пью, и пиво ненавижу. У меня, можно сказать, аллергия. Очень мне нелегко было с этими ирландцами работать. Поэтому, собственно, меня Святым и назвали…
— Так вот оно что… — сказал программист А. и неуверенно посмотрел на полную кружку Гиннесса в руке.
— Да ты пей, пей. Чего уж там, праздник все-таки! — сказал Святой Патрик, встал, махнул на прощание рукой, вышел на улицу прямо через стекло и растворился в толпе.
— Happy St. Patrick Day! — крикнули программисту А. из-за соседнего столика. Разгоралось веселье.
0111110Как-то программист А. сидел за стойкой в баре, и знакомый бармен, желая над ним подшутить, поставил перед ним два бокала — пустой и полный — и спросил:
— Что лучше — пустой бокал пива или полный?
— Посмотрим, — сказал программист А. — Полный бокал пива подобен обещанию — играет и искрится, сулит хорошее, но не всегда выполняется, а если выполняется, результат может быть совсем не тем, что хотелось бы. Пустой бокал пива подобен сердцу мудреца — ничего в нем нет; нет желаний — нет и разочарования, нет побуждений — нет и ошибок, нет ожиданий — нет и обмана. Конечно, пустой бокал пива гораздо лучше.
И он потянулся рукой к полному бокалу.
— Ага! — воскликнул бармен, радуясь, что шутка удалась. — Почему же ты берешь полный бокал, а не пустой, ведь пустой лучше?
— Я говорил о пустом бокале пива, — ответил программист А. — А это просто пустой бокал. Не выпив пива, не увидишь разницы.
Бармен удивился.
0111111— Решил купить себе мерседес, — рассказывал как-то за пивом приятель программисту А. — Пошел в салон, все как обычно, поторговался с дилером по имени Джим, обо всем договорились, только точно такой машины, как я хочу — CLK350 кабриолет цвета “иридиум силвер” — у них, естественно, не оказалось. Заказали машину из Германии, стал ждать. Через месяц звонит счастливый Джим и сообщает, что машина пришла, можно забирать. Приезжаю в салон, сияющий Джим выводит меня на парковку, показывает машину, и что ты думаешь?
— Что? — спросил А.
— Это не кабриолет, а роадстер, и цвета не “иридиум силвер”, а “капри блу”! Представляешь?!
— Да ты что?! — воскликнул программист А. — Не могу поверить!!
— Представляешь?! — возмущался приятель.
— Дай мне телефон этого Джима, — сказал А.
— Зачем? — не понял приятель.
— Следующую машину я буду покупать только у него, — сказал А.
— A? — переспросил приятель.
— Я даже уже и не надеялся, что есть такие дилеры, — сказал программист А. — Посуди сам, ему безразличны внешние признаки, и он не обращает внимания на незначительные детали, они не отвлекают его внутренний взгляд. Сквозь обманчивую мишуру цветов и моделей, он смотрит в суть и стремится к главному — продать хорошую машину по хорошей цене. Я уверен, что если бы ты сел в этот роадстер и проехался, ты бы уже с ним не расстался. Я тебе говорю, этот Джим — истинный мудрец!
— Да? — удивился приятель. — А я-то, дурак, решил, что он просто раздолбай.
1000000Как-то к программисту А. подошел индийский программист и сказал:
— Я, вроде, уже не первый год занимаюсь программированием, работаю в большой компании, пишу качественный код, оптимизирую, применяю эффективные алгоритмы, тестирую то, что написал. Коллеги со мной считаются, начальство мною довольно. И все-таки — что-то не то… Не подскажешь, что я делаю не так? Может, научишь?
— А чего не научить, — ответил программист А.
Через какое-то время индийский программист вернулся в свой отдел. Работать начал лучше и эффективнее прежнего. Проектируя, был умен, как архитектор. Тестируя, становился наивен, как QA. Никто не мог найти в его коде баг, кроме него самого. Помогал менеджерам, подсказывал отделу маркетинга, разговаривал с клиентами. Вскоре получил повышение, потом стал начальником отдела.
Когда услышал об этом программист А., он очень расстроился.
— Ну надо же! — причитал он, разводя руками. — Учил я его, учил, а он так ничего и не понял! Все ведь сделал наоборот!
1000001Программиста А. cпросили как-то за пивом:
— Ну, как оно все на самом деле?
— Знавал я одного умного человека, — ответил программист А. — Лучше его не было среди нас. Любая задача была ему по плечу. С алгоритмами обходился так, словно все четыре тома Кнута издательства Эдисон-Уэсли были отпечатаны в его памяти. Смотрел на предмет, видел свойства и методы, наследственность и полиморфизм. Объектные модели строил, словно слова складывал в стихи. Написать компилятор самокомпилирующегося языка и за работу не считал. И вот однажды решил он разобраться в том, как работает Windows XP. Две недели от компьютера не отходил, изучал код, наконец понял. После этого три дня ни слова не говорил, не спал и не ел. На четвертый день уволился с работы, и больше никогда к компьютеру не подходил. Слыхал я, работает с тех пор продавцом в супермаркете где-то в Неваде. Вот я и говорю, если умный человек, поняв такую малость как Windows XP, все забросил и исчез, то что будет со мной, глупцом, если я пойму все? Нет уж, лучше я об этом и думать не буду, как бы случайно чего не понять!