Как-то раз я напомнил о словах Мура по поводу увеличения затрат на создание все более сложных узкоспециализированных чипов в беседе с группой управляющих из Qualcomm, компании из Сан-Диего, выпускающей чипы для сотовых телефонов. В ответ один из присутствующих озадаченно спросил: «А разве разработка программного обеспечения обходится менее дорого? И разве программисты стоят дешевле, чем инженеры – разработчики аппаратных средств?»
Хорошие вопросы. Никто не смог ответить на них сразу, и я решил конкретизировать их с помощью примера из собственного опыта. Компания Rolls-Royce, желая повысить эффективность реактивных двигателей, решила создать сложный блок контроля над уровнем топлива. Это можно было сделать двумя способами: либо разработать заказное оборудование с конкретными характеристиками, либо воспользоваться универсальным микропроцессором и запрограммировать его с применением специального программного обеспечения. В любом случае ей пришлось бы выполнить немалый объем инженерно-конструкторских работ всего лишь для нескольких тысяч блоков. Почему Rolls-Royce предпочла софт?
Как почти всегда бывает, мой излюбленный способ переформулировки общего вопроса в конкретный сработал. Мы довольно быстро нашли ответ, который до сих пор выдерживает критику многих экспертных групп. Дело в том, что услуги хороших разработчиков аппаратных средств и программистов обходятся одинаково дорого. Главная разница в затратах при реализации этих двух типов проектов обусловлена расходами на создание прототипа и его новых версий, и особенно на исправление ошибок. Любая разработка неизменно предполагает определенное количество проб и ошибок, но при работе над аппаратными средствами на их исправление расходуется значительно больше ресурсов, чем при написании программ. Если новое «железо» не функционирует как требуется, это зачастую означает не один месяц дорогостоящих работ, связанных с изменением конструкции. А если дает сбой новое программное обеспечение, его автор исправляет проблему, вводя в файл другие команды, выполняет перекомпиляцию программы и через пару дней, а то и спустя несколько минут, опять проводит тестирование. Кроме того, программное обеспечение можно без особого труда исправлять, совершенствовать и модернизировать даже после того, как оно отправлено заказчику.
Таким образом, главное преимущество софта обусловлено быстротой цикла его создания – процесса перехода от концепции к прототипу и дальнейшего периода обнаружения и исправления ошибок. Если инженеры-разработчики никогда бы не совершали ошибок, затраты на создание сложного аппаратного средства и сложной компьютерной программы были бы вполне сопоставимыми. Но, поскольку людям свойственно ошибаться, наиболее предпочтительной стала среда разработки программного обеспечения (если только для этого не требуются новые быстродействующие аппаратные средства).