Friday, April 16, 2010

Каша из топора

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


Итак, я подрядчик на сложный проект, вы - заказчик, для простоты, - некого программного обеспечения. У меня нет ресурсов генерить хорошие привильные идеи, ну, например, у меня нет квалифицированных разрабочиков и вообще штата, а под каждый проект я иду в государственный институт и набираю студентов первого курса за соответствующую плату. В качестве решения я выдаю то, что мне выгоднее (действительно, - это же бизнес!). Теперь уже это ваша головная боль показать мне почему то, что я сделал, нехорошо. Очевидно, что мне выгоднее делать негибкое решение: его делать банально дешевле, к тому же, легкие изменения, которые в случае настраиваемого решения можно было бы выполнить конфигурацией, для вас обернутся необходимостью разработки, на которой, очевидно, я могу заработать. А куда вам деваться, если я уже выбран? Если вы ничего не понимаете и/или не хотите разбираться/думать, вы согласуете мой вариант "наименьших затрат". Если вы разбираетесь в вопросе (хотя бы на уровне фильтрации бреда), вы будете вынуждены тратить время на проработку со мной предлагаемых мною вариантов: объективно доказывать, что они не соответствуют каким-то там стандартам/практикам (просто сказать, что так "плохо" не получится, так как предложение будет воспринято мною как "дополнительное требование", которое "out of scope"), тратить время на детальное объяснение своих требований, поскольку я, прикрываясь словами "наша работа используется во всем мире (!), и только у вас такие требования", буду поначалу "не понимать" все о чем вы меня просите (особенно здорово, если мы с вами банально говорим на разных языках, это - небольшое, но преимущество, опять же мое). В конечном счете ваша деталлизация спустится до уровня работы моего архитектора, и вы сами за него сделаете его работу. Как видите, в любом случае вы в проигрыше. Что плохого для вас:
- вы тратите свои ресурсы. Поскольку очевидно, что это - моя работа, вы их в таком объеме не планировали;
- как бы ни был я плох как подрядчик, в любом случае я более профессионален в предметной области (ибо я все-таки успешен на рынке, иначе вы бы меня не выбрали), а обмануть любителя профессионалу проще;
- свои непрофессиональные решения я буду потом оправдывать вашими же согласованиями.


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

Вы ссылаетесь на требования международных стандартов (вам повезло и свой "здарвый смысл" вы можете объективно подтвердить), я легко обосную вам то, как дорого мне (собственно, вам) дорабатывать мой продукт до общепризнанных "Security in depth" (ибо в depth залазить не хочется, например, студенты которые раньше у меня работали и которых я увлоил после проекта уже бородатые дядьки и покупать их уже отнюдь не дешево) и т.п. В итоге, вы снова вынуждены разбираться в предлагаемых мною компромиссных вариантах.


Ну и последнее, если даже вы меня выгнули и я вам за уговоренную ранее цену делаю именно том, что вам нужно, неся при этом какие-либо потери, я сделаю так, что эти потери я отобью на поддержке своего детища. Я ВСЕГДА смогу сделать так, чтобы наша с вами история имела продолжение либо в части поддержки, либо в части доработок, просто плохо выполняя свою работу.


Как же вам со мной бороться? Лучше вам, конечно, меня не выбирать, но как это можно сделать:
1. Я должен выбираться в объективном тендере, исключающем коррупцию.
2. Я должен иметь подтвержденный опыт, иметь в штате нужных вам специалистов с подтвержденными компетенциями.
3. Мои подходы к разработке должны соответствовать имеющимся практикам и стандартам, впрочем как и продукты, которые я делаю.
4. Я не должен быть уникальным в каком-либо виде, должна быть настоящая конкуренция. Идеально, если вы как-то проверите, что я не "договорился" со своими конкурентами. Следствие: берите лучше коробочные варианты, а не заказывайте мне разработку, либо держите своих разработчиков и обспечивайте среди них отсутствие "ключевых" фигур.
5. Четко разделяйте ответственность меня и свою. Контролируйте это разделение постоянно.
6. Четко формируйте свои требования, чтобы они не допускали хоть сколько-нибудь свободного толкования. Четко определите что входит в объем проекта и убедитесь в том, что я с этим согласен.
7. Имейте четкое представление о том, что хотите получить. Будьте уверены, что вашими требованиями это покрывается. Можете нанять какого-нибудь стороннего эксперта, обязательно квалификацией не ниже меня и имеющего аналогичный опыт, который поможет вам сформирвоать требования, покрывающие ваши желания, а так же быть экспертом с вашей стороны.
8. Позаботьтесь о том, чтобы у вас были рычаги давления на меня.


Как это не прискорбно сознавать, бизнес циничен. Нам всем нужно смотреть в корень.

4 comments:

Igor Gots said...

Во истину из топора.
Буду "плохим полицейским"
1. Много раз, будучи на стороне подрядчика, писал условия на тендер, в котором может выиграть только моя компания. Вплоть до "наличия синего холодильника, купленного 09.09.09 в магазине Холодильник". Пару раз видел случаи, когда при наличии 2х подходящих холодильников, находился перст, указывающий на победителя.
2. На время проведения тендера, человек с нужным сертификатом в колонке "место работы" может поставить нужную контору. Может и ставит.
3. Стандарты, стандарты.. помойму тупиковый путь.
4. Это в идеале. В реале систему строят под узкую задачу, которая и создана то под какого-то конкретного подрядчика.
5. Уже в 5й раз хочу написать "мир не бывает черно-белым", в этот раз пишу. нереально.
6. Не давно видел ролик в котором Джигурда вроде (бородатый мужик) около минуты используя одно слово из 3х букв описывал погоду и свои ожидания от нее. В принципе смысл улавливался.
7. Эксперт тот же подрядчик.
8. Не платить что-ли?

Предложу свой вариант работы с подрядчиком.
К сожалению откаты, низкая квалификация и тп непобедимы. Но можно использовать тот факт, что платит за ошибки сильных самый слабый. У заказчика должен быть некто заинтересованный в работающем проекте. Если такого человека нет, проект обречен. Подрядчик выделяет жертву - инженер\менеджер, который после того как все уже будет распилено и пропито (официальный платеж не делаем), будет латать дыры за зарплату. Все. Сталкиваем этих 2-х людей и до тех пор пока первый не скажет, что система готова, за проект не платим.
Схема кстати из жизни. Мы так один биллинг довели до ума.

Sergey Soldatov said...

1. Утягчающем обстоятельством является то, что все остальное, кроме цены - уже почва либо для коррупции, либо для злоупотреблений со стороны подрядчика.
Очевидно, что когда хочешь сделать действительно "конфетку" цена - далеко не самое важное. Но.... это означает, что выбираемый победитель обладает некоторым преимуществом. А раз так, то беря во внимание наличие этого объективного преимущества, условия тендера уже не выполняются, так как я должен рассматривать минимум два ОДИНАКОВЫХ претендента (а тут мы имеем, что кто-то лучше).
Действительно, подрядчику потом не составит труда шантажировать меня этим преимуществом, от чего, собственно, меня и должен защитить тендер (если что - пойдем к конкуренту, а не к кому :-(, он же такой один, с преимуществом ).
Ну а если объективного преимущества нет, да и цена, вроде как, не минимальна, то понятно - коррупция.

В общем, тендер способен защитить меня только в случае выбора победителя по цене.

Amiran Alavidze said...

Во-первых, отличный пост! Во-вторых, я хотел добавить несколько предложений, которые успешно применялись в некоторых проектах в которых я участвовал.
1) Подрядчика желательно выбирать проверенного - либо по собственному опыту, либо обязательно проверять референсы (и желательно чтобы ону были независимы, а не предоставлены подрядчиком).
2) Со стороны заказчика обязательно наличие менеджера проекта, который "строит" подрядчика. Если проект большой, возможно нанять стороннюю компанию для управления проектом. Задача именно проектного менеджера удостовериться что ТЗ достаточно детализировано.
3) Договор подписывается между компаниями, а проект делается конкретными людьми! Для больших проектов обязательноознакомление с проектной командой и получение гарантий от подрядчика что основные люди не поменяются в процессе.
4) Необходимо учитывать различные виды контрактов (фиксированная цена, time&materials, или смешанный) и соответственно их использовать. Часто стоит выделить определение основных требований заказчика в отдельный подпроект типа time&material, а как только требования определены, зафиксировать стоимость имплементации.
5) Цена не должна быть основным критерием. В "здоровых" компаниях где не надо постоянно "прикрывать задницу" часто так и делается - качество важнее цены. Частично это делается с помощью "консенсусного" выбора подрядчика с заранее выбранными взвешенными критериями.

Anonymous said...

решил оставить так же свой коммент :)

Фундаментальная дилема при выборе любой "недоделанной" корпоративной системы, которая критична для бизнеса и соответственно подрядчика - это конфликт цена и результат.

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

Но если система реально имеет недоработки НО по каким-то причинам (разные могут быть) все таки решается ее внедрять, ОБЕ сотороны должны понимать это...

На мой взгляд эти критичные системы должны внедряться при подходе win-win, т.е. заказчик должен понимать подрядчика и его проблемы и не пытаться все сделать на халяву и наооборот подрячик должен быть открытым заказчику и решать оперативно и превентивно проблемы заказчика... Это достаточно сложно НО эффективно...