В рамках выяснения потенциальных возможностей для заказной разработки софта на территории бывшего СССР я провел летом 1998 года небольшой эксперимент в ньюс-группе relcom.comp.software-eng. Основной целью было изучение проблем морального стимулирования. В процессе обсуждения различных моделей были выявлены некоторые весьма занятные закономерности. В результате анализа этих побочных результатов и появился данный текст.
На основе обобщения полученных ответов я выделил пять моделей поведения российских программистов. Чтобы показать как они проявляются на практике, отчет об эксперименте я представил в виде описания некой гипотетической ситуации. Хочу сразу заявить, что вся история выдумана. Любое сходство с реальными людьми и событиями является результатом типичности описанных вариантов.
Итак. Я взял у виртуального заказчика задание и пошел по виртуальным фирмам спрашивать, смогут ли они его выполнить и сколько за работу получить хотят. Задание - типичное: Немного баз данных, немного графиков, масса бухгалтерских расчетов да куча форм ввода и видов генерируемых отчетов. Хорошая команда из пяти человек за два месяца должна справиться.
Первым, к кому я заглянул, был мой старый знакомый, который уже лет пять работал с иностранцами. Поговорив о том - о сем и обсудив последние новости, я рассказал зачем, собственно, пришел.
- Не-е-ет,- ответил приятель. - Это нам совершенно не интересно. Вот если бы чего-нибудь перспективное, тогда мы - двумя руками за.
- В каком смысле перспективнее? Задач подобных сейчас полно, да и в будущем их меньше не станет.
- Да нет. Нам бы чего-нибудь современное. Хоть ту же Яву или чтоб через Интернет система работала. Да и MFC мы используем. А тут требуется совместимость с полуосью и третьими виндусами. Это ж интерфейс как для Доса будет.
- Так они и сейчас программы для Доса продают. А OS/2 стоит в Германии в куче контор. В том числе в банках. А банки за софт щедро платят.
- Нет. Нам не только деньги, нам перспективы нужны. Вот если бы банки нам свои системы работы через Интернет разрабатывать поручили, тогда мы - двумя руками за.
- Ой, сомневаюсь. Да и Интернет в Германии не шибко развит. Самый дорогой в Европе. Ну ладно. Если кто-нибудь захочет в России подобное ваять, буду иметь вас ввиду.
Во второй фирме мне сначала вроде-бы повезло. И заказ устроил, и оплата. Но вдруг разговор пошел совсем не в то русло. Все началось с объяснения условий проекта. Первый же конкретный вопрос о том, когда клиент сможет увидеть структуру классов, вызвал большое удивление:
- А зачем им классы? Мы же программу сделать должны, вот пускай на программу и смотрят. Может они еще и исходный код захотят?
- Естественно захотят. А ты что думал?
- Хм. Откуда ты такого заказчика выкопал?
- Ни откуда не выкапывал. Это серьезная фирма. Сами они программы делают, но людей не хватает, вот и хотят что-то на стороне сделать. Ну так с классами-то как?
- Не знаю. Я же хотел все на Лиспе делать.
- На каком Лиспе?
- Язык программирования такой.
- Я знаю, что язык. Но почему на Лиспе? Каким боком ты его в это задание втиснуть хочешь? У вас что, только Лисп используется?
- Нет. Как раз Лиспа-то мы и не знаем. Задание ерундовое. Чтобы время не пропадало, Лисп и выучим.
- Ну на Лисп они точно не согласятся.
- Тогда Activ-X применим.
- Это под полуось-то?
- Ну, а что? Тут всего немного стандартных контролек надо. Заодно и напишем для полуоси.
- Это за два месяца? И выучите, и напишите, да еще на этом и задание сделаете?
- Ну не за два, так за три.
- Нет. Не подпишутся они на это. У них программисты на C++ работают. И библиотеки все должны быть переносимые.
- Ладно. Месяца за четыре мы им это задание сделаем.
- Почему за четыре? Тут для пяти человек работы месяца на два, не больше.
- Так на то и рассчитываю. Половину времени люди будут этой ерундой заниматься, а другую половину чем-нибудь полезным. Иначе ничего не получится. Все мы от скуки взвоем.
- То-есть ты предлагаешь заказчику оплатить твою работу и еще столько же денег дать на развлечение? И ты думаешь, что его эта перспектива обрадует?
- Ничего. Лапши на уши навешаем. Не впервой.
- Должен тебя огорчить. На этот раз не удастся. Они подобную работу делают и считать время умеют. Да и ход выполнения задания контролировать будут.
- Ну а нам зачем такие задания. Не интересно это нам совершенно. Вот если что-то интересное... Мои ребята ерундой заниматься не хотят.
- Тогда счастливо. Пойду искать кого-нибудь менее привередливого.
Менее привередливым оказался товарищ, случайно наш разговор услышавший. Возмущению его не было предела:
- Я не понимаю что за пренебрежение бухгалтерскими задачами! Почему такой снобизм? Я, как постановщик бухгалтерских программ, могу спорить, что никто просто так хорошую бухгалтерскую программу не напишет.
- Интересно. Что значит "постановщик" и как же вы эти программы создаете?
- Я задание придумываю, а мой программист выполняет.
- Что, всего один?
- Да один. Сложность бухгалтерии не в том, чтобы данные сосчитать, а в том, чтобы их спрятать. А для этого опыт и знания нужны.
- Так программа нужна для немецкой бухгалтерии.
- Ну и что? Хоть и для немецкой.
- Ладно. А вот тут люди говорят, что задание не интересное. Как своего программиста стимулировать будете?
- Хм. Сейчас выясню.
Видимо изучение тонкостей морального стимулирования много времени не заняло. Товарищ постановщик через минуту появился вновь:
- Все. Спросил своего программиста. Он показал на холодильник, стоящий в фирме и сказал, что чем больше в нем будет пива, тем выше будет моральный стимул. Ясно? Не бывает неинтересных заданий, бывает мало пива!
- Хм. А как у вас с языками? Надо минимум разговорный английский. Естественно немецкий тоже не помешает.
- Нет. С языками у нас не очень. Да мне и не нужно это задание, своих хватает. Просто обидно стало за тех, кто создает бухгалтерский софт.
Учтя полученный опыт, следующему знакомому рассказал о своих предыдущих попытках. Сомнение в успехе было с самого начала, ибо знакомый этот был очень крут. Но он все-таки решил задание посмотреть. Сначала он читал внимательно. Через некоторое время лицо его приняло ласково-печальное выражение. К тому моменту, когда он чтение закончил, впечатление было такое, будто он читал сочинение третьеклассника из школы для умственно-отсталых. Весь его вид говорил о том, что он отнюдь не высокого мнения о сочинившем подобный бред. Несколько мгновений он скорбно молчал, глядя куда-то вдаль, потом снова открыл первую страницу и начал:
- Ну конечно же они ничего в этом не понимают. Вот. Посмотри хотя-бы сюда. Ну кто же так базы данных делает? А требования по возможности изменения констант в расчетах! Они что не догадываются, что нужно не только дать возможность вводить другие проценты? Вообще тут надо скриптовый язык применять, чтобы пользователь мог не только цифры, но и сами формулы менять. А вот тут? Они что, ничего о безопасности не слышали? Да любой хакер такую сетевую защиту за пять минут сломает. Ну а про технологии клиент-сервер я уж не говорю. Явно не их конек. Слушай. Скажи им, что мы задание, конечно, сделаем. Но им надо будет нас сперва пригласить к себе, чтобы мы задание переписали. Мы все в десять раз лучше сделаем. Или пускай пришлют сюда того, кто это задание писал. Мы его хоть чему-нибудь научим. А то просто смешно! Ну что это за задание?
- Ты что предлагаешь? Я вот так к ним приду и скажу, что они дураки? Ну-ну. Они обрадуются и сразу же согласятся, чтобы их, детей неразумных, какой-то гений из России немного поучил?
- Ну зачем же так? Я тебе все напишу. Четко и ясно. Пускай они посмотрят и подумают.
- Хорошо. Пиши.
После разговора с заказчиком, пришлось сообщить приятелю, что клиент просил очень вежливо извиниться и передать, что в подобных услугах не нуждаются. Еще для справки моему знакомому стоит запомнить, что системы, подобные той, которую он описал, давно существуют, но входят в другую ценовую группу. Фирма же, решившая сделать разработку в России, ориентируется на пользователей с меньшими потребностями. По дружбе я передал еще и один частный вопрос, лично мне заданный:
- Почему эти русские так любят выпендриваться?
Вооруженный новыми знаниями о том, чего заказчику не надо, я попробовал пристроить заказ еще в нескольких местах и всюду получил отказ. Но вот нашелся человек, которого эти условия не испугали. Немного подумав, он сказал:
- Я знаю что мы сделаем: Мы опробуем на этом задании новый процесс.
- Какой процесс?
- Вот недавно прочитал в материалах Software Engineering Institute. Там описано как процесс организовать. Вот мы и будем на примере этого задания процесс строить. Метрики разные снимать.
- Чудесно. А сколько этот процесс будет стоит?
- Как сколько? Нисколько не будет.
- Ну начнем с того, что на метрики надо закладывать не меньше пяти процентов бюджета. А в начале и все пятнадцать. Все рисования процессов и документация этапов тоже времени и сил требуют. Да и с софтом для поддержания процесса как быть? Когда вы его сделать успеете?
- А софт мы купим. Заложим в смету работы, а потом себе оставим.
- Хорошо. А почему заказчик должен его оплачивать?
- Так мы же процесс сделаем! Вот у него и будет гарантия.
- Гарантия чего? С теми фирмами, которые ярлычок CMM Level N носят и то не все гладко. Не всегда у них и качество и сроки согласно теории получаются. А многим этот процесс вообще создать не удается. Зачем заказчику ваш процесс?
- Хороший процесс улучшает мотивацию программистов.
- Откуда ты это знаешь?
- Я так думаю.
- Ладно. Опиши свои предложения на английском. Может быть заказчик решит в процесс поиграть.
Конечно я нашел фирму, которая заказчика устроила. В проекте приняли участие: один ведущий разработчик, два программиста, которые сделали всю критичную часть, и семь студентов, работавших по совместительству. Им-то и досталась вся рутина. Но это уже другая история.
Jerry Weinberg:
This style of problem solving is what I call "solution-probleming." It's bad English, but people understand what I mean: "I've got a favorite solution, and I will force every problem to fit my solution." Or, as one writer said, "If you give a small child a hammer, everything in the world starts to look like a nail."
So, it's not confined to Russians (although they seem to be experts at it).
Exposing the Truth Behind Offshore Development" Note From the Editor:
Although this article is focused on off-shore development, it has many interesting parallels with work done here in the United States, and even with the arrogance of individual programmer working within a company.