Маленькая история одного задания.

Опубликовано в журнале Byte/Россия Апрель 2000

В рамках выяснения потенциальных возможностей для заказной разработки софта на территории бывшего СССР я провел летом 1998 года небольшой эксперимент в ньюс-группе relcom.comp.software-eng. Основной целью было изучение проблем морального стимулирования. В процессе обсуждения различных моделей были выявлены некоторые весьма занятные закономерности. В результате анализа этих побочных результатов и появился данный текст.

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

Итак. Я взял у виртуального заказчика задание и пошел по виртуальным фирмам спрашивать, смогут ли они его выполнить и сколько за работу получить хотят. Задание - типичное: Немного баз данных, немного графиков, масса бухгалтерских расчетов да куча форм ввода и видов генерируемых отчетов. Хорошая команда из пяти человек за два месяца должна справиться.

Первая попытка. (Тип "Стратег")

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

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

- В каком смысле перспективнее? Задач подобных сейчас полно, да и в будущем их меньше не станет.

- Да нет. Нам бы чего-нибудь современное. Хоть ту же Яву или чтоб через Интернет система работала. Да и MFC мы используем. А тут требуется совместимость с полуосью и третьими виндусами. Это ж интерфейс как для Доса будет.

- Так они и сейчас программы для Доса продают. А OS/2 стоит в Германии в куче контор. В том числе в банках. А банки за софт щедро платят.

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

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

Вторая попытка. (Тип "Экспериментатор")

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

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

- Естественно захотят. А ты что думал?

- Хм. Откуда ты такого заказчика выкопал?

- Ни откуда не выкапывал. Это серьезная фирма. Сами они программы делают, но людей не хватает, вот и хотят что-то на стороне сделать. Ну так с классами-то как?

- Не знаю. Я же хотел все на Лиспе делать.

- На каком Лиспе?

- Язык программирования такой.

- Я знаю, что язык. Но почему на Лиспе? Каким боком ты его в это задание втиснуть хочешь? У вас что, только Лисп используется?

- Нет. Как раз Лиспа-то мы и не знаем. Задание ерундовое. Чтобы время не пропадало, Лисп и выучим.

- Ну на Лисп они точно не согласятся.

- Тогда Activ-X применим.

- Это под полуось-то?

- Ну, а что? Тут всего немного стандартных контролек надо. Заодно и напишем для полуоси.

- Это за два месяца? И выучите, и напишите, да еще на этом и задание сделаете?

- Ну не за два, так за три.

- Нет. Не подпишутся они на это. У них программисты на C++ работают. И библиотеки все должны быть переносимые.

- Ладно. Месяца за четыре мы им это задание сделаем.

- Почему за четыре? Тут для пяти человек работы месяца на два, не больше.

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

- То-есть ты предлагаешь заказчику оплатить твою работу и еще столько же денег дать на развлечение? И ты думаешь, что его эта перспектива обрадует?

- Ничего. Лапши на уши навешаем. Не впервой.

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

- Ну а нам зачем такие задания. Не интересно это нам совершенно. Вот если что-то интересное... Мои ребята ерундой заниматься не хотят.

- Тогда счастливо. Пойду искать кого-нибудь менее привередливого.

Третья попытка. (Тип "Постановщик")

Менее привередливым оказался товарищ, случайно наш разговор услышавший. Возмущению его не было предела:

- Я не понимаю что за пренебрежение бухгалтерскими задачами! Почему такой снобизм? Я, как постановщик бухгалтерских программ, могу спорить, что никто просто так хорошую бухгалтерскую программу не напишет.

- Интересно. Что значит "постановщик" и как же вы эти программы создаете?

- Я задание придумываю, а мой программист выполняет.

- Что, всего один?

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

- Так программа нужна для немецкой бухгалтерии.

- Ну и что? Хоть и для немецкой.

- Ладно. А вот тут люди говорят, что задание не интересное. Как своего программиста стимулировать будете?

- Хм. Сейчас выясню.

Видимо изучение тонкостей морального стимулирования много времени не заняло. Товарищ постановщик через минуту появился вновь:

- Все. Спросил своего программиста. Он показал на холодильник, стоящий в фирме и сказал, что чем больше в нем будет пива, тем выше будет моральный стимул. Ясно? Не бывает неинтересных заданий, бывает мало пива!

- Хм. А как у вас с языками? Надо минимум разговорный английский. Естественно немецкий тоже не помешает.

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

Четвертая попытка. (Тип "Гений")

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

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

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

- Ну зачем же так? Я тебе все напишу. Четко и ясно. Пускай они посмотрят и подумают.

- Хорошо. Пиши.

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

- Почему эти русские так любят выпендриваться?

Пятая попытка. (Тип "Бюрократ")

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

- Я знаю что мы сделаем: Мы опробуем на этом задании новый процесс.

- Какой процесс?

- Вот недавно прочитал в материалах Software Engineering Institute. Там описано как процесс организовать. Вот мы и будем на примере этого задания процесс строить. Метрики разные снимать.

- Чудесно. А сколько этот процесс будет стоит?

- Как сколько? Нисколько не будет.

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

- А софт мы купим. Заложим в смету работы, а потом себе оставим.

- Хорошо. А почему заказчик должен его оплачивать?

- Так мы же процесс сделаем! Вот у него и будет гарантия.

- Гарантия чего? С теми фирмами, которые ярлычок CMM Level N носят и то не все гладко. Не всегда у них и качество и сроки согласно теории получаются. А многим этот процесс вообще создать не удается. Зачем заказчику ваш процесс?

- Хороший процесс улучшает мотивацию программистов.

- Откуда ты это знаешь?

- Я так думаю.

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

Пара слов в заключение.

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


Copyright © 1998, Vitaly Rudovich
All rights reserved.


Комментарии к английской версии

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.