Рассмотрим, какие же проблемы привели к появлению кризисных явлений в разработке программного обеспечения. Прежде всего, это возрастание сложности программных систем, причем, как сложности технологических, то есть приходится координировать целый ряд программных систем, интегрировать их и на новом уровне объединять, скажем, для поддержки, принятия решений стратегических, топ-менеджементом корпорации о том каким образом развиваться этой корпорации, в какие регионы идти, какую новую продукцию осваивать и т.д. И сложности управленческой, когда возникает необходимость координировать целый ряд различных подразделений, которые ведут работу над программным продуктом. Это тоже достаточно сложно и как увидим впоследствии, корпоративные системы отличаются, как раз высоким уровнем управленческой сложности, то есть зачастую, проблемы в которую упираются разработка программных систем корпоративного типа, носит не число технологический характер, а объясняются во многом человеческим фактором. Кроме того, нужно учитывать, что в кризис существуют жесткие ограничения на ресурсы, как на временные ресурсы, так и конечно, на ресурсы финансовые, на ресурсы людские. Ресурсов очень часто не хватает. Происходит перераспределение, происходит, как внутренняя оптимизация, скажем, людских ресурсов, так и возможно, какие-то перетоки, утечка кадров к соседним компаниям разработчикам и т.д. При этом команда должна тем не менее работать продуктивно, работать предсказуемо и в должные сроки обеспечивать продукт должного качества. Часто меняются требования. Заказчик может, вдруг, выяснить, что приоритеты в разработки теперь уже иные, требуется система немного другого уровня, немного другого качества или с немного другими функциональными характеристиками. Скажем, если мы разрабатываем интернет-магазин, предположим, оплата кредитными картами для нас в настоящее время не является первым приоритетом и нам необходимо, в первой версии продукции, просто курьерскую доставку с оплатной наличных, организовать. Ничего более сложного нам не нужно. Большое количество участников в корпоративных системах, как со стороны разработчика, так и со стороны заказчика, работают целая команда. Кроме того, надо сказать, у каждой команды есть еще руководство, при этом есть технических руководитель, есть руководитель на уровне менеджмента проектов, есть руководство высшего звена, которое принимает решения, как раз по финансам и по людским ресурсам. Координировать необходимо взаимодействие на уровне всех этих команд. Надо сказать, что программное обеспечение, к сожаление, по сравнению, скажем, с мостами, за частую устаревает более быстрыми темпами. То есть если мосты, которые, скажем, мне приходилось видеть лично, могут работать не одну сотню лет, если они сделаны из крепкого мореного дуба, в общем, ничего ужасного с ними не происходит, они практически не требуют сопровождения на протяжении десятков, а иногда и сотен лет. То с программным обеспечением в силу его морального устаревания. Надо сказать, что программное обеспечение приходит во все новые отрасли народного хозяйства, и здесь возникают специфические проблемы, кажем, связанные с производством высоко критичных систем, которые обслуживают, предположим, атомные электростанции, которые обслуживают предприятия оборонного комплекса, которые обслуживают предприятия сферы здравоохранения и т.д. Ну и конечно высокая конкуренция. То есть большое количество стартапов, большое количество проектов, нацелено на самом деле на одну и ту же нишу рынка. Вспомним мобильное приложение и бум мобильных приложений, которые мы видим сейчас. Все это приводит к тому, что с разных сторон возникают существенные ограничения на те ресурсы, которые возникают не в сбалансированном виде из-за этих ограничений и это приводит к кризису.