Welcome to TechNet Blogs Sign in | Join | Help

Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

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

Конечно, опять же описать всю проблему невозможно, но я попробую просто привести несколько примеров.

Да-да, тоже с персонального блога...

Плотность информационного канала

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

Усвоив это в искуственных языках, сей принцип влияет на вашу личность и начинает просачиваться в естественные. Вы начинаете замечать, что большинство непрограммистов очень часто страдает тем, что я называю «словесный понос». Ну, если кто еще помнит – в стиле выступлений Горбачева, говорит, говорит, а о чем похоже и сам не знает. Воодушевленный менеджер может распинаться перед командой целый час так и не сказав что-либо полезное. В обыденном общении «легкие разговоры» часто становятся невыносимой мукой. Нет, вы с удовольствием готовы поболтать с собратьями-программистами (и отдельными представителями других инженерных профессий, владеющих человеческой речью) на любые темы от хобби и шоппинга до кулинарии и политики, но ваши нейронные цепи уже настроены на каналы с низким уровнем шума.

Чтоб далеко не ходить, приведу пример. В Америке в большинстве фирм регулярно происходят митинги, посвященные пеп-ток. Это такой американский вариант политинформаций с пропагандой компании или группы в которой ты работаешь, обычно посвященной мудрости менеджмента, осуществляющего очередное изменение оргструктуры и пересаживавние медведей и мартышек между музыкальными инструментами. Так вот, на таких митингах лично я обычно физически начинаю отключаться через 15-20 минут, через 10, если я пытаюсь слушать о чем они говорят... Нет, правда. Глаза начинают слипаться и появляется риск треснуться лбом об стол...

Другой пример: некоторые читатели говорят, что им здорово мешает обилие вводных, междометий и прочих неинформативных элементов в моих статьях. Так вот, я этому сознательно учился, и знаете почему? Если вы принадлежите к этой группе читателей, возьмите любую мою статью, которая вам нравится, и попробуйте убрать все эти вводные и неинформативные слова. Мой опыт показывает что у подавляющего большинства людей от подобного текста просто заклинивает каналы обработки информации. Знаете как иногда с компьютерами бывает – процессор утилизован на 100%, диск крутится как сумасшедший и ничего не происходит. Не шучу.

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

Вы можете сказать, что это очевидно, но это вам очевидно, после обьяснения выше. Большинству программистов, которых я знаю, это не очевидно. Впрочем большинству непрограммистов это может и очевидно, но они понятия не имеют как это делать. И в любом случае суть в том, что вам придется этому учиться и никакого отношения к программированию это иметь не будет.

Бартер лжи

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

Я уже обьяснял, что программирование не терпит вранья. Если вы пытаетесь соврать компьютеру, вы получаете баг, вот все. Что приучает вас к тому, что это занятие не только бессмысленное, но и сугубо вредное. Но в человеческом общении сплошь и рядом случаются противоположные ситуации. Как неверие в коммунизм мешало в карьере в СССР, так неверие в великую миссию унитазов с компьютерным управлением помешает вашей карьере в американской фирме, производящей оные унитазы.

Причем, мне кажется, что трудности с верой в ложные утверждения у хорошего программиста даже глубже, чем реакция компьютеров на баги. Честно предупрежу – это лишь моя теория, но лично мне она кажется правдоподобной. Такое ощущение, что в некоторых науках, дизайне сложных систем и программировании человечество достигло пределов эксплуатации нейронных сетей человеческого мозга. Если нейронная сеть используется на 1%, как, например, в профессиях вроде уборки мусора, вы можете лгать и верить в чушь используя остальные 99% мозга и ваша способность убирать мусор от этого не страдает. Когда нейронная сеть используется на пределе, у вас нет этой роскоши. Как только вы перестаете отличать правду от лжи, вы перестаете отличать баг от фичи, потому что вы используете одни и те же нейронные цепи. Продолжая аналогию, если у вас в ящике с инструментами лежит микроскоп и молоток, то вы можете забить молотком гвоздь, и микроскоп по-прежнему будет работать. Если у вас весь ящик занят большим микроскопом, то забейте им гвоздь, и он станет бесполезен как микроскоп. Он просто сломается. Это то как ложь действует на человеческий мозг. Большинству хватает ломаного микроскопа в голове, программисту, если он хочет быть хорошим программистом – нет. Уверуйте в развевающееся знамя, программу партии, WMD в Ираке или мудрость корпоративного менеджмента, и ваш код станет хуже.

Опять же, это лишь моя теория.

«Надо»

Третий и последний пример, о котором я хотел бы написать, это слово «надо». В программировании нету отдельностоящего слова «надо», он всегда сопровождается дополнением отвечающим на вопросы «Зачем?», «Для чего?» или «Почему?»

Комментировать программу надо чтобы ее можно было понять. Когда это обьянение пропущено и непонято, получаются строчки кода вроде:

X = 5; // Присвоить переменной X значение 5

With надо использовать, чтобы гарантировать вызов Dispose().

Автопойнтеры полезно использовать, чтобы не было утечек памяти.

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

Дело в том, что к сожалению, большинство мемовирусов устроено так, что они активно используют слово «надо» и программируют свои носители на агрессию на вопрос «зачем?» Попробуйте спросить националиста с окраин бывшего СССР зачем ему его «маленькая но независимая». Попробуйте спросить новообращенного христианина зачем верить в Бога. Попробуйте спросить алкоголика зачем он пьет. Далеко не всегда мемовирусы вредны – некоторые из них являются симбиотами, которые помогают носителю. Здравый патриотизм обеспечивает поддержку и создание среды, в которой легче жить всем. Воздержание от «нечистой» свинины предотвращало отравления в жарких странах. Но в любом случае, «надо» без ответа на вопрос «зачем» плохо лезет в голову программиста, а вопрос «зачем» очень часто оканчивается агрессивной реакцией.

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

Например, если ваше дите требует новую видеокарту. Разумеется, это «надо»! Вы, разумеется, спрашиваете «зачем». Вы просто хотите услышать полную версию, вы не понимаете что такое «надо» без обьяснения зачем. Вам может даже вполне устроить ответ «потому что хочется!» или там, «у меня без нее игрушка не идет!» Более того, на второй ответ вы можете заставить ребенка разобраться точно, чего именно не хватает и что именно нужно – поскольку теперь понятна цель и понятен критерий. То есть вы могли бы продолжать и сделать то, что от вас хотят. Что непрограммист слышит в ответ – это то, что вы не хотите купить видеокарту. Дальше в зависимости от отношений в семье вместо ответа на ваш вопрос начинаются игры, чтобы вас уломать, что не только не отвечает на ваш вопрос, а вообще запутывает его до состояния когда вообще ничего не понять. А учитывая то, что непрограммисты не страдают fidelity to reality, то Роулинг отдыхает, дите обижается, а вы получаете лишнюю головную боль.

Вот такое вот вредное слово «надо»...

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

Published Sunday, December 07, 2008 11:23 PM by EldarM

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

Насчет умения презентовать идеи полностью согласен, пока ты не научишься говорить на нужном языке, подавая информацию в нужном виде (только оформление, а не содержимое :-) тебя не будут слушать. А многие этого не осознают и возникают любимые разговоры про тупых менеджеров и т.п.

Monday, December 08, 2008 9:12 AM by Alex Ott

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

А я про запрет на свинину слышал другое объяснение. Мне кажется, что более правдоподобное.

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

Коровы и овцы питаются травой и сеном, т.е. теми продуктами, что человек не ест. Следовательно, в случае голода, человеку не придется жертвовать своей едой :)

Monday, December 08, 2008 9:35 AM by Вадим

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

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

Monday, December 08, 2008 9:38 AM by vtv

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

Красиво,

а когда к «Fidelity to reality», прибавляется еще и жуткая лень, и ты уже непрограммист а сисадмин/дба, то вообще очень сложно жить

Monday, December 08, 2008 10:24 AM by Дмитрий

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

Программистом(хорошим) стать не легко. Нужно каждый день настраивать свою нейронную сеть до поры до времени когда уже сеть настроенна. А вот вопрос, что нового можно программировать? Что ждет программистов в будщем?

Monday, December 08, 2008 11:08 AM by Serghei

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

Это хорошо!

Я обычно описывал это как анализ vs. синтез. Программист - профессиональный аналитик. Чтобы сделать алгоритм или пофиксить баг, надо понять проблему, разобрать её, выделить rootcase, и т.д. Та же привычка довольно удачно применется и к жизненным ситуациям, но вызывает просто агрессию со стороны тех, кто занимается "синтезом" заморочных и неразбираемых логических конструкций, продаваемых начальству под видом проектов. Чтобы что-то продать (например идею продвижения себя по службе), надо доказать, что покупателю это нужно, заморочить его, представить в нужном свете, а тут вы со своими анализами. Что подводит нас к ещё одному типичному отличию - неумению программистов управлять временем и выбирать время. Баг надо пофиксить быстро, код надо тоже написать быстро, потому и анализ у программиста выплёскивается сразу по появлению оного, и, как правило, в самый неудачный момент (что тоже мем, неудачный момент перманентен, удачный редок).

Monday, December 08, 2008 3:49 PM by Valery Tolkov

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

to Serghei:

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

Monday, December 08, 2008 4:36 PM by Dmitrij

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

Спасибо большое!

Я тоже независимо пришел к мыслям об особенном отношении инженеров к реальности. Только таланта и времени нет, чтобы это все записать. В моем варианте это звучало merciless reality.

На уровне миддл-менеджеров и выше (и чем выше, тем сильнее) значение реальности ослабевает. Чтобы успешно завершить проект, достаточно объявить его успешным. Любое принятое решение является автоматически правильным.

Но бывают и хорошие менеджеры :) Которые, как и "лирики" вообще - актеры, музыканты, режиссеры, писатели - тоже обладают ярко выраженной fidelity. Только не к реальности, а к ноосфере, к людям. Чтобы заставить человека засмеяться, задуматься или заплакать, нужно _верно_ чувствовать его человеческую _натуру_.

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

Monday, December 08, 2008 5:02 PM by Fridental

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

Можно подойти еще с другой стороны.

Люди у которых есть врожденный "барьер лжи" предрасположены к программированию.

Tuesday, December 09, 2008 1:49 AM by fraks

# ??????????????????????????. | ?? ?????????? ???? ??????????.

Tuesday, December 09, 2008 3:54 AM by ??????????????????????????. | ?? ?????????? ???? ??????????.

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

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

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

Tuesday, December 09, 2008 3:31 PM by Иван Михайлов

# re: Микроскоп

Мне понравилась идея про микроскоп ...

Но возникает вопрос как заставить себя внимать этому пресловутому тупому менеджменту?

Меня это просто физически ломает.

Wednesday, December 10, 2008 12:07 AM by Mihail

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

Иван: вы будуте смеяться, но Раечка тоже... Архитектуру, насколько я слышал, уже лет 30 как добили средства CAD, вызвав жуткую конкуренцию среди архитекторов и доведя эту область до состояния женской моды.

Миша: а вот это очень хороший вопрос. Не знаю. Искать островки с не очень тупым менеджментом. Принять, что они представляют фирму, и если фирме нужна шляпа на крыше и кондом на выхлопной трубе машины, в конце концов - это то за что тебе платят деньги. И какая разница, если это идиотизм? Но в целом хорошего ответа не знаю. Лучший пока что - это один из путей просветления Будды: отделить себя от плодов своего труда.

Thursday, December 11, 2008 12:35 AM by EldarM

# re: Как стать хорошим программистом (часть 4. Extra): влияние на межличностые контакты

> в конце концов - это то за что тебе платят деньги

Не надо снижать планку. Музыканты и художники знают, что только начни делать халтуру, и уже не сможешь работать хорошо. Руку собьёшь. Да и перспективы никакой нет в такой ситуации. Надо просто искать относительно разумное место.

Friday, December 12, 2008 12:46 AM by Valery Tolkov

# ???????????????????? ?? ?????????? ???? ???????????? | ?????? ????????????

# ????????????????. ?????????????????????????? ??Thrilling?? ????????????????, ????????????, ???????????????? ???????????? ????????????

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker