Введение

Инженерный термин для сложного, провального проекта.

Принцип Питера в разработке программного обеспечения используется для описания проекта, находящегося в состоянии упадка, который стал настолько сложным, что его собственные разработчики уже не могут его понять. В индустрии это хорошо известно как "тихий убийца" проектов, но к моменту проявления симптомов часто бывает уже слишком поздно что-либо предпринять. Опытные менеджеры могут предотвратить эту катастрофу, установив чёткие правила кодирования, избегающие излишне сложного кода и архитектуры. Этот термин используется в книге C++ FAQs (см. ниже) и происходит от принципа Питера – теории о некомпетентности в иерархических организациях.

Потеря концептуальной целостности

Согласно книге "The Mythical Man Month", концептуальная целостность программного обеспечения – это мера соответствия единому, простому набору принципов проектирования. При правильной реализации она обеспечивает максимальную функциональность, используя наиболее простые подходы. Это облегчает использование программного обеспечения, упрощая его создание и изучение. Концептуальная целостность достигается, когда проектирование программного обеспечения осуществляется небольшой группой согласованных специалистов. Для поддержания концептуальной целостности дизайн должен контролироваться одной небольшой группой людей, глубоко понимающих код, включая взаимосвязь всех подпрограмм и переменных. В проектах, где отсутствует сильная команда по архитектуре программного обеспечения, задача проектирования часто объединяется с задачей реализации и неявно делегируется отдельным разработчикам. В таких условиях разработчики менее склонны жертвовать личными интересами ради интересов продукта. Сложность продукта возрастает из-за добавления разработчиками новых элементов дизайна и изменения существующих, отражающих текущие тенденции и индивидуальные предпочтения.

Некомпетентность программиста

Согласно книге «Код как искусство», хорошие разработчики программного обеспечения понимают, что общение с людьми важнее, чем общение с компьютером. Исследования показали, что программисты тратят более 50% своего времени на общение, а на непосредственное программирование уходит всего от 10% до 15%, в зависимости от опыта. Программисты, занимающиеся поддержкой и сопровождением, тратят от 50% до 60% своего времени на то, чтобы разобраться в коде, который им предстоит поддерживать, и в течение жизненного цикла программы над ней в среднем работают 10 поколений таких программистов.

Неопытный программист

Программисты порой принимают решения при реализации, которые работают, но приводят к нежелательным негативным последствиям. Наиболее часто встречающиеся из этих ошибок задокументированы и называются "запахами" в книге "Рефакторинг". Со временем множество подобных решений при реализации ухудшают архитектуру программного обеспечения, делая его всё сложнее для понимания.