Что самое дорогое в строительстве? Каждый ответит по своему: фундамент, кровля, инженерка - и все эти ответы неверны.
А что самое дорогое в разработке ПО? Дам подсказку: то же самое, что и в строительстве.
Если вы сейчас начали размышлять, что общего между программированием и стройкой (например, проектирование), вы не приблизились к ответу.
Самое дорогое в строительстве, разработке ПО, дизайне, обслуживании автомобиля (или велосипеда), выпечке тортов на заказ, пошиве одежды, инвестиционном консультировании - это магия.
На эту тему есть известный исторический анекдот. Я позволю себе коротко пересказать его своими словами.
На производстве сломался невероятно дорогой и жизненно важный прибор. Дедка, бабка, жучка и кошка его чинят-починят, но вычинить не могут. Две недели чинили, потом позвали мышку-специалиста по этим приборам. Мышка где-то ударила молоточком и прибор сразу заработал.
После чего мышка выставила счет в 1000 рублей (1 рубль за удар молоточком и 999 за то, что она знала, куда бить).
Магия - это впечатление заказчика о скрытых способностях исполнителя, полученных невероятным трудом.
Другими словами, если заказчик полагает, что исполнитель долго-долго учился своей работе, он склонен частично оплачивать это обучение. Чаще всего это оправданно - чем дольше нужно учиться выкорючиванию зюзюбликов, тем меньшее число специалистов выберут эту профессию (а еще меньше дойдут до конца обучения). Профессиональный выкорючиватель зюзюбликов, таким образом, становится дефицитным специалистом. Если на зюзюблики есть спрос, у него появляется шанс обналичить знания по высокому курсу.
Но само по себе образование - еще не магия. Магия начинается тогда, когда появляется разрыв между сложностью задачи для исполнителя и сложностью в представлении заказчика.
Например, многие представляют себе распознавание лиц в видео как весьма сложную задачу, за которую следует платить хорошие деньги.
А начинающий программист, умеющий подключить пару библиотек (скажем, opencv для распознавания и dbscan чтобы разделить лица по персонажам), решит эту задачу, уложившись в 50 строк не особо качественного кода.
Соответственно, за устройство пирога кровли можно просить баснословные деньги ровно до тех пор, пока заказчик сам не разберется в том, какие деревяхи надо набивать поверх каких и с какой частотой. А затем не сходит в интернет за текущими ценами на каждый этап по отдельности.
Исполнитель, разумеется, заинтересован в том, чтобы оставить в продукте магии по максимуму. Это увеличит доход и позволит скрыть небольшие косяки. Для этого он старается как можно меньше вдаваться в подробности, разговаривая с заказчиком.
Заказчик, в свою очередь, заинтересован в сокращении объема магии. Для этого ему требуется вникать в детали и нюансы. При правильном подходе исполнитель получает оплату только за произведенную работу.
Например, исполнитель говорит, что строительство стен из кирпича будет стоить 100500 рублей. А заказчик неожиданно начинает вдаваться в детали: а какой объем будет уложен? А сколько стоит укладка единицы объема? А сколько пойдет кладочной смеси? И оказывается, что, посчитав все этапы работ без учета магии, можно уложиться в 50250 рублей.
Такая ситуация везде! Приезжаете ли вы на ТО автомобиля, заказываете ли строительство забора или разработку сайта - всегда знание нюансов сокращает затраты.
В то же время не в человеческих силах вникать во все и всегда. А кое в какие процессы лучше не вникать вообще (как говорится, "тем, кто любит сосиски и политику, не стоит разбираться в том, как делается то и другое").
Поэтому волшебство всегда рядом с нами.