Однако именно с этой идеалистической точки зрения программное обеспечение рассматривается многими представителями ИТ-бизнеса. В общем, такая позиция вполне корректна: нет предела инновациям в области ПО. Однако это представление не отражает прозаическую практику реального использования программных средств в бизнесе. В сущности, для руководителей и сотрудников компаний ПО не является идеей или абстрактным понятием. Компьютерные программы, в особенности прикладные, это осязаемые продукты, приобретаемые за реальные деньги конкретными людьми, стремящимися к достижению реальных результатов. И если рассматривать ПО не в качестве абстракции, а как продукт, становится ясно, что оно так же подчиняется законам экономической теории, рынка и конкуренции, как и самые обычные материальные товары. На самом деле именно нематериальная форма ПО обусловливает некоторые его дополнительные характеристики, в совокупности делающие его еще более подверженным коммодитизации, чем многие материальные товары.
Так, компьютерные программы в значительной степени подвержены эффекту масштаба. Разработка программы требует серьезных затрат, работы высококвалифицированных специалистов, тщательного планирования, строгого контроля качества, координации и бесконечного тестирования. Однако если программа уже написана, физических ограничений для ее воспроизводства практически не существует. Ее копирование и распространение почти не требует затрат, а иногда не требует их вообще. В значительной степени история разработки программного обеспечения - это история попыток более полно использовать латентный эффект масштаба и компенсировать высокие затраты на разработку за счет максимального увеличения количества пользователей. Хотя часто говорят, что программное обеспечение стремится к бесплатному использованию, правильнее будет сказать, что оно стремится к увеличению количества распределенных или удаленных пользователей или, иными словами, к превращению в товарный ресурс.
В начале 1950-х годов, когда компьютеры впервые стали использоваться в бизнесе, у компаний не было другого выхода, кроме как разрабатывать собственные программы. Производители компьютерной техники почти не занимались разработкой ПО, а соответствующей специализированной отрасли еще не существовало. Каждая компания, покупающая мейнфрейм, должна была создавать программы для выполнения даже самых элементарных функций, таких как преобразование двоичных чисел в десятичные и наоборот. Учитывая сложность и высокие затраты, разработка надежной программы требовала колоссальных (и, как вскоре выяснилось, бесполезных) усилий. Опасаясь, что затраты на разработку ПО могут отпугнуть покупателей компьютеров, IBM помогла объединиться пользователям ее мейнфреймов серии 700, которые в то время были основными бизнес-компьютерами. Ассоциация, получившая говорящее название Share («Делись»), имела одну главную цель: снижение затрат компаний на ИТ за счет обмена программным обеспечением. В первый год существования Share среди ее членов были распространены около 300 программ, что, по оценке специалистов, позволило сэкономить не менее $1,5 млн46.
На примере ассоциации Share впервые проявился принцип, который сегодня стал основным императивом развития программного обеспечения для бизнеса: ради достаточно серьезного сокращения затрат компании готовы пожертвовать своей исключительностью. Разумеется, такой подход используется не только в области ПО, но и вообще в бизнесе. Если широко используемый ресурс дорог и в значительной степени подвержен эффекту масштаба, соображения, связанные с экономией затрат, возобладают над стратегическими. В таких случаях контроль над поставками ресурса обычно переходит от пользователей к нескольким внешним поставщикам. Естественно, именно это и произошло с ПО.
Поскольку программы постоянно усложнялись и включали уже не тысячи, а сотни тысяч, а то и миллионы строк машинного кода, обмена в рамках объединений пользователей было уже недостаточно. Большинство компаний просто не могли себе позволить содержать штат, необходимый для самостоятельной разработки программ. Вместо этого они начали заключать контракты на разработку ПО со специализированными фирмами, которые впервые появились в середине 1950-х и быстро размножились в 1960-е. Программисты, оставшиеся в штате компаний, постепенно перестали писать новые программы и начали заниматься их обслуживанием, совершенствованием и устранением ошибок.
По мере накопления опыта централизованного обслуживания самых разных клиентов новые фирмы смогли гораздо полнее использовать эффект масштаба, изначально присущего этой отрасли. В то же время их появление способствовало дальнейшей коммодитизации программного обеспечения для бизнеса, инициировав его трансформацию из внутреннего корпоративного ресурса в закупаемый извне. Хотя фирмы-контракторы разрабатывали для клиентов так называемые клиентские приложения, на самом деле эта тенденция кастомизации была скорее кажущейся, чем реальной. Чтобы иметь возможность неоднократно использовать большие фрагменты уже написанных единожды программ для выполнения разных заказов, подрядчики специализировались на конкретных отраслях или бизнес-процессах. Как поясняет специалист по истории программного обеспечения Мартин Кэмпбелл-Келли (Martin Campbell-Kelly), «по мере того как фирмы получали все больше и больше заказов из одной области применения, происходило накопление знаний в области программных средств и ресурсов, благодаря чему они могли и различных сочетаниях использоваться для выполнения заказов от самых разных клиентов»47. Только за счет такого многократного использования сложные программы оставались доступными для широкого круга компаний, а разработчики программ получали прибыль.
С появлением в 1970-1980-е годы миникомпьютеров, а затем и ПК произошли три важных изменения, которые сильно повлияли на процесс разработки программного обеспечения и усилили позиции поставщиков. Во-первых, компании смогли позволить себе покупать больше компьютеров. В результате количество пользователей увеличилось в несколько раз. Соответственно возросли и возможности экономии за счет эффекта масштаба при разработке ПО. Во-вторых, сотрудники нетехнических специальностей впервые начали непосредственно работать на компьютере, поэтому программы должны были быть простыми в использовании и стандартизованными. В-третьих, возросла роль компьютерных сетей, и компании были вынуждены заменить «закрытые» корпоративные приложения на «открытые». В результате этих изменений программы стали продаваться в виде прикладных пакетов.
Эволюция пакетов программ имеет поразительное, но вполне закономерное сходство с эволюцией компьютерной техники. Первые популярные приложения для массового рынка, такие как текстовые редакторы и программы для работы с электронными таблицами, использовались самой многочисленной и наименее технически подготовленной группой потребителей (то есть рядовыми сотрудниками компаний) и выполняли общие, периферийные задачи. Но постепенно пакеты приложений начинали играть все более важную роль в работе компаний и выполнять все более специализированные задачи. Рост производительности микропроцессоров и необходимость их функциональной совместимости, обусловливающие необходимость стандартизации даже самой сложной компьютерной техники, также диктовали потребность унификации самых сложных программ. К концу 1980-х компании не просто покупали одни и те же текстовые редакторы и программы для работы с электронными таблицами. Они приобретали типовые программы для управления базами данных, создания локальных сетей, бухгалтерского учета, биллинга, разработки производственных графиков, управления запасами и персоналом, компьютерного дизайна и проектирования и т. д. Раньше разработка специальных программ для выполнения всех этих технических и экономических задач была возможной, хотя и требовала больших затрат. Теперь любая компания могла купить все эти программы (или, по крайней мере, получить лицензию на их использование) всего за несколько сотен долларов.