В институтском курсе по математическому моделированию была одна задача, которую помню до сих пор – о лисах и зайцах. Нужно было построить модель экосистемы, в которой зайцы едят траву, лисы едят зайцев.
Можно устанавливать разные коэффициетры прожорливости лис и зайцев и разные коэффициенты скорости их размножения. Отношения между участниками описываются системой дифференциальных уравнений, затем строится фазовая траектория системы, которая показывает, как система будет развиваться. Можно выбрать бесконечное множество начальных условий и получить бесконечное множество кривых. Но итоговых сценариев будет в итоге только два: либо система в своем развитии приходит к сбалансированному равновесию и существует бесконечно долго (фазовая кривая «наматывается» на точку равновесия), либо она разрушается (кривая попадает в начало координат – все лисы и зайцы гибнут). Последнее происходит по одной из двух причин – либо кто-то из участников процесса слишком прожорлив, либо кто-то слишком быстро размножается.
Жизнь богаче той или иной модели, поэтому вносит свои поправки, значит, вместо двух идеальных сценариев мы можем наблюдать целый спектр, где-то «пациент скорее жив, чем мертв», где-то – наоборот. Но даже при кажущейся простоте и ограниченности модели, она очень точно описывает широкое многообразие отношений в природе и обществе, которое описывается фразами «если»-«то». Например: если платить мало налогов (или не платить их вообще), то инфраструктура государства будет деградировать. Или – если дать чиновникам слишком много прав, то малый бизнес не сможет существовать. Еще: если разработчики ПО будут претендовать на высокие зарплаты, то заказы уйдут индийским компаниям. А если владельцы компаний по разработке ПО будут платить сотрудникам низкие зарплаты (и строить себе небоскребы), то те либо уедут в другую страну, либо перейдут в другую сферу деятельности. Наконец – если разработчик ПО в среднем получает доходов больше, чем обычный гражданин, то государство найдет способ брать с него больше налогов, какой бы шум не поднимала ИТ-общественность.
Рано или поздно участники процесса начинают это понимать, в результате чего на повестке дня возникает вопрос перехода к диалогу и выработке стратегии сосуществования. Там, где это получается, результаты и суммарные доходы выше. Но тут начинается другая история, которая лучше описывается теорией игр, но от этого проще не становится. Математически это звучит так – в некооперативных играх равновесие может и не существовать, если количество игроков больше двух. На деле означает, что существующее положение дел постоянно будет кого-то не устраивать и этот кто-то будет пытаться его изменить. Придется перейти к кооперативным играм: будут сговоры и коалиции, обманы и новые сговоры. А когда начинаются кооперативные игры, возникают новые сложности. Во-первых, нужно объединить договаривающися субъектов. И если, например, в автомобильной промышленности завод выступает в качестве катализатора объединения работников, собирая их в одном месте, то разработка ПО может вестись распределенно и где угодно и отличается высокой переменчивостью в организационных проявлениях. В Кремниевой долине считается нормой работать в одной компании не более 2-х или 3-х, максимум 5-и лет, затем переходить в другую и т.д. (у нас, впрочем, тоже). При этом вчера знать С++, сегодня – J2EE, завтра – Ruby on Rail. То есть, разработка ПО – не та отрасль, где коллективный разум будет превозмогать поведение усредненного индивидуума: профсоюзов не будет, только форумы на сайте DOU.
Но один плюс во всем вышесказанном есть. Если вчера стала ненужной профессия телеграфиста, сегодня в зоне риска – газетчики и турагенты (во всяком случае, так утверждает «Форбс»), завтра – работники промышленных предприятий и фермеры, затем – экономисты и архитекторы, то представителям сферы информационных технологий открыты все дороги. На следующие сто лет работы хватит.