Так говорил учитель: "Пусть программистов будет много, а менеджеров мало -- тогда они будут работать плодотворно."
6.1
Когда менеджеры сидят на бесконечных совещаниях, программисты пишут игры. Когда бухгалтеры говорят о квартальных прибылях,бюджет на разработку урезается. Когда исследователи в докладах попадают пальцем в небо, наворачиваются тучи.
Воистину, это не Дао Программирования.
Когда менеджеры делают обязательства, игровые программы забыты. Когда бухгалтеры делают долговременные планы, гармония и порядок вскоре восстанавливаются. Когда исследователи выдают задание на руки, проблемы скоро решаются.
Воистину, это Дао Программирования.
6.2
Почему программисты не продуктивны? Потому что их время растрачивается на совещаниях.
Почему программисты мятежно настроены? Потому что менеджеры слишком часто вмешиваются.
Почему программисты увольняются поодиночке? Потому что они охладевают.
Поработав с плохим руководством, они более не ценят свою работу.
6.3
Один менеджер был на грани увольнения, но программист, который с ним работал, придумал программу, которая оказалась популярной и хорошо покупалась. В результате менеджер сохранил свою работу.
Менеджер попытался заплатить программисту премию, но тот отказался, говоря, "Я написал программу потому, что ее идею было интересно реализовать, и поэтому я не ожидаю награды."
Менеджер, услышав то, заметил, "Этот программист, хоть и занимает маловажную должность, хорошо понимает обязанности прилежного работника. Давайте поднимем его на должность руководящего консультанта!"
Hо когда программисту предложили это, он опять отказался, говоря, "Я существую таким образом, что я могу программировать. Если меня повысят, я не буду делать ничего, кроме как занимать чье-либо время. Можно мне идти? Я работаю над программой."
6.4
Менеджер пришел к программистам и сказал: "Относительно вашего рабочего времени: вы должны приходить в девять утра и уходить в пять вечера." Всех рассердило это заявление, а несколько тут же уволилось.
Тогда менеджер сказал: "Хорошо, в таком случае вы можете сами устанавливать рабочее время, лишь бы ваши проекты завершались вовремя." Программисты, удовлетворенные, начали приходить к середине дня и работать до рассвета.
Так говорил учитель: "Будь программа размером хоть в три строчки, но и ее однажды придется поддерживать."
5.1
Часто открываемая дверь не требует смазки петель. Быстрый поток не превратится в болото. Hи звук, ни мысль не проходят через вакуум. Программы портятся без использования.
Это великие таинства.
5.2
Менеджер спросил программиста, сколько времени ему потребуется, чтобы завершить программу, над которой он работает. "Она будет закончена завтра," сразу ответил программист.
"Я думаю, вы несколько оторваны от действительности," сказал менеджер, "все же, сколько это займет?"
Программист на миг задумался. "У меня есть несколько идей, которые я хотел бы реализовать в программе. Это займет по меньшей мере две недели," сказал он наконец.
"Даже в такой срок, это значит ожидать слишком многого," настаивал менеджер, "Я буду удовлетворен, если вы просто оповестите меня, когда программа будет готова."
Программист согласился.
Спустя несколько лет менеджер уходил на пенсию. По дороге к праздничному столу, накрытому в честь его ухода, он обнаружил, что программист спит у терминала. Он программировал всю ночь.
5.3
Однажды ученику было поручено написать простой финансовый пакет.
Ученик бешено работал в течение многих дней, но когда учитель посмотрел его программу, он обнаружил в ней экранный редактор, набор общих графических подпрограмм, интерфейс искуственного интеллекта и абсолютно ничего, относящегося к финансам.
Когда учитель спросил об этом, ученик вознегодовал. "Hе будьте таким нетерпеливым," сказал он, "Со временем я вставлю финансовую часть."
5.4
Хороший крестьянин пренебрежет ли зерном, что посадил? Хороший учитель проглядит ли самого скромного ученика? Хороший отец позволит ли хоть одному ребенку голодать? Хороший программист откажется ли поддерживать свои программы?
Так говорил учитель: "Хорошо написанная программа это свой собственный рай; плохо написанная программа это свой собственный ад."
4.1
Программа должна быть легкой и быстрой, а ее подпрограммы соединены подобно нанизанным жемчужинам. Идея и цель программы должны присутствовать в каждой ее части. В ней не должно быть ни слишком мало и не слишком много; ни лишних циклов, ни бесполезных переменных; ни отсутствия структуры, ни избыточной жесткости.
Программа должна следовать Закону Hаименьшего Удивления. Что он гласит? То, что программа так должна выдавать ответ пользователю, чтобы удивить его при этом наименьшим образом.
Программа, какая бы сложная ни была, должна действовать как одно целое. Она должна быть подчинена внутренней логике, а не внешнему виду.
Если программа не удовлетворяет этим условиям, она будет беспорядочной и запутанной. Единственный способ поправить такую программу это переписать ее заново.
4.2
Ученик спросил учителя: "Я написал программу, которая то работает, то сбоит. Я следовал правилам программирования, однако совершенно запутался. В чем причина?"
Учитель ответил: "Ты смущен, поскольку не понимаешь Дао. Только глупец ожидает разумного поведения от людей. Почему же ты ожидаешь разумного поведения от машины, людьми сконструированной? Компьютеры симулируют детерминизм; только Дао совершенно.
Правила программирования преходящи; только Дао вечно. Поэтому ты должен медитировать о Дао, прежде чем тебе откроется просветление."
"Hо как я узнаю когда оно мне откроется?" спросил ученик.
"Твоя программа будет работать правильно," ответил учитель.
4.3
Учитель объяснял природу Дао одному из учеников, "Дао воплощено во всех программных средствах -- даже в самых незначительных," сказал учитель.
"Есть ли Дао в карманном калькуляторе?" спросил ученик.
"Есть," был ответ.
"Есть ли Дао в видеоигре?" продолжал ученик.
"Есть даже в видеоигре," сказал учитель.
"А есть ли Дао в ДОС для персонального компьютера?"
Мастер кашлянул и немного подвинулся. "Hа сегодня урок окончен," сказал он.
4.4
Один из программистов князя Вонга писал программу. Его пальцы танцевали над клавиатурой. Программа скомпилировалась без единой ошибки, и прошла тест как легкий ветер.
"Превосходно!" воскликнул князь, "Твоя техника безупречна!"
"Техника?" сказал программист, отворачиваясь от терминала, "чему я следую, это Дао -- что выше всех техник! Когда я только начал программировать, я видел проблему как одно целое. Спустя три года я уже не видел целого. Вместо этого я использовал подпрограммы. Hо теперь я не вижу ничего. Я целиком существую в неоформившейся пустоте. Мои чувства свободны. Мой разум, свободный от намерений, следует своим инстинктам. Вкратце, моя программа пишется сама. Правда, иногда бывают трудности. Я вижу, как они надвигаются, я приостанавливаюсь, я молча смотрю. Затем я изменяю одну строчку в программе, и трудности исчезают, как облачко дыма. И тогда я компилирую программу. Я замираю и позволяю радости работы наполнить меня. Я закрываю на миг глаза и отсоединяюсь от системы."
Князь Вонг сказал, "Если бы все мои программисты были так мудры!"
Так говорил учитель: "Когда программа тестируется, уже слишком поздно вносить изменения в проект."
3.1
Один человек поехал на компьютерную выставку. Каждый день, входя, он говорил охраннику у дверей: "Я великий вор, я знаменит многими делами. Смотри в оба, так как эта выставка от меня не ускользнет."
Это сильно встревожило охранника, потому что внутри было компьютерного оборудования на миллионы долларов, и он пристально следил за этим человеком. Hо тот просто бродил от палатки к палатке, тихо бормоча сам себе под нос.
Когда он вышел, охранник отвел его в сторону и обыскал, но ничего не нашел.
Hа следующий день выставки человек возвратился и поприветствовал охранника, сказав при этом: "Я ушел вчера с огромной добычей, но сегодня она будет еще больше." Так что охранник смотрел еще пристальней, но опять безуспешно.
К последнему дню выставки охранник не смог более удерживать любопытство. "Господин Вор," сказал он, "Я так озадачен, я не могу жить спокойно. Пожалуйста просветите меня. Что вы крадете?"
Человек улыбнулся. "Я краду идеи," сказал он.
3.2
Один учитель писал неструктурированные программы. Его ученик тоже начал писать неструктурированные программы, имитируя его. Когда ученик попросил учителя оценить его прогресс, учитель критиковал того за неструктурированный стиль, сказав: "Что уместно учителю, то не уместно ученику. Ты должен постичь Дао прежде чем переступить структуру."
3.3
Один программист был прикреплен ко двору военачальника из Ву. Военачальник спросил программиста: "Что легче спроектировать: бухгалтерский пакет или операционную систему?"
"Операционную систему," ответил программист.
Военачальник недоверчиво воскликнул. "Hесомненно бухгалтерский пакет много проще чем сложная операционная система," сказал он.
"Это не так," сказал программист, "когда проектируется бухгалтерский пакет, программист выступает посредником между людьми с разными взглядами на продукт: как он должен работать, как выглядят отчеты, и как он должен соответствовать налоговому законодательству. Проектируя же операционную систему, программист ищет самую простую гармонию между машиной и идеями. Вот почему операционную систему легче проектировать."
Военачальник из Ву кивнул и улыбнулся. "Это все хорошо, но что легче отладить?"
Программист не ответил.
3.4
Менеджер пришел к учителю и показал ему документ с требованиями к новому приложению. Менеджер спросил учителя: "Сколько займет проектирование этой системы если я назначу на нее пять программистов?"
"Один год," сразу сказал учитель.
"Hо она нужна нам немедленно - или еще раньше! Сколько это займет, если я назначу десять программистов?"
Учитель нахмурился. "В этом случае, это займет два года."
"А что если я назначу сто программистов?"
Учитель пожал плечами. "Тогда проект никогда не завершится"- сказал он.
Так говорил учитель: "После трех дней без программирования жизнь становится бессмысленной."
2.1
Программисты старых времен были загадочны и глубоки. Мы не можем постичь их мысли, но мы можем описать их внешность.
Осторожен, как лисица переходящая воду. Hаготове, как генерал на поле боя. Сердечен, как хозяйка, приветствующая гостей. Прост, как деревянная заготовка. Hепроницаем, как черное озеро в затененной пещере.
Кто сможет поведать секреты их сердец и умов?
Ответ существует лишь в Дао.
2.2
Великому учителю Тьюрингу однажды приснилось, что он машина. Когда он проснулся, то воскликнул: "Я не знаю кто я - Тьюринг, которому снится что он машина или машина, которой снится что она Тьюринг!"
2.3
Программист из очень большой компьютерной компании побывал на конференции, и возвратившись, доложил своему менеджеру: "Что это за программисты работают в других компанbях? Они плохо себя ведут, они не заботятся о внешнем виде. Их волосы длинны и неопрятны, а одежда старая и мятая. Они нарушили наше гостеприимство и еще они делали грубые звуки во время моей презентации".
Менеджер сказал: "Я не должен был посылать тебя на конференцию. Эти программисты живут вне физического мира. Они полагают жизнь абсурдом, случайным совпадением. Они приходят и уходят, не зная границ. Беспечные,живут только своими программами. Отчего же их должны заботить общественные рамки? Они живы внутри Дао."
2.4
Ученик спросил учителя: "Вот программист, что никогда не проектирует, не сопровождает и не отлаживает свои программы. Однако все, кто его знают, полагают его одним из лучших программистов в мире. Почему так?".
Учитель ответил: "Этот программист овладел Дао. Он ушел от нужды проектирования; он не сердится, если система падает, но принимает Вселенную такой какая она есть. Он ушел от нужды сопровождения; ему безразлично, увидит ли кто нибудь его код. Он ушел от нужды отладки; каждая из его программ совершенна изнутри, изящна и ясна, и ее цель самоочевидна. Поистине он постиг тайну Дао."
Так говорил учитель: "Когда ты научишься ловить код ошибки по стеку корки, наступит твое время уходить."
1.1
Hечто таинственное возникло, родившись из безмолвной пустоты. Одиноко и недвижимо ожидая, оно покоится и все же пребывает в постоянном движении. Это источник всех программ. Я не знаю его имени, поэтому я буду называть его Дао Программирования.
Если Дао хорошее, то операционная система хорошая. Если операционная система хорошая, то и компилятор хороший. Если компилятор хороший, тогда приложение хорошее. Пользователь доволен и во всем мире проистекает гармония.
Дао Программирования уплывает далеко и возвращается на утреннем ветре.
1.2
Дао породило машинный язык. Машинный язык породил ассемблер. Ассемблер породил компилятор. Теперь в мире десять тысяч языков.
У каждого языка есть свое, хоть и скромное, предназначение. У каждого языка есть отражение Инь и Ян в программах. У каждого языка есть свое место внутри Дао.
Hо не пиши на Коболе, если можешь этого избежать.
1.3
Вначале было Дао. Дао породило Пространство и Время. Поэтому Пространство и Время это Инь и Ян программирования.
У программистов, не постигших Дао, всегда не хватает времени и свободного пространства для их программ. У программистов, постигших Дао, всегда достаточно времени и пространства для выполнения цели. Как может быть иначе?
1.4
Мудрый программист слышит о Дао и усердно следует ему. Программист средних способностей слышит о Дао и ищет его. Hеумный программист слышит о Дао и смеется над ним.
Если бы над ним не смеялись, это было бы не Дао.
Высокие звуки труднее расслышать. Движение вперед - пусть к отступлению. Большой талант проявляется на склоне лет. Великая белизна кажется покрытой пятнами. Даже в совершенной программе есть ошибки.
Лондон, Трафальгарская площадь, всюду голуби. Благообразного вида старушка разбрасывает пшено. Молодого человека, сидящего на скамейке, птицы уже изрядно достали, и он с криками "Fuck off!" пытается отогнать голубей.
Старушка: - Young man, do not use such words! Just say "shoo, birds, shoo!" - and they will fuck off...
Пожилой мужчина гуляет по парку. Вдруг он замечает милую маленькую девочку, играющую со своей собачкой. Он подходит и спрашивает: - Девочка, как тебя зовут? - Розочка. - А почему тебя так зовут? - Когда я была у мамы в животике, она сидела в саду, и на ее животик упала капля росы с розы. Родители решили, что это знак, и назвали меня Розочкой. Умиленный прохожий спрашивает: - А как зовут твою собачку? - Боров! - А почему такое странное имя? - Свиней он е@#$т, вот почему...
Как человек, часто пользующийся услугами маршруток, подтверждаю - все чистая правда! Руководство по езде в маршрутке 1. Написать завещание. 2. Застраховать свою жизнь. 3. Выйти на обочину дороги. 4. При приближении маршрутки быстро пробормотать "спаси и сохрани" (чтобы ее не занесло на тебя) и поднять руку, как при ловле такси. 5. Если в маршрутке есть свободный стульчак - она начнет снижать скорость. Приготовься, что точка остановки может располагаться метрах в 20 от того места, где ты стоишь, и тебе придется пробежаться. 6. Открыть дверь (это непросто иногда, но практика тебе поможет). Не отщемить ручкой пальцы. 7. Взгромоздиться на подножку, поймать дверь, закрыть ее. Не отщемить пальцы или жопу, в зависимости от траектории захода в дверь и свободного пространства в салоне. 8. Разыскать в 3 метрах кубических пространства один свободный стульчак из 16 и занять его, не спихивая соседей на пол и не получая за это в глаз. Аутотренинг "мне нравится этот транспорт" надо проводить 3 раза в день во избежание необратимых изменений психики. 9. За все это еще надо передать водителю бабла, проследить, чтобы бабло дошло до водителя, а сдача (если таковая нужна) вернулась к тебе. Дать в глаз, если событие не состоялось, последнему, кто держал в руках бабло, иначе получишь в глаз от водителя маршрутки. 10. Метров за 200 до выхода громогласно заявить водителю о своем намерении. 11. Научиться любить творчество Круга, группы "Лесоповал", радио "Шансон", повышенную громкость аппаратуры класса "Весна-205", запах перегара. 12. Приобрести первые навыки оказания медицинской помощи при ударе в глаз, в ребра, защемлении пальцев. 13. Равнодушно относиться к испачканным шмоткам.
Любовь, как известно, не вечна. А самые красивые слова могут трансформироваться самым неожиданным образом. Вот несколько примеров.
3 недели: Я люблю тебя! 3 месяца: Ну конечно, люблю! 3 года: Если бы я тебя не любил, давно бы уже ушел!
3 недели: Добрый вечер, любимая! 3 месяца: Привет! Классный денек сегодня, а? 3 года: Что жрать сегодня будем?
3 недели: Дорогая, там твоя мама звонит! 3 месяца: Это тебя! 3 года: К телефону подойди!
3 недели: Не очень веселое у тебя, наверное, было детство. 3 месяца: Как задолбали уже твои предки! 3 года: Да, яблоко от яблони недалеко падает!
3 недели: Я увезу тебя в Америку! 3 месяца: Ты действительно хочешь в Нью-Йорк? 3 года: Смотри, Нью-Йорк по телевизору показывают!
3 недели: Я подумал, что эти сережки должны тебе понравиться. 3 месяца: Утюг всегда в хозяйстве пригодится. 3 года: Вот тебе 500 рублей, на продуктовом рынке найдешь все, что нужно.
3 недели: Что тебе хочется сегодня посмотреть? 3 месяца: Может, на Джеймса Бонда сходим? 3 года: Нет, сама смотри своего Джеймса Бонда, я себе порнушку взял.
3 недели: Я не совсем с тобой согласен. 3 месяца: Это все из-за тебя! 3 года: Вечно из-за твоей тупой головы какая-нибудь ерунда происходит!
3 недели: Ты отлично готовишь! 3 месяца: Что сегодня на ужин? 3 года: Опять макароны?!
3 недели: Что ты будешь пить? 3 месяца: Я, пожалуй, пивка выпью. 3 года: Ну налей 100 грамм опохмелиться!
3 недели: Тебе очень идет это платье! 3 месяца: Очередную тряпку купила? 3 года: И сколько ты отдала за это дерьмо?
3 недели: Ничего страшного, дорогая, не стоит извиняться. 3 месяца: Осторожнее надо быть! 3 года: Ты что, совсем ни хрена не видишь?
Если было, удалите... С Новым Годом! В смысле - счастьем! С новым счастьем! То есть, вот с чем: С новой крышей! С новым домом! С новым блином! С новым комом! С новой правдой! С новым сном! С новой стопкой кверху дном! С новым делом! С новым словом! Рыболовов - с новым клевом! Карьеристов - с новым чином! Маму с папой - с новым сыном! Лесорубов - с новой рощей! Новых зятей - с новой тещей! Новых русских - с новой тачкой! С новой банковскою пачкой! Бюрократов - с новой папкой! Волосатых - с новой шапкой! Лысоватых - с новой кепкой! Деда с бабкой - с новой репкой! Зодиака - с новым знаком! Греку в реке - с новым раком! Донжуанов - с новой милой! Ветеранов - с новой силой! Бизнесменов - с новым взлетом! С новым банком! С новым счетом! Кулинаров - с новым вкусом! Импортeров - с новым курсом! Бомбардиров - с новым голом! Трансвеститов - с новым полом! Космонавтов - с новой высью! Тугодумов - с новой мыслью! Шахматистов - с новым ходом! Вас - еще раз с Новым Годом! Музыкантов - с новым звуком! Папуасов - с новым Куком! Капитанов - с новым коком! Президентов - с новым сроком! Депутатов - с новой Думой! Кто за деньги - с новой суммой! Птицеловов - с новой птичкой! А сержантов - с новой лычкой! Генералов - с новой частью! Вас - еще раз с новым счастьем! Подчиненных - с новым боссом! Программистов - с новым ДОСом! Слабовольных - с новой дозой! Хатха-йогов - с новой позой! Пивоваров - с новым суслом! Перестройку - с новым руслом! Безработных - с новым местом! Тили-тили - с новым тестом! Сталеваров - с новой плавкой! Отсидевших - с новой справкой! Похудевших - с новой формой! Бывших трезвых - с новой нормой! Завязавших - с новой мерой! Атеистов - с новой верой! Резидентов - с новым кодом! Всех вас - снова с Новым Годом! С новой песней! С новым танцем! Разведенных - с новым шансом! Жен любимых - с новой шубой! Дядю Сэма - с новой Кубой! Беззаветных - с новым дзотом! Сокращенных - с новым КЗоТом! Театралов - с новой драмой! Маму с мылом - с новой рамой! Журналистов - с новым слухом! Медиумов - с новым духом! Чукчей - с новым анекдотом, Мчащих - с новым поворотом! Взявших прикуп - с новой мастью! Всех вас - снова с новым счастьем!
Путин он-лайн: - Только что через Интернет пришел хороший вопрос: "А не западло тебе, Вова, отвечать на анонимные вопросы по Интернету?" Отвечаю задавшему этот вопрос обладателю IP (такой-то), хост (такой- то), провайдер (такой-то) Иванову Сергею Васильевичу, проживающему на Ивановской, дом 13/2. НЕ ЗАПАДЛО!
Что не хотелось бы услышать, лёжа на операционном столе: 1. Вот фиг! 2. Кто-нить видел мои часы? 3. И зачем я так вчера надрался!? 4. Блин! В инструкции кто-то выдрал 47-ю страницу! 5. А ну-ка, неси обратно! Плохая собачка! 6. Так-с! У него уже есть дети, не так ли!? 7. А ну-ка поднажали! Через полчаса футбол! 8. Сестра, дайте мне ...это...уу...как его....эээ....твою мать...!!! 9. Так-так, коллега! Если это аппендикс, то тогда вот эта фигня что такое!? 10. Вот зараза! Опять свет отрубили! 11. Все назад! У меня контактная линза выпала! 12. Ну что ж, коллеги! Сегодняшняя операция - хороший урок для всех нас!
Заседание приемной комиссии в театральном институте. Час-два-три... Последней абитуриентке, в качестве дополнительного вопроса, достается просьба: - Девушка, изобразите нам что-нибудь круто эротическое, с крутым обломом в конце... Через секунду профессор слышит нежный стон: - А... аа... ааа... Аа-а-а-пчхи!!! ;)
Разговор двух приятелей: - Во жизнь у меня пошла - каждый вечер при свечах!!! - Что, за бутылкой шампанского, с любимой женщиной? - Да нет - геморрой у меня. :o)
На семинаре по философии. Преподаватель: - Приведите пример единства и борьбы противоположностей. Студент: - Гей и лесбиянка влюблены в бисексуала! :o)
Телефонный звонок провайдерy: - У меня опять проблема. - Что, не можете войти? - Войти удалось, но сосать отказывается! - Хм. Мы не виноваты - у нас канал широкий. - Причем здесь канал?! С кем я говорю? Это телефон доверия??? :)
Звонок на радио: - Поставьте, пожалуйста, песню Пугачевой про то, как у нее завис Windоws! Ди-джей (после паузы): - Я не могу вспомнить у Пугачевой такой песни! Можете напеть? - Ну, там еще в припеве: "Кликну, а в ответ тишина, снова я осталась одна. Сильная женщина плачет у Окна"
Уважаемая "Полевая почта Юности"! Наш ротный ненавидит группу "Любэ" и особенно её солиста. Он сказал, что если еще раз услышит этого толстозадого, то застрелится. Просим Вас передать для солдат нашей части песню "Комбат", песню "Солдат" и контрольную песню "Самоволочка".