Программный принцип Питера
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Принцип Software Peter используется в разработке программного обеспечения для описания умирающего проекта, который стал слишком сложным, чтобы его могли понять даже его собственные разработчики.
Это хорошо известно в отрасли [ нужна ссылка ] как молчаливый убийца проектов, но к тому времени, когда появляются симптомы, зачастую уже слишком поздно что-либо с этим делать. [ нужна ссылка ] Хорошие менеджеры могут избежать этой катастрофы, установив четкие методы кодирования, избегая излишне сложного кода и дизайна.
Это имя используется в книге «Часто задаваемые вопросы по C++» (см. ниже) и происходит от принципа Питера — теории о некомпетентности в иерархических организациях.
Причины
[ редактировать ]Потеря концептуальной целостности
[ редактировать ], концептуальная целостность программного обеспечения является мерой того, насколько хорошо оно соответствует единому простому набору принципов проектирования Согласно The Mythical Man Month . [1] Если все сделано правильно, он обеспечивает максимальную функциональность с использованием простейших идиом . Это упрощает использование программного обеспечения, упрощая его создание и изучение. [ нужна ссылка ] .
Концептуальная целостность достигается, когда проект программного обеспечения разрабатывается небольшим количеством согласованных лиц. [ нужна ссылка ] . Чтобы программное обеспечение сохраняло концептуальную целостность, проект должен контролироваться одной небольшой группой людей, которые глубоко понимают код (включая природу взаимодействия всех подпрограмм и переменных). [ нужна ссылка ] .
В проектах без сильной команды по архитектуре программного обеспечения задача проектирования часто [ ласковые слова ] сочетается с задачей реализации и неявно делегируется отдельным разработчикам программного обеспечения. [ нужна ссылка ] . В этих обстоятельствах разработчики с меньшей вероятностью будут жертвовать личными интересами в пользу интересов продукта. [ нужна ссылка ] . Сложность продукта возрастает в результате того, что разработчики добавляют новые дизайны и изменяют предыдущие, чтобы отразить изменения в моде и индивидуальном вкусе. [ нужна ссылка ] .
Некомпетентность программиста
[ редактировать ]хорошие разработчики программного обеспечения понимают важность общения с людьми, а не общения с компьютером По мнению Code Complete, . [2] Исследования показали, что программисты тратят более 50% своего времени на общение с людьми, в то время как само программирование может занимать всего лишь 15–10%, в зависимости от уровня стажа. [3] [4] [5] [6]
Программисты по сопровождению тратят от 50 до 60 процентов своего времени, пытаясь понять код, который они должны поддерживать, а у программы за время существования в среднем будет 10 поколений программистов по сопровождению. [ нужна ссылка ] .
Неопытность программиста
[ редактировать ]Программисты иногда принимают решения, которые работают, но имеют непредвиденные негативные последствия. Наиболее распространенные из этих ошибок каталогизированы и названы запахами в книге «Рефакторинг» . [7] Со временем многие такие варианты реализации ухудшают дизайн программного обеспечения, делая его все более трудным для понимания.
См. также
[ редактировать ]- Антишаблон – распространенный ответ на повторяющуюся проблему, который обычно неэффективен или контрпродуктивен.
- Марш смерти (управление проектами) – термин управления проектами
- Десятое правило Гринспана – афоризм о вычислительной технике
- Управление проектами - практика руководства работой команды для достижения целей и критериев в установленное время.
- Процесс разработки программного обеспечения - Процесс разработки программного обеспечения.
- Обфускация (программное обеспечение) – намеренное создание сложного для понимания кода.
Ссылки
[ редактировать ]- ^ Брукс 2013 .
- ^ МакКоннелл 2004 .
- ^ Салливан 1988 , стр. 2–5.
- ^ Обмен стеками на рабочем месте 2022 .
- ^ Роденас 2022 .
- ^ Граммы 2019 .
- ^ Фаулер и Бек 2013 .
Литература
[ редактировать ]- Брукс, Фредерик П. (2013). Мифический человеко-месяц: очерки по разработке программного обеспечения (Юбилей с 4 новыми главами, 39-е печатное изд.). Бостон, Массачусетс: Аддисон-Уэсли. ISBN 9780201835953 .
- Клайн, Маршалл П.; Ломоу, Грег А.; Жиру, Майк (2010). Часто задаваемые вопросы по C++ (2-е изд.). Ридинг, Массачусетс: Аддисон-Уэсли. ISBN 0-201-30983-1 .
- Фаулер, Мартин ; Бек, Кент (2013). Рефакторинг: улучшение дизайна существующего кода (28-е печатное изд.). Бостон: Аддисон-Уэсли. ISBN 0201485672 .
- Грэмс, Крис (15 октября 2019 г.). «Сколько времени разработчики тратят на написание кода?» . Новый стек . Проверено 5 декабря 2023 г.
- МакКоннелл, Стив (2004). Код завершен (2-е изд.). Редмонд, Вашингтон: Microsoft Press. ISBN 0735619670 .
- Роденас, Дэвид (21 октября 2022 г.). «Разработчики тратят менее 10% времени на кодирование» . Середина . Проверено 5 декабря 2023 г.
- Салливан, СЛ (1988). «Сколько времени специалисты по программному обеспечению тратят на общение?» . Компьютерный персонал ACM SIGCPR . 11 (4): 2–5. дои : 10.1145/54127.54128 . ISSN 0160-2497 .
- «Разработчики программного обеспечения: сколько времени вы на самом деле тратите на написание кода по сравнению с другими задачами на работе?» . Обмен стеками на рабочем месте . 21 марта 2022 г. Проверено 5 декабря 2023 г.