Программистов во всем мире считают разновидностью ПСИХОВ, причем не
таких уж безобидных. В обществе во всю гуляют ужасные рассказы о вирусах
и  их  безумных  авторах,  готовых  ради  ложно понятого самоутверждения
ставить под угрозу работу целых отраслей промышленности.
     Если  забыть  о  вирусах,  то  больше  о  программистих  ничего  не
известно.  Многолетние наблюдения за ними показывают, что в основном они
безобидные  и  приветливые  люди,  увлеченные  своей  работой. Иногда их
трудно понять.   Для облегчения вашего  общения с близким,  знакомым или
подчиненным   программистом   предлагаем    вашему   вниманию    "Бусидо
программиста...", т.е.   список моральных  и жизненных  правил,  которым
вольно или невольно следует любой программист.
     Бусидо   носит   приблизительный   характер,   и,   строго  говоря,
необязательно  к  исполнению.  Это  "рекомендованное  чтение", обобщение
результатов наблюдений, делать которые вообще никто не просил.
     После  "Бусидо"  приводятся  комментарии,  объясняющие используемые
термины, жаргонные словечки и философские концепции.






        БУСИДО ПРОГРАММИСТА НА 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. Чисто стилевой  элемент. Иллюстрирует тот  факт, что грош  цена
системе, не имеющей возможности для развития.