Беседы о программировании
Взявшись за написание предыдущей колонки, я не думал о математическом анализе, физике или статистике.
Но задавшись вопросом: "Что же в действительности должен знать разработчик ПО?", я решил сначала заняться этими более легкими темами.
Сегодня мы рассмотрим наиболее важный пункт из нашего списка самоусовершенствований - составление сметы расходов.
Мне знакомы стереотипы: программисты - творческие личности, бухгалтеры - ограниченные бюрократы; программисты ведут мяч в игре, бухгалтеры набирают очки.
Однако лучшие бухгалтеры подобны хорошим программистам, ищущим пути, как сделать то, что нужно их компании, искусно применяя правила. Худшие программисты напоминают плохих бухгалтеров: делают с переменным успехом лишь то, что уже давно сделано другими, и упускают ценные возможности.
Возможно, такое мнение сложилось у меня из-за того, что я начинал карьеру в компании Exxon: её капитал является общим фондом, средства из которого вкладываются и в исследования с присущим им высоким риском, и в капиталоёмкие производственные компании. В Exxon каждый инженер рассуждает о норме прибыли.
Я не могу спокойно смотреть на бездарное расходование средств в дорогостоящем и длительном проекте, каким является создание программы; в такой ситуации разработчики не достигнут наилучшего результата. Проблема сводится к двум вещам: капиталу и затратам.
Если ваша компания выписывает чек на покупку грузового автомобиля, компьютера или здания, она не становится беднее. Компания лишь перемещает богатства из одного кармана под названием "наличность" в другой карман под названием "прочие фонды".
За исключением стимулирования некоторых типов коммерческой деятельности, компания не станет называть это расходами, по крайней мере, напрямую. (Почему компания стремится назвать что-то расходами, а не перемещением активов? Потому что расходы уменьшают доход и, следовательно, снижают налог на компанию в текущем году.)
Однако, возможно, компания совершает такую покупку, чтобы способствовать получению дохода с актива, имеющего конечный срок службы. Поэтому ежегодно в бухгалтерских книгах компании некоторые расходы на приобретение производственных фондов соотносятся с доходами, которые эти фонды приносят.
Это называется амортизацией, и в бухгалтерских книгах это выглядит так, как если бы актив оплачивался в течение всего срока его службы, даже если его стоимость и была полностью выплачена авансом.
Не надо быть финансистом, чтобы понять, что проект выглядит более привлекательным, если его стоимость раскладывается на несколько лет вместо единовременной оплаты в течение первого года. Если журнал предлагает вам подписку на три года, вы ожидаете скидки в качестве компенсации за использование средств в течение этого времени.
Точно так же, когда сравнивают проект, стоимость которого оплачивается авансом, с проектом, затраты на который отсрочены, то первый из них должен быть в целом менее дорогостоящим, чтобы быть равно привлекательным.
Однако, когда вы платите рабочим за постройку здания, стоимость этого здания является капиталом и списывается в течение нескольких лет. Когда вы платите программистам за написание фрагмента ПО, их зарплата является расходом и относится на год платежа. Это искажает игровое поле: по мере расширения информационных технологий искажение становится все более значительным.
Так давайте выберемся из наших лисьих нор и начнем принимать участие в обсуждении этих вопросов. Если мы сами не будем их решать, за нас это сделают другие.
Питер Коффи
Худшие программисты подобны плохим бухгалтерам, упускающим ценные возможности