.
Психологический портрет программиста.
Автор megabax   
10.03.2013 г.
New Page 1

Психологический портрет программиста.

Программисты отличаются от обычных людей. Некоторые считают их "не от мира сего", чуть ли не какими то инопланетянами. Так в чем же отличия программистов от обычных людей.

1. Программисты пожертвуют простотой ради контроля.

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

За контроль всегда приходиться платить. Контроль все усложняет и на него приходиться затрачивать дополнительные усилия. Для программиста контроль - цель, а сложность - это просто цена, которую он за это платит. Для обычных людей цель – это простота, и отказ от контроля – цена, которую они готовы платить. В продуктах, основанных на программном обеспечении, контролем являются функции. К примеру, в Windows функция «Поиск файла» дает мне серьезный контроль над ходом работы. Я могу указать, в каких областях диска следует выполнять поиск, тип искомого файла, искать ли файл по имени или по содержимому и еще целый ряд параметров. С точки зрения программиста все это просто замечательно. Затратив дополнительные усилия и приобретя определенное понимание предмета, он получает возможность искать быстрее и эффективнее. Напротив, с точки зрения пользователя все не так радужно, поскольку ему приходится указывать область поиска, указывать тип искомого файла и еще метод поиска.

2. Программисты обменяют успех на понимание

Кго нибудь из вас,  разбирал в детстве  часы, чтобы посмотреть, как они работают? Как правило, около двух трети дают утвердительный ответ. Но если потом спросить, из них удалось в ли вам конечном итоге собрать часы, то большинство ответит отрицательно. Если далее спросить: кто из вас считает этот эксперимент неудавшимся? Большая часть лишь усмехнется, осознав, что получили удовольствие от разрушения часового механизма. Хомо логикус желает понять, как работают часы, – такова его цель, и он вполне готов принести в жертву работающие часы, чтобы этой цели достигнуть. С другой стороны, хомо сапиенсу нравится, когда часы работают. Его цель состоит в том, чтобы узнать, который час, и взамен он отказывается от знания о том, что заставляет часы тикать.

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

3. Программисты сосредотачиваются на исключительных ситуациях

В мире программного обеспечения, где преобладают точно сформулированные утверждения, даже маловероятные события попросту нельзя игнорировать.

Программисты называют эти события с крайне низкой вероятностью «исключительными ситуациями». Наступление подобных событий маловероятно, но если их не предусмотреть, программа даст серьезный сбой, когда такое событие произойдет. Несмотря на низкую вероятность описываемых событий, за неподготовленность к оным приходится платить огромную цену. Таким образом, маловероятные события становятся для программистов вполне жизненными ситуациями. Тот факт, что граничные условия могут наступать лишь раз в 79 лет ежедневного применения программы, программиста совершенно не утешает. Что если этот Раз наступит завтра?

Замечательный пример «щедрости в эгоизме», по Бронсону, – изобилие ненужных и нежелательных возможностей, появляющихся в результате возможностного мышления программистов. Они поставляют нам много такого, что нужно только им самим.

Программисты шутят, что существует всего три числа: нуль, единица, бесконечность. В мире компьютерных вычислений она обретает смысл. В двоичном внутреннем мире компьютера процесс либо происходит, либо нет – это нуль или единица. Если какое-либо событие может случиться единожды, это означает, что оно может повториться бесконечное количество раз.

4. Программисты обладают гиперокнцентрацией.

Хорошая и качественная работа над кодом требует очень высокой степени погруженности в код. Степень концентрации при работе программиста сравнима с работой на ядерной станции. Соответственно, всё это порождает повышенную раздраженность при прерывании данного процесса, что внешне воспринимается непосвященными людьми как «замороченность на работе» и т.п.

Работа программиста чем то похожа на сон.    Продукт труда программиста это продукт сна - химера. Сновидение записанное специальным языком и переданное электронному устройству для того чтобы продолжаться там когда программист уже проснулся или просто сменил один сон на другой. Если взять к примеру задачу нахождения пути выхода из лабиринта. Программист в решении этой задачи не перст который ведёт воображаемую маленькую заблудившуюся девочку незнакомой тропой к выходу. Он и не эта девочка тоже. И не стены лабиринта. Он не выход который надо найти. Он всё это вместе разом. Для решения задачи программисту приходится стать в своём сознании и лабиринтом, и искомым выходом, и заблудившейся девочкой, и тем перстом что ведёт её куда-то, и теми камушками которые она разбрасывает по дороге чтобы узнавать уже пройденные места. Всё это как снится программисту во время работы.

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

5. Погруженность во внутренние образы и конструкции.

Если обыватель видит на экране только наборы символов, то в голове программиста этот код превращается в целые части мира. Как чтение книги создает образы и переживания в человеке, так и код способен такое же делать с программистом. Именно поэтому программисты «чувствуют» код, знают когда он «красив», когда «грязен», будет ли он работать и т.д. С какой-то стороны хороший программист сравним с писателем художественных произведений. В реальной жизни это проявляется в чрезмерной погруженности внутрь себя, особенно если программист пытается что-то понять.
 

6. Обостренное восприятие причинно-следственных связей.

Для успешной работы программисту важно понимать структуру причинно-следственных связей: "что, почему и как происходит", а также "что произойдет, если что-то не произойдет как ожидалось". Всё это накладывает свой отпечаток и на мышление человека. То что не вызывает интереса для большинства людей, в программисте может порождать огромные потоки размышлений.

7. Привыкание к формализованной постановке задач.

Так как программист должен создавать код, который должен работать ровно так, как это требуется для задачи, то привычка делать то, что было сказано, постепенно перетекает и в другие области жизни. Но так как в большинстве случаев социального взаимодействия имеет место невербальное восприятие, «угадывание» и «додумывание», то у программистов обостряется чувство конкретизации.