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

Неладно что-то в нашем «датском королевстве». Будто протухло что-то или угас кто-то. То ли программирование, то ли программисты... А скорее всего, сама культура, сложившаяся в русском программистском сообществе. Даже журналы о компьютерах читать не хочется. Вам неясно, о чем я? Хорошо, поясню. Конечно, восторженных неофитов хватает и у нас в России. Но и они очень быстро превращаются в «русских» программистов. А вот это и вызывает тоску. Ведь с ними каши не сваришь, разве что баночку «Туборга» гамбургером закусишь.

Русских программистов бывает всего три типа: «еще русские», «уже не русские», «просто русские». Основная масса — «еще русские». Элита — «уже не русские». И остается еще какое-то число русских, которые в отчаянии на все плюнули и не высовываются. Думаю, понятно, что за «не русскими» скрываются те, которые уже уехали или собираются сделать это в ближайшее время. С ними о русском программировании и говорить бессмысленно. Они стремятся изучить ту среду, в которую собираются попасть.

«Еще русские» — такое определение разъяснить будет посложнее. К ним относится основная масса российских программистов. Скорее всего, они так никуда и не уедут, но все время твердят, что возьмут и уедут, — точно держат дубину. Нельзя однозначно сказать, почему они остаются. Одни потому, что никому там, за рубежом, не нужны —квалификации не хватает. Другие — по иным соображениям. Но главное — то, что они на всякий случай поддерживают в себе желание уехать. Эти программисты постоянно изучают, как устроен тот, западный, мир и то программирование. А то, что происходит в России, им совершенно безразлично. Их можно отнести к людям если уж не американской, то хотя бы эмигрантской культуры. И им думать о судьбе русской программной индустрии несвойственно. И даже в общем-то мешает оставаться в образе «еще русского» программиста.

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

«Просто русские» не высовываются. Почему? Вот вопрос. У меня нет ответа. Но когда я оглядываю свое окружение, то в голову приходят следующие мысли. Во-первых, их очень мало и они живут в такой среде, что предпочитают не привлекать к себе внимание — дабы не затравили. Во-вторых, высовываться-то в общем негде и не с чем. Опубликовать статью в журнале? Не ясно — в каком, ведь не всякий журнал возьмет статью, не соответствующую его политике. К тому же если представленный материал не будет иметь продолжения, то и действительно непонятно, стоит ли кричать о том, чего нет. Можно привести и еще массу разных «против», в том числе и психологические факторы. Всего не перечислить. Вот и сидят себе тихо «просто русские» программисты, стараясь оставаться незаметными. Ждут чего-то! В общем, трансформируется ли как-то рынок, а может быть, индустрия сама по себе разовьется и они будут востребованы в своей стране. А действительно, вдруг и правда все так удачно сложится, и нужно лишь немножко подождать? Что ни говори, у нас в стране нет ни значимых продуктов, чтобы зародилась промышленность, ни своих материалов, чтобы обучались профессионалы, ни собственной темы, которую могли бы обсуждать журналы. В них практически не пишут о русском программировании, наверное, потому, что его просто нет! Потому же его не поддерживает и Правительство РФ.

Конечно, можно возразить: у программистов хватает материалов, чтобы обучаться! Но ведь чтобы стать профессионалом, нужно обучаться только на самых высокопрофессиональных материалах! Следует ли тут что-либо пояснять? Стоит ли говорить, что так могут возражать лишь «не русские» программисты, те, кто намерен уехать в Америку.

Я знаю, что в России зарождаются свои рынок и производство. Пока еще оно скрывается под американским обличьем, — таковы, видимо, условия игры, такова принятая сейчас манера программистского общения. К тому же в России бизнесмен-программист чувствует себя дискомфортно. Но все изменяется, надеюсь, в лучшую сторону, и мне хотелось бы вести диалог с теми, кто уже понял, что отечественный программный рынок представляет теперь интерес ... для всех, кроме самих русских. Видимо, наш диалог перейдет в разговор о том, что считать в программировании «русским» путем.

Я и мои партнеры — действующие бизнесмены. Мы много лет работали на рынке офшорного программирования, а в последние годы стали заниматься собственными разработками. И чтобы не быть голословными, мы решили предложить на отечественный рынок один из наших продуктов, который готовился для западных издателей. Мы сохранили его исходное название «Сайткрафт» (www.sitecraft.ru), но переделали для России. Однако речь должна пойти не о данном ПО. Продуктов в России делают много и разных. И наше творение лишь иллюстрирует те принципы, о которых и должна идти речь. Так каких же именно?

В вашем журнале была опубликована очень интересная статья о развитии пользовательского интерфейса (Р.Богатырев. «Тайны Microsoft. Смарт-теги и гипертекст». «Мир ПК», № 6—7/02.). Некоторые мысли в ней показались мне столь значимыми, что я решил использовать их как мостик, чтобы перейти к своим размышлениям об этих принципах. По сути, эта статья была посвящена тому, каким должен быть интерфейс современного ПО, хотя речь в ней и шла о сопоставлении технологии смарт-тегов с макрокомандами офисных приложений. Конечно, чтобы обсуждать такой вопрос, нужно дать исчерпывающие определения и смарт-тегов, и макрокоманд. Но в письме мне трудно это сделать, и потому отсылаю всех желающих к упомянутой выше статье. Мне будет достаточно, если вы поймете, что смарт-теги и макрокоманды, с одной стороны, могут рассматриваться как скрытые интерфейсы особого вида. А с другой, между ними все же есть некоторая разница, что позволяет поставить вопрос о путях развития интерфейса ПО. Какая же? Автор статьи в «Мире ПК» пишет: «... распознавание в случае смарт-тегов производится автоматически, а в случае макрокоманд — вручную. Ну а тут уже споры могут возникнуть в отношении удобства использования (что лучше: мышь или клавиатура)». Имеется в виду, что макрокоманды исполняются с помощью горячих клавиш, в то время как смарт-теги всплывают в тексте при наведении на них мыши. Оба эти подхода выглядят равноправными, однако именно здесь и скрывается, на мой взгляд, потайная дверца к собственному подходу в программировании.

Приглядитесь внимательнее к определению «пользовательский интерфейс» и к противопоставлению клавиатуры и мыши. Здесь ловушка кроется в слове «пользовательский». Любой интерфейс, через который открывается доступ к управлению машиной, программисты считают пользовательским. В этом смысле и сам программист бывает время от времени пользователем. Но на рынке ПО, где программы покупают люди, а не компании (попросту говоря, — в магазинах), под пользователем понимается тот, для кого программист делает продукт. В общем, там существует четкое разделение на программистов и пользователей. Следовательно, на «рыночном» языке под «пользовательским интерфейсом» понимается не тот интерфейс, с которым можно работать, а интерфейс пользователя и созданный для пользователя.

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

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

Может показаться, что разница невелика или вообще счесть это лишь игрой слов. Не обольщайтесь, просто вспомните, как работают непрограммисты. Они не ленятся двигать мышь там, где программист пощелкает клавишами. Работа мышью вызывает у программистов, как правило, насмешки и недоумение, и они обзывают всех, кого не относят к «своим», непрофессионалами. И таким образом не только успокаиваются, а усыпляют себя и даже отводят глаза. А ведь это факт весьма важный! Вдумайтесь сами: если мы, программисты, профессиональнее, то почему они не учатся у нас, почему не берут с нас пример? Что подталкивает их к противодействию?

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

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

А потребителя необходимо любить. Иначе не получится с любовью сделанных вещей. За иные вещи он платить не желает, а если и платит, то мало. Программист же обижается: в России нет ни покупателей, ни рынка. Да есть они, есть, конечно, просто отдают предпочтение иностранным товарам, раз свои разработчики о них так мало думают.

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