Бусидо
программиста
(на 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.
Чисто стилевой элемент. Иллюстрирует тот
факт, что грош цена системе, не имеющей
возможности для развития.
|