Каково влияние ITIL или CMMI на разработку?
Я прочитал много книг о том, какие методы работают хорошо или нет в разработке программного обеспечения. И я НИКОГДА не слышал о методологиях, таких как ITIL или CMMI, ни в одной веб-трансляции, ни в книге, ни в блогах в области разработки.
Я слышал об этих методологиях в своей школе, и мне кажется, что это бюрократическая практика.
Тем не менее, все книги по разработке, которые я читал, говорят о сотрудничестве или о людях над документацией. (Да, много гибких книг)
Итак, мой вопрос: имеют ли методологии, такие как ITIL или CMMI, какое-то влияние или связь с развитием или повседневной жизнью разработчика? И есть ли у вас отличные книги или блоги, в которых рассказывается о некоторых хороших идеях в этих методологиях, которые я могу использовать в команде разработчиков?
2 ответа
ITIL больше сосредоточен на инфраструктуре и стороне поддержки, а не на разработке, поэтому обсуждение ITIL, вероятно, более уместно для ориентированной на ИТ версии Stackru, которая предположительно находится в разработке. Кроме того, я возражаю против того, чтобы называть этот сайт "ИТ", ориентированным на ИТ, так как ИТ охватывает инфраструктуру, поддержку и развитие на большинстве предприятий... вероятно, значительный процент пользователей Stackru являются разработчиками в ИТ-отделах.
Я работал с CMMI и Team Software Process (TSP), как продуктами Уоттса Хамфри, так и Института разработки программного обеспечения Карнеги-Меллона. Если вы привержены постоянному улучшению и считаете, что измерение лежит в основе любого постоянного улучшения, то вы найдете значение в CMMI.
Очень легко сделать CMMI (и TSP) неправильно или таким способом, который отталкивает разработчиков и, в конечном итоге, превращается в оформление витрин или что-то, что хорошо смотрится на куче сертификатов. Посмотрите на разработчиков в Индии... они чудесным образом все уровень 5 CMMI. Они не говорят вам, что в их организации почти всегда был один небольшой проект или команда, которая усердно работала, чтобы получить сертификацию, но повторяемые практики просто не существует для 95% их организации.
Сосредоточение внимания на отслеживании времени (штамповка часов), отслеживании дефектов (квоты на ошибки), строках кода (множество способов "игры", если вы так склонны) и обеспечении повторяемости вашего процесса (чтобы разработчик чувствовал себя как винтик без свобода для инноваций) отключить многих разработчиков. <- обратите внимание на заштрихованные контраргументы в скобках.
Факт остается фактом: 90% разработчиков (немногие из которых читают Stackru или какие-либо технические блоги / веб-сайты) стреляют из бедра и испытывают острый недостаток в самосознании того, где находятся их возможности для улучшения. Для них строгость процесса и возможность постепенного улучшения качества за счет самосознания, которому способствуют повторения и измерения, являются ценными компонентами CMMI.
Если все сделано правильно, вы получите те же преимущества от Agile-методов, как Scrum, где опять-таки основное внимание уделяется повторяющимся итерациям, обучению на каждой итерации и улучшению / сужению цели. Требуется много зрелости и опыта, чтобы руководить командой в принятии гибких методов или CMMI и получать от них полную отдачу.
Agile сексуальна, а CMMI настолько далека от сексуальности, насколько это возможно, поэтому о ней не так много слышат.
Agile усыновление имеет тенденцию быть восходящим: технические специалисты натыкаются на него и рекомендуют его руководству.
ITIL / CMMI имеет тенденцию быть нисходящим: руководство натыкается на него и толкает его к техническим специалистам.
Это не делает одно хорошим, а другое плохим; в основном это влияет на язык, используемый для описания каждого подхода. И есть множество исключений - люди с опытом работы в окопах, которые хорошо умеют применять CMMI, и менеджеры, которые работают гибко.
Google для "гибкой CMMI", и вы получите много хитов. Я предпочитаю не рекомендовать один конкретный, потому что это постоянные дебаты (то есть некоторые из этих людей просто неправы).
На мой взгляд, понятие процесса, безусловно, является полезной идеей при анализе повседневной работы по разработке программного обеспечения. Идея, что есть некоторые повторяющиеся действия, и что эти действия часто организованы в схожих последовательностях, является хорошей отправной точкой для того, чтобы задавать вопросы, которые ведут к улучшению. Вы также можете получить некоторый пробег, спросив, что можно повторить и при каких условиях действия можно назвать управляемыми.
Ошибка и перегибы начинаются, когда возникает волшебное мышление: "Если мы просто опишем (на бумаге) Идеальный процесс и точно запишем его, люди последуют за ним, и мы получим идеальное программное обеспечение". Это не работает таким образом.