Не стреляйте в программиста.

Новиков Максим Глебович
23.11.04

У жены программиста спросили: — А как он за тобой ухаживал?
Жена, после минутного раздумья: — Компьютер показал…

Программисты всегда отличались от людей других специальностей целым набором характерных черт, отрицательных в основной своей массе. По этому поводу сложено немало анекдотов, большинство из которых придумано, однако, самими программистами, ибо понятны такие анекдоты по большей части только им самим. Анекдоты про программистов вы можете найти, например, на http://docs.com.ru/anecdots.php.

Среди программистов существует деление на системщиков и прикладников, на ассемблерщиков и тех, кто программирует в основном на языках высокого уровня и т.п. Каждая группа характеризуется своими, более глубокими чертами.

Отдельная группа — это хакеры. Программисты, характеризующиеся высокой квалификацией, азартом и склонностью к авантюризму. Какая черта тут основополагающая? Возможно, азарт, стимулирующий человека на более глубокое изучение компьютера. Самое простое и быстрое, где хакеры могут себя проявить — это взлом защищённых программ и написание вирусов. В дальнейшем возможен рост хакера в направлении создания систем защит и антивирусов.

Не претендуя на роль сильного кодера, а тем более хакера, я изложу свой взгляд на вопросы, по которым принято так или иначе характеризовать программистов:

1. Спор о языках — что лучше — что хуже. Для меня существует 2 языка: ассемблер и всё остальное. Ассемблер — для души, всё остальное — для денег. Всё остальное — это языки высокого уровня, похожие, как сиамские близнецы. Разница малоощутима, и сравнивать тут полезнее не сами языки, а конкретные реализации их компиляторов в плане удобства работы и качества компиляции.

2. Говорят, хорошему программисту (читай — хакеру) необязательно иметь описание системы, с которой он работает. Он начнет методом «тыка» и разберется. Согласен, разберется. Но лично меня мало что раздражает более, чем отсутствие толковой русскоязычной документации. Это раздражение пришло еще с тех времен, когда я обучался ассемблеру для БК0010-01. Тогда я представления не имел, что это вообще такое, книг по программированию на ассемблере для БК не было. Были лишь штатные брошюры по математическому обеспечению, листинги ПЗУ БК, купленные на Митинском радиорынке и всё… Но мои программы на Бейсике и Форте уже не умещалась в памяти, а покупные программы были гораздо круче и умещались (они были написаны на ассемблере и в памяти компьютера не висело ни интерпретатора, ни исходника самой программы). Такое положение дел меня не устраивало, и я принялся изучать работу с ассемблером. Да, я разобрался тогда с ним, но с тех пор, приступая к изучению новой системы, я жадно скупаю толстые книжки и, вдыхая их чудный запах, с удовольствием приступаю к поглощению информации…

Обожаю качественные книги в твердой обложке с хорошим переплетом и ненавижу клееные книги, у которых тут же начинают вылетать страницы. Еще ненавижу книги с ошибками в листингах. Ассемблер для IBM PC я изучал по книге Питера Нортона «Язык ассемблера для IBM PC» в переводе издательства «Компьютер» (там еще Петя в белой рубашечке сидит на столе рядом с компом). Я не знаю, на каком этапе в каждый листинг вкралось по нескольку ошибок, но в итоге получилась книга, в которой ни один листинг не был рабочим! Каково это, не зная ассемблера для IBM PC (здесь ассемблер другой), править листинги, по которым должен еще только учиться! Я уж не говорю, что из этой книги листы летели, как с деревьев листья…

Если говорить об авторстве книг, то я предпочитаю наших авторов. У них как-то все понятнее и удобнее. Да и практичнее как то… Да, и автор должен быть мужского пола. А то я купил как-то книжку И. Ю. Баженовой «Дельфи 5. Самоучитель программиста», и так и не смог ее использовать. И так, и эдак крутил…

3. Типа хакеры свои листинги не комментируют. По-моему, это глупо. Эгоизм чистой воды, недальновидность, нерациональное использование своих собственных сил (через год он и не вспомнит, что он имел ввиду вот этим хитрым алгоритмом).

4. Увлекаемость. Мне лень начинать писать под заказ новую программу, но если я начну, то погружаюсь с головой и не вылезаю, пока программа не будет работать лучше, чем требовалось заказчику. Интересный момент — если заказчик не торопит и не забирает программу сразу после того, как она написана, то я начинаю вносить в нее улучшения и существенно дополняю продукт. Это приносит мне моральное удовлетворение. Я ненавижу некачественные продукты. Если я знаю, что моя программа работает не так, как хотелось бы, то я всячески пытаюсь исправить её, даже если никто особо этого не требует.

5. Я люблю программировать по ночам. Ночью тихо. Ничто не отвлекает. Музыку не слушаю, она меня тоже отвлекает. Утром я обычно хочу спать, и если меня рано поднять, то весь день буду раздраженным и врядли смогу эффективно работать. Еще заметил — дома я программирую раза в 1,5—2 быстрее.

6. Жалуюсь. На работе мне приходится часто помогать женщинам, работающим в нашем отделе на компьютерах. Я понимаю, что мозги у них заняты не этим, я понимаю, что женщины немолодые, и всю жизнь проработали за печатной машинкой… Я пытаюсь… пытаюсь остаться спокойным… Первые пару лет я даже искренне пытался их научить не форматировать текст в Word'е пробелами… Почему у людей начисто отсутствует понятие о красоте верстки текста? Почему в многоуровневом списке, который они создают вручную (с автонумерацией никак не справляются — это выше их понимания), они выделяют основные пункты одновременно жирным и подчёркиванием и вдобавок просят отцентрировать их по горизонтали!? Еще десятки «почему» не укладываются в моем понимании. Почему после 7 лет их работы с компьютером я нахожу новые документы, оформленные также, как и в самом начале? Почему нельзя сказать «выберите в меню пункт такой-то и в открывшемся окне выберите вторую вкладку, на ней все параметры, которые вам сейчас нужны», а надо «нажмите сюда, потом сюда, потом сюда, а потом сюда» — и обязательно тыкать в монитор пальцем, и так для каждого параметра, и каждый раз с самого начала! Уродливые таблицы, кривое форматирование… Да, это мой сильный минус — нетерпимость к неспособности других людей обучаться. Справедливости ради стоит заметить, что трогать монитор пальцами они отучились довольно быстро.

7. Программисты, как правило, страдают манией величия. Удивляюсь, но манией величия (по крайней мере, как программист) я не страдаю. Я ею наслаждаюсь. Но я тщетно пытаюсь оправдать высокое самомнение других программистов.

Программист — профессия, стоящая на стыке гуманитарных и точных наук: лингвистики и математики, материального и нематериального: микросхем и логической структуры компьютера, формируемой этими микросхемами.

Программист — профессия, требующая довольно мощных интеллектуальных способностей. Мозг должен уметь хорошо понимать абстракции и длительно работать с ними. Мозг должен постоянно работать на создание того, чего еще не было. Мозг должен работать в таком режиме очень долго, ибо создание программы — дело длительное.

Всё это отсеивает большое количество, казалось бы, неглупых людей. Конечно, какая-то часть людей просто занимается другими вещами, требующими не меньшей интеллектуальной активности. Но основная масса технических интеллектуалов просто чуть-чуть быстрее устаёт от марафонских мыслительных процессов, или менее предрасположена к пониманию абстракций. Может быть, эти люди успешно справляются с готовой информацией, но не могут генерировать новую.

И программисты, как правило, это видят. Но так уж получается, что остальные люди, не разбирающиеся в вопросах программирования, не могут в полной мере оценить силу интеллекта программиста и величину его возможного интеллектуального превосходства (или проигрыша). О его работе окружающие судят по тому, глючит ли программа и насколько она удобна, даже не представляя, что это вообще чудо — само существование такой программы, состоящей по сути из различных комбинаций около трёх сотен команд, всего лишь разным образом трансформирующих обычные числа из диапазона 0—255 и пересылающих их из одного места в другое.

Интеллектуальный уровень программиста хорошо характеризует следующий анекдот:

Если бы при приеме на работу к водителям относились так же, как к программистам:

Вакансия: водитель.

Требования: профессиональные навыки управлении легковыми и грузовыми автомобилями, троллейбусами, трамваями, поездами метрополитена и фуникулера, экскаваторами и бульдозерами, спецмашинами на гусеничном ходу, боевыми машинами пехоты и современными легкими/средними танками, находящимися на вооружении стран СНГ и НАТО.

Навыки раллийского и экстремального вождения — обязательны, опыт управления болидами F1 — приветствуется.

Знания и опыт ремонта поршневых и роторных двигателей, автоматических и ручных трансмиссий, систем зажигания, бортовых компьютеров, антиблокировочных систем, навигационных систем (GPS) и автомобильных аудиосистем ведущих производителей — обязательны. Опыт проведения кузовных и окрасочных работ приветствуется. Претенденты должны иметь сертификаты BMW, General Motors, а также справки об участии в крупных международных ралли не более чем двухлетней давности.

Зарплата 15000—25000 руб., определяется по результатам собеседования

Несомненно, бывают и тупые программисты, но, к сожалению, они великолепно умеют себя преподнести. Их конек не в программировании, а в создании впечатления. Такие люди всячески уходят от деталей при обсуждении вопросов программирования, отделываясь общими красивыми фразами или принципиально ничего не значащими подробностями, услышанными от кого-то. Такие люди любят говорить о компьютерах, но сильным программистам с ними говорить скучно — не тот уровень.

Хотите изменить угрюмого и высокомерного программиста — признайте мощь его интеллекта, поразитесь высоким уровнем его любимого программного продукта, отзовитесь положитенльно о программировании вообще, и думаю, вы увидите белого, пушистого, улыбчивого и ласкового человека.

Должен заметить, я нетипичный программист. Со мной вышеописанное может не пройти, но попытаться стоит. И не хакер. По профессии я вообще не программист. Но я глубоко знаю архитектуру компьютера, поскольку программирую на ассемблере. Люблю нестандартные алгоритмы решения поставленных задач. Но обстоятельства заставляют меня уходить от ассемблера в сторону более быстрых средств разработки программ. Так, для программирования в Windows я использую Дельфи. Позор, позор на мои седины…

Как программист, я не обладаю большим запасом знаний и не держу в памяти всю таблицу ASCII-кодов, а тем более опкодов я вообще ничего не держу в памяти (надо признать, у меня вообще плохая память). Более того, я не занимаюсь программированием постоянно. Мой стиль — это изучение того объема знаний, который необходим для решения каждой конкретной поставленной задачи. Я знаю, где искать, что искать, и в итоге успешно решаю поставленную задачу. И меня и заказчиков результат вполне устраивает.

[Вернуться в начало] [Оставить отзыв в гостевой]
Hosted by uCoz