Программирование... Что это, профессия или болезнь? На тему этих размышлений натолкнул небольшой топик на одном IT-форуме, в котором автор сетует на привязчивых «бушек», непонятливых работодателей и потоки сознания, изливающиеся «в моск» бедного программиста, пытающегося их всех помирить с 1С…

Сразу вспомнился анекдот: Холмс и Ватсон идут рано утром по Лондону. Навстречу им человек. - Сэр, - обращается к нему Холмс, - не подскажете, где мы сейчас? - Здесь! – После минутной паузы отвечает встречный. - Спасибо, сэр… - Ватсон, не правда ли, странно встретить рано утром в Лондоне программиста? – говорит Холмс Ватсону, после того, как встречный уходит. - Но Холмс! –Удивляется Ватсон, - откуда Вы узнали, что он программист? - Ну, это же элементарно, милый друг! Во-первых, он долго думал. Во-вторых, ответил совершенно точно. И в-третьих, его ответ оказался полностью бесполезным…

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

Программист – специальность, не менее навязчивая, чем перечисленные выше.

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

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

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

Но вернемся к проблемам коммуникации… Как часто слышишь, что понять программиста обычному человеку бывает сложно. И это отнюдь не потому, что мы слишком умные.

Профессиональная недосказанность

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

Программист: Nn, знаете ли вы, что у вас в базе есть два ИмяКонтрагента? Клиент: Добрый день! Мне известно, что в базе два ИмяКонтрагента. Если Вы внимательно посмотрите справочник контрагентов, то увидите там группу "Поставщиков" и группу "Покупателей". Этот контрагент относится к той и иной группе. Мне не понятен Ваш вопрос.

Итак, в базе данных у клиента не идут обороты. Программист находит причину: она – в двух одинаковых контрагентов. Разумеется, это ошибка, о которой не подозревает большинство пользователей, потому что обороты проходят по обоим контрагентам раздельно, но, по сути, это – одно единственное предприятие, и увидеть общую картину по нему не возможно. 1С ведь не умеет читать названия!

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

Впрочем, приведенный пример еще вполне сносный. Более симптоматичными случаями кишит любой программистский форум. Задайте на таком форуме ради эксперимента самый простой вопрос, наподобие: «Здрасте, я – Просковья Федррна. Подскажите, плиз, почему у меня не запускается под Виндовс 7 мАя любимая программа?» - с восьмидесятью процентной вероятностью в качестве одного из ответов вы получите многозначительное: «UAC» И бедной девушке Просковье Федоровне остается только догадываться, оскорбили ее сейчас, или над ней посмеялись...

Профессиональная многословность

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

Вспоминается еще один анекдот по поводу этого.

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

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

На мой взгляд, хороший результат общения программиста и клиента – это когда у клиента складываться иллюзия понимания того, чем мы занимаемся, но не более. Мы вряд ли сможем донести в двух словах, например, чем отличается обычная рекурсия от неявной. Но мы можем подчеркнуть, что наша программа способна сама находить решение, при минимуме кода… Программисты сейчас посмеются, а у пользователя останется уверенность, что 1) я – мега крут 2) он, обычный пользователь, понимает все, что я сделал. А разве это не приятно осознавать?

Недосказанность, многословность… Разные грани одной проблемы? – Возможно. Но тогда, истину стоит искать где-то посередине. В любом случае, когда следователь, врач, корреспондент, программист, да и каждый человек учится смотреть на себя со стороны, старается перешагнуть рамки, в которые он заключен своей профессией, тогда проблем коммуникации, да и многих других, наверное, удается избежать…

Олег Пономаренко, http://www.belkamag.ru