Ковбойское кодирование
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Ковбойское кодирование — это разработка программного обеспечения , при которой программисты имеют автономию в процессе разработки. Это включает в себя контроль графика проекта, языков, алгоритмов, инструментов, фреймворков и стиля кодирования. Как правило, координация с другими разработчиками или заинтересованными сторонами практически отсутствует или практически отсутствует.
Программист-ковбой может быть одиноким разработчиком или частью группы разработчиков, работающих с минимальными процессами и дисциплиной. [1] Обычно это происходит, когда бизнес-пользователи мало участвуют или поддерживается руководством, которое контролирует только аспекты проекта, не связанные с разработкой, такие как общие цели, сроки, объем и визуальные эффекты («что», но не «как»). "). [ нужна ссылка ]
Термин «ковбойское кодирование» обычно воспринимается как уничижительный термин по сравнению с более структурированными методологиями разработки программного обеспечения .
Недостатки [ править ]
В ковбойском программировании отсутствие формальных методологий управления программными проектами может указывать (хотя и не обязательно) на небольшой размер проекта или его экспериментальный характер. [2] Программные проекты с этими атрибутами могут демонстрировать:
Отсутствие структуры выпуска [ править ]
Отсутствие оценки или планирования реализации может привести к задержке реализации проекта. Внезапные сроки или срочные выпуски программного обеспечения могут стимулировать использование «быстрых и грязных» методов, которые потребуют дальнейшего внимания позже. [3]
Неопытные разработчики [ править ]
Ковбойское программирование может быть обычным явлением на уровне любителей или студентов, где разработчики изначально могут быть незнакомы с технологиями, такими как тестирование, контроль версий и/или инструменты сборки, обычно это больше, чем просто базовое кодирование, необходимое для программного проекта.
Это может привести к недооценке времени, необходимого для обучения, что приведет к задержкам в процессе разработки. Неопытность также может привести к игнорированию принятых стандартов , что затруднит чтение исходного кода проекта или вызовет конфликты между семантикой языковых конструкций и результатом их вывода. [4]
требования Неопределенные к дизайну
Специальные программные приложения, даже при использовании проверенного цикла разработки, могут вызывать проблемы с требованиями клиента. Ковбойское кодирование может усугубить эту проблему, поскольку требования не масштабируются в разумные сроки, и может привести к созданию неиспользуемых или непригодных для использования компонентов до завершения проекта. Точно так же проекты с менее осязаемыми клиентами (часто экспериментальные проекты, см. независимую разработку игр ) могут начинаться с кода, а не с формального анализа требований к дизайну. Отсутствие анализа проекта может привести к неправильному или недостаточному выбору технологии, что, возможно, потребует от разработчика портирования или переписывания своего программного обеспечения для завершения проекта.
Незавершенность [ править ]
Многие модели разработки программного обеспечения, такие как экстремальное программирование , используют поэтапный подход, который подчеркивает, что программное обеспечение должно быть готово к выпуску в конце каждой итерации. Неуправляемые проекты могут иметь мало модульных тестов или рабочих итераций, что делает незавершенный проект непригодным для использования. Таким образом, гибкие методологии сравнивают с ковбойским кодированием, но в гибком кодировании есть формальные процессы, процедуры, измерения, управление проектами и другой надзор, в то время как в ковбойском кодировании ничего из этого нет. [5] [6]
Преимущества [ править ]
- Разработчики поддерживают рабочую среду свободной формы, которая может поощрять экспериментирование, обучение и бесплатное распространение результатов.
- Это позволяет разработчикам пересекать архитектурные и/или многоуровневые границы для устранения ограничений и дефектов проекта.
- Поскольку обсуждение архитектур, написание спецификаций и проверка кода отнимают много времени, один разработчик (если его достаточно) вполне может быстрее создать работающее приложение с помощью ковбойского кодирования. Такие задачи, как исследование или создание прототипов, могут не требовать качества кода, обеспечиваемого более сложными методами.
- Поскольку программированием можно заниматься в свободное время разработчика, проект может быть реализован, чего в противном случае не было бы. [7]
См. также [ править ]
- Хакер — субкультура, опирающаяся на творчество отдельных программистов.
- Кодовая обезьяна — уничижительный термин для программистов, которые пишут простой или повторяющийся код.
- Самозанятость
- Разработка инди-игр
- Ковбой § Негативные ассоциации
Ссылки [ править ]
- ^ Скотт, Велкер. «ковбойское кодирование» . поиск качества программного обеспечения . ТехТаржет . Проверено 2 марта 2022 г.
- ^ Хьюз, Боб и Коттерелл, Майк (2006). Управление программными проектами , стр. 283-289. McGraw Hill Education, Беркшир. ISBN 0-07-710989-9
- ^ «В защиту водопада: деконструкция манифеста Agile» (PDF) . Проверено 1 февраля 2016 г.
- ^ «StickyMinds - STAREAST 2000: Исповедь (выздоравливающего) кодирующего ковбоя» . StickyMinds . Проверено 2 февраля 2016 г.
- ^ «Изучение гибкой разработки» . Информационный бюллетень Pragmatic Software .
- ^ «StickyMinds — Не просто ломайте программы. Создавайте программы» . StickyMinds . Проверено 2 февраля 2016 г.
- ^ К, Алекс. «20 процентов времени Google в действии» , Официальный блог Google, 18 мая 2006 г.
Внешние ссылки [ править ]
- Cowboy Coder Определение в Ward's Wiki
- Определение ковбойского кодирования в Ward's Wiki
- «Углубление ковбойского программирования» . Архивировано из оригинала 23 марта 2019 года.