Программистов во всем мире считают разновидностью ПСИХОВ, причем не
таких уж безобидных. В обществе во всю гуляют ужасные рассказы о вирусах
и их безумных авторах, готовых ради ложно понятого самоутверждения
ставить под угрозу работу целых отраслей промышленности.
Если забыть о вирусах, то больше о программистих ничего не
известно. Многолетние наблюдения за ними показывают, что в основном они
безобидные и приветливые люди, увлеченные своей работой. Иногда их
трудно понять. Для облегчения вашего общения с близким, знакомым или
подчиненным программистом предлагаем вашему вниманию "Бусидо
программиста...", т.е. список моральных и жизненных правил, которым
вольно или невольно следует любой программист.
Бусидо носит приблизительный характер, и, строго говоря,
необязательно к исполнению. Это "рекомендованное чтение", обобщение
результатов наблюдений, делать которые вообще никто не просил.
После "Бусидо" приводятся комментарии, объясняющие используемые
термины, жаргонные словечки и философские концепции.
БУСИДО ПРОГРАММИСТА НА IBM, PC, XT, AT, PS/2 и т.д. В СССР
1. Программист должен иметь толстую задницу, пустую голову и
коротко остриженные ногти на правой руке.
2. Программист должен стремиться к отладке. Если ситуация имеет два
выхода, один из которых - завершить работу над программой, а другой
отлаживвать дальше, то программист должен выбирать второй путь.
3. Дата завершения программы невычислима и не постижима. Для
спокойствия души программист должен вообще забыть о том, что он когда-
нибудь кончит писать эту программу.
4. Программист программирует процесс собственного программирования.
5. Если в вашей программе есть байт, который вам не нравится,
перепишите ее всю.
6. Хороша та программа, которая продается. Программа не считается
законченной, пока клиент не расплатился.
7. На вопрос: "Можете ли вы написать данную программу?" настоящий
программист отвечает одним из двух способов:"Могу" или "Могу, но не знаю
как".
8. Нет игр, кроме ТЕТРИСа, да и тот нудянка страшная.
9. Настоящий программист пользуется стандартными средствами. Почти
все программы уже давно написаны.
10. Обязательные действия настоящего программиста: распечатывать
дампы, читать документацию, дышать, есть и спать. Высший приоритет у
сна.
11. Информация аддитивна.
12. Настоящий программист должен иметь четко сформулированное
представление о месте программирования в жизни. Например:
- Любое неотложное дело можно отложить на любое неопределенное
время. Нельзя откладывать только излишества и развлечения.
- Работа должна напоминать досуг.
- От работы кони дохнут.
- Лучше ничего не делать, чем делать ничего. и т.д.
13. Зарезервировано для дальнейшего развития.
КОММЕНТАРИИ
Почему в СССР? Как сказал поэт:
"Я люблю эту грешную землю
Потому что другой не видал"
Что такое "Бусидо"? Буквально в переводе с японского - "путь
воина", т.е. сборник моральных установок японского самурая,
концептуально более широкий, чем японский военный устав. Следование
принципам "бусидо" обязательно и приоритетно для самурая и необязательно
для просто вооруженного японца.
Имеют хождение другие бусидо вроде знаменитого эссе "Настоящий
программист программирует только на фортране". Вопрос о совместимости
всех "бусидо" не обсуждается, т.к. сознательно не исследовался автором.
1. Использована знаменитая трехшаговая схема Ф.Э. Джержинского.
Так же как и в оригинальном высказывании, все рекомендации носят чисто
иносказательный характер. Более полно этот принцип звучит так:
"Программист должен уметь сидеть за дисплеем по 24 часа в сутки (или по
25/23 - в день осенне-весеннего перевода часов); должен уметь не думать
ни о чем, кроме программы, и при игре в ТЕТРИС не задевать ногтем за
клавишу ESCAPE (на старой клавиатуре с 84 клавишами)". Наиболее
сушественен второй принцип, в своем развитии простирающийся до системы
йогов и буддийской техники психорегуляции.
См. также комментарий к принципу 3.
2. "Самурай должен стремиться к смерти. Если есть два пути и один
из них ведет к смерти, то самурай должен вступить на путь, ведущий к
смерти."
Программист работает над программой, пока его начальник не вырвет
ее из рук программиста насильно и не объявит официально об окончании
работы над программой. (Здесь имеются в виду, конечно, большие
программы, а не маленькие. Любопытно исследовать вопрос о том, как с
ростом сложности программы она скачкообразно переходит из разряда
маленьких программ в разряд больших, или нескончаемых; и далее, по мере
дальнейшего усложнения, перескакивает в разряд програмных проектов с
непредсказуемам состоянием завершенности.
См. также книгу Ф.Брукса "Мифический человеко-месяц".
3. Коррелирует с второй частью принципа первого. Ни мысли об
окончании работ, ни мысли о деньгах или престиже не должны занимать
голову программиста даже в режиме Terminate but Stay Resident
(Окончиться, но не освобождать память). Память программиста во время
работы над программой должна быть полностью отдана программе. Опыт
показывает, что любые посторонние мысли в конечном счете только мешают.
Что делать, если посторонние мысли все-таки лезут? Или заниматься
аутотренингом; или найти работу поинтереснее; или найти, как обойти
данное неинтересное место в программе или сделать его интересным; или
ничего не делать с сознанием того, что работаешь медленнее и хуже, чем
мог бы; или устоить перерыв.
4. В древности считалось, что программирование начинается с
рисования блок-схем. Опыт показывает, что начинать программирование
нужно задолго до и кончать значительно позже этапа собственно работы с
текстом программы.
Этот принцип работы глубок. Что вы, собственно, хотите сказать
своей программой? Хватит ли у вас сил, средств и ресурсов? Не написана
ли она уже давно другим? Нужна ли она будет кому-нибудь после того, как
она примет товарный вид? Сможет ли этот кто-нибудь ее купить, при
условии, что вы произвели ее для продажи? И, опять же, если вы
преполагаете продавать свою программу, как и за сколько вы будете ее
продавать?...
Все эти и множество других вопросов могут влиять на текст вашей
программы.
5. К этому надо стремиться. В этом состоит подлинное исскуство.
6. Каждый программист или имеет свое мнение о хорошей программе,
или когда-нибудь слышал чье-то. Пишущие на Паскале стараются не
применять оператор GOTO и рассуждают об абзацных отступах. Пишущие на СИ
стараются размещать не более одной процедуры на экране. Пишущие на языке
ассемблера изощряются не только в операторах, но и в комментариях. И
т.д. Все это существенно, если вы пишете программу не на продажу. В
этом случае вы просто пишете программу. Следовать принципу
"программирования программирования" не обязательно.
Другое дело - программировать товарный программный продукт. Текст
товарной программы может быть красивым, но время обычно против красоты.
Покупатель руководствуется совсем другими критериями, чем красота
исходника. С другой стороны, красиво написанная программа более удобна с
точки зрения отладки, содержит меньше логическких ошибок и обычно
работает более надежно. Единственный выход - сразу писать красиво.
7. Только так. Если вы еще не понимаете, почему недопустимы другие
ответы, все равно отвечайте одним из двух предложенных способов не
задумываясь.
8. Игры, антивирусы, NORTON COMMANDER и прочие резиденты, драйверы
ALFA и BETA должны быть удалены из памяти, а то и вообще с винчестера.
Это - детские болезни.
Что касается игры ТЕТРИС, то это самая лучшая компьютерная игра, но
все равно нудная.
9. Этот принцип можно назвать глубочайшим. О, сколь многие
потратили месяцы и годы на написание программ, которые уже давно
написаны.
Одно по-настоящему внимательное прочтение руководства по MS-DOS
избавит вас от многих и многих разочарований и неприятных открытий.
10. Можно быть программистом и не писать программы. Нельзя долго
оставаться программистом, не читая документацию. Распечатка дампов
необязательна ровно настолько, насколько не обязательно открывать капот
собственной автомашины (просмотр дампов на экране - полумера).
Невозможно программировать не выспавшись. Если вы не программист, но
начальник программистов и заставляете их приходить на работу к
определенному сроку, то вы теряете программистов и приобретаете
набивальщиков невразумительных текстов.
11. Это один из постулатов теории информации. Настоящий программист
умеет использовать в своей работе всю информацию, которая имеется в его
распоряжении на данный момент по данному вопросу. Любую книгу
программист читает в том числе и как документацию и из любого печатного
издания извлекает сведения по программированию.
12. Комментарий к принципу 10 может показаться мрачноватым, но, к
счастью, действия, описанные в нем, только необходимы, но не достаточны.
Программист не живет, чтобы работать, и не работает, чтобы жить. Все
недоразумения возникают из незнания того, что рабочим инструментом
программиста являются, помимо головы, его душа и эстетическое чувство.
13. Чисто стилевой элемент. Иллюстрирует тот факт, что грош цена
системе, не имеющей возможности для развития.
|