О контрактном программировании
Михаил Донской
В условиях становления российского рынка программных средств важно представлять «что почём». И в первую очередь, какой труд и сколько стоит. Новая форма занятости — контрактное программирование — привлекает внимание не только автора статьи, но и многих программистов в России, ищущих более эффективного применения своим возможностям. Очень надеемся, что схемы поведения на рынке, предлагаемые автором, будут полезными.
Сейчас было бы интересно вернуться к обсуждению легенды о недостижимом для остального мира уровне российского программиста: он-де талантливей всех и может, если представится случай, горы свернуть. Почему именно сейчас? Потому что многие зарубежные фирмы присылают к нам своих представителей, чтобы найти партнёров для выполнения работ по контрактному программированию, некоторые из них даже реально заключают такие контракты. Вопрос только в том, что их здесь привлекает — высококвалифицированные специалисты или дешёвая рабочая сила.
При переговорах с иностранцами я люблю подчеркнуть: «Это правда, что в России есть «дешёвые» программисты, правда и то, что есть программисты высокой квалификации, неправда только, что это одни и те же люди». Точнее, все программисты, сочетающие дешевизну и высокую квалификацию, уже свои контракты получили. А привлекает сюда иностранных работодателей именно сочетание таких качеств.
Хотелось бы подробнее рассказать, что такое программист высокой квалификации. Это человек, не просто имеющий высокий потенциал, а его, во-первых, реализовавший и, во-вторых, постоянно повышающий. Ибо ремесло наше таково, что год, потерянный для самосовершенствования, есть год отката назад.
Итак, прежде всего, основным критерием при оценке квалификации программиста является то, сколько своих программ он довёл до практического применения — до кондиции программного продукта, или, как говорили в застойное время, до внедрения. Часто у программистов наблюдается настроение, характерное для учеников математических школ: знать, как решить задачу — всё равно что решить её, а проблемы конкретных выкладок будто не существует. Так и программисты, если подобная задача уже встречалась, то делать её неинтересно.
И начинаются обобщения и усложнения, практическими соображениями не продиктованные. В результате фирма или человек, покупая программу (в идеальном случае, если она все-таки доводится до конца), платит не за удовлетворение своих потребностей, а за развлечения программиста.
Мне встречались программисты, которые (подсознательно, почти по Фрейду) избегали внедрения своих программ, поскольку финальная доводка, сопровождение, составление документации и всё остальное, необходимое для использования программы, отчуждаемой от её разработчика, были для них непосильной ношей.
Таким образом, программисту (как и любому другому) приятнее «слать то, что ему нравится, вместо того, что нужно пользователю. Конкретный пример. Я только что напечатал целую строку по-английски и, хотя авторы пакета «Русское Слово» давно знают, что это типичная неприятность при пользовании данной программой, им не с руки внести в неё соответствующие изменения. Конечно, они объясняют своё нежелание высоконаучными причинами, но я был бы согласен на любую комбинацию, даже из четырёх пальцев, настолько досаждает мне подобная ситуация.
Многие программисты считают знание «примочек», «интимных мест» мало и широко употребляемых операционных систем и оболочек признаком высокой квалификации. О моде на обсуждение вирусов я уже писал[1].
Сегодня пропуском в «высшее общество» служит знание неопубликованных функций Windows. (Поэтому книга Э. Шульмана «Недокументированные вызовы Windows», Edition Addison Wesley, 1992 так популярна. Мне же из этой книги не удалось извлечь ничего полезного для практического программирования под Windows.)
С другой стороны, оставляет желать лучшего общетеоретическая подготовка наших программистов. Например, многие узнают, что такое хеширование, только после нескольких лет профессиональной работы. Для некоторых написание программ обработки списков представляется творческой задачей.
Это обусловлено характером преподавания в отечественных вузах дисциплин, связанных с программированием. Долгие годы обучение программированию заменялось обучением языкам программирования, в основном списку их операторов. Для мехмата МГУ теоретические основы собственно программирования слишком «низкая» материя, а для факультета ВМК, как мне представляется, доступны лишь те, которые находятся в сфере научных интересов сотрудников.
Вне университета само изучение теории кажется кощунством, поскольку практическая ориентация образования в России стала обязательной. В последнее время исчезла даже существовавшая ранее слабая надежда на то, что в каком-либо вузе согласится преподавать более или менее квалифицированный в программировании человек, Уж очень велика разница в оплате труда программистов и преподавателей.
Следует признать, что, с профессиональной точки зрения, все программисты уже находятся, по крайней мере, во внутренней эмиграции. На рынке капитала в России любые нововведения, в том числе и программирование, не имеют никаких шансов на успех. Дело в том, что существуют заведомо более выгодные способы вкладывания денег, в частности, в коммерческие ларьки, с которыми программистам конкурировать довольно трудно. Даже фирмы, специализирующиеся на продаже программ, в основном ориентированы на западные пакеты — они быстрее реализуются, да и не надо вкладывать деньги в производство, и особенно в рекламирование продуктов.
Поэтому люди, пытающиеся дорого продать свой квалифицированный труд, автоматически ищут если не работу, то контракты за рубежом. Здесь тоже не всё гладко. Немало наших бывших и нынешних соотечественников путешествуют там по городам и весям, «продавая» российскую дешёвую «программистскую силу», получая с этого приличные дивиденды и создавая соответствующее общественное мнение. Естественно, после этого достойная оплата кажется западным партнёрам неприличной.
В то же время размещение заказов на программирование у нас — это серьёзный риск, за который нам же и приходится платить, так что рассчитывать на равную с зарубежными коллегами зарплату не приходится. Надо искать разумный компромисс. У меня есть схема такого компромисса.
Во-первых, для того чтобы контракты были выгодны обеим сторонам, нам имеет смысл продавать уже готовую или почти готовую работу так, как будто её надо выполнять сначала, но делать это со скидкой. Например, если у вас есть хорошая программа работы с изображениями, то выгодно взять контракт на программу, которую легко создать с помощью имеющегося инструментария, разработанного для той, предыдущей программы.
Во-вторых, можно продавать относительно небольшие программы на базе очень трудных алгоритмов. Посмотрите на пользующиеся успехом за рубежом российские программы, например программы упаковки изображений и звука, различные программы распознавания образов.
Но главной проблемой является проблема гарантий. Если два незнакомых бизнесмена — наш и зарубежный — встречаются в «Шереметьево-2», то весьма велика вероятность, что оба они ищут «лёгких» денег, и не всегда на праведном пути. Ситуация, по моим наблюдениям, симметрична — на всякого нашего жулика найдётся жулик «с той стороны». Поэтому, заключая контракт на создание программы, каждая сторона должна быть уверена в том, что, даже если партнёр не выполнит своих обязательств, её потери будут минимальны. Такую уверенность могут дать гарантии и гаранты — организации и люди, эти гарантии обеспечивающие.
Мне кажется, что вообще одна из самых существенных проблем сегодняшнего российского бизнеса состоит в том, что каждый действует в одиночку, отвечает только за себя и ни на кого не надеется. В такой ситуации торговля воздухом и другие всем известные мошенничества абсолютно натуральны и фактически ненаказуемы. Если бы профессиональные сообщества были более сплочёнными, принцип «взял и беги» не мог бы реализовываться столь часто.
В профессиональной программистской среде есть люди и частные организации, имеющие либо достаточно большие деньги, либо достаточно известное имя, чтобы выступать гарантами для зарубежных партнёров в различных контрактах. Если коллектив, чьим гарантом выступал такой человек, не выполнил своих обязательств, гаранту придётся возмещать ущерб или самому выполнять работу. Разумеется, он должен получать определённые деньги в зависимости от суммы контракта, подобно страховому взносу.
Вообще такая схема фактически уже существует, но, как всякие недоговорённости, чревата непредсказуемыми последствиями. Так, если человек с хорошей репутацией представит вам кого-либо, вы будете (может быть, подсознательно) «переносить» на нового знакомого то доверие, которое вы испытываете к тому, кто его рекомендовал, а в случае неприятностей перекладывать на него часть вины. Мне иногда приходится заранее оговаривать, что никакой ответственности за представляемого мною человека я не несу, что, конечно, фактически является антирекомендацией.
В свою очередь, ряд зарубежных, в частности американских, бизнесменов, давно интересующихся Россией, чётко представляющих себе, кто здесь есть кто, и хорошо знакомых российским программистам, могли бы служить гарантами тех фирм, которые пытаются размещать у нас контракты на программирование. Должен заметить, что громкие имена фирм сами по себе ничего не гарантируют. Так, одна из очень известных американских фирм ведёт в России (и не только в России) политику поиска дешёвой рабочей силы на неадекватных принципах. Ей пришлось придумать довольно хитроумную схему для обхода американских законов о труде, в частности для выплаты зарплаты ниже минимальной. Тем не менее, находится масса людей, плохо представляющих себе американские реалии и готовых ехать работать на эту фирму с зарплатой 1000 долл., в месяц и без медицинской страховки.
Я же предлагаю следующую схему. В некотором месте здесь собираются заявки на контрактное программирование. Контракты берутся под гарантию и передаются тем программистским коллективам, которым эта работа обойдётся дешевле всего благодаря имеющемуся у них заделу, или просто заказчики получают координаты возможных партнёров, но в таком случае они действуют на свой страх и риск. Никакой монополии подобная схема не предполагает. Если кто-то желает искать или размещать заказы самостоятельно — это его право, но и его риск.
Побочным эффектом данной организации будет более правильная оценка стоимости каждой отдельной работы. По моим наблюдениям, российские программисты в поисках контракта (без выезда из России) рассчитывают либо на сумму 100—200 долл., в месяц, либо, наоборот, на 1,5—2 тыс. долл. Очевидно, что первая группа собирается работать в своём привычном стиле и зарубежный контракт связывает только с относительным увеличением зарплаты, но не с повышением ответственности, а вторая, по-видимому, имеет представление о нервном напряжении, связанном с выполнением работы по конкретному плану к конкретному сроку, но плохо осведомлена о рынке рабочей силы за рубежом.
Наличие объективной информации о возможных контрактах и уровне зарплаты очень помогло бы тому, кто только начинает продавать свой труд, сориентироваться на рынке и продать самого себя.
Примечания
1. См. «Мир ПК», № 2/93, с. 104.
Об авторе: российский учёный, программист и предприниматель, один из создателей шахматной программы «Каисса» — первого чемпиона мира среди шахматных программ (1974), создатель ИТ-компании «ДИСКо»
журнале «Мир ПК» № 8/1993
21 мая 2025