Всего этого лишены программы, разработанные по заказу. Редкий разработчик согласится бесплатно в течение длительного времени вносить улучшения в сделанную и оплаченную работу.
Почему разработчик рыночного продукта это делает? Потому что надеется на дальнейшие продажи и расширение объема продаж. (Не одно и то же?)
Однако нет правил без исключений. Существуют фирмы, чьим продуктом является заказная разработка, но в этом случае разработка – такой же продукт. Это всегда разработка в определенной области, на одних и тех же средствах, с тем же стремлением к увеличению заказов, поэтому все выводы о продукте относятся к разработкам таких фирм.
Кратко обозначим основные преимущества внешнего разработчика, которые свойственны ему по определению.
Профессионализм. Внешний разработчик интегрирует не только опыт многих разработок, но и многих «живых» систем, то есть реальных предприятий, которые ему пришлось автоматизировать.
Реализм. Внешний разработчик вынужден отчетливо представлять степень реализуемости задания, тем самым предохраняя заказчика от неоправданных затрат финансов и/или времени на нереализуемые проекты. На мой взгляд, это самое важное преимущество.
Грубовато, но ярко обозначил эту ситуацию Себастиан Брандт в «Корабле дураков»:
«Наобещает Вам дурак,
То, что свершить нельзя никак:
«Любую хворь я излечу,
Я, мол, и горы сворочу!»
Весь мир того не совершит,
Что посулить дурак спешит.»
Ответственность. Внешний разработчик (в отличие от собственного) несет перед заказчиком юридическую и финансовую ответственность за разработку в полном объеме.
Экономическая целесообразность. Разработку системы может выполнить только подготовленный коллектив, имеющий концептуальные, инструментальные и технологические заделы. На оснащение, обкатку и наработку всего этого уходит немало времени и средств, поэтому при относительно небольших планируемых сроках (до двух лет) на эту работу и несмотря на ее разовый характер на данном предприятии, разработка внешним исполнителем будет стоить дешевле, чем собственным. При иных условиях может быть не так, но это требует детального анализа.
К созданию своих коллективов разработчиков обычно тяготеют те фирмы, которые сами специализируются в этой или близких областях. Собирая или приглашая к себе коллектив разработчиков, они чаще всего имеют в виду, что выполнив работу для них, этот коллектив впоследствии создаст рыночный продукт, который окупит разработку и сохранит коллектив для последующих усовершенствований созданной программы. Конечно, резон в таком подходе есть, и есть примеры успешной его реализации. Однако есть и обратные примеры.