Записи с метками процесс
А за процессы у нас отвечает… Маша
3 Август
Встречал ситуации, когда компании или уже внедрили некоторую систему управления качеством, то ли на основе ISO или CMMI, то ли доморощенную, то ли пытаются внедрить, и при этом практически всегда присутствует одно из заблуждений.
Прежде чем перейдем к собственно заблуждению, пару слов о том, что такое система управления качеством и почему рано или поздно ее нужно вводить. Это формализованное описание процессов работы в компании. Состав и количество описываемых процессов и сопутствующих шаблонов, инструкций, и т.п. может быть самым разным. Например: а) – процессы разработки софта – как мы планируем, бизнес_анализируем, кодируем, тестируем, инспектируем документы и код, управляемся с рисками и т.п.; б) – так называемые поддерживающие процессы – как работает ИТ служба (админы), как происходит ориентация нового сотрудника, как делаем аттестации персонала и т.п.
Вводить ее нужно потому, что при достижении определенного количества людей в компании (я бы начал с 20-30 и больше) начинается разброд, каждый работает как считает нужным, результаты работы соответственно получаются разными, да и вообще наступает ощущение всеобщего бардака от чего страдает и бизнес и мотивация сотрудников.
Заблуждение же заключается в том, что если назначить кого-то «ответственного за процесс», то все будет пучком. Очень часто этим кем-то назначается, простите за прямоту, – дешевый и малонужный ресурс, да-да именно «ресурс» (наречем ресурса – Маша), а не человек и специалист. И тут руководство компании радуется, что удалось-таки порешить этот процессный подход ДЕШЕВО, а сотрудники искоса смотрят на Машу и свое руководство, и намереваются это все… игнорировать. Хотя в последнее время намечаются сдвиги в правильную сторону, и это радует.
Теперь немного о том, что такое формализованное описание процесса. Это ни в коем случае многостраничный труд, от которого засыпаешь на второй странице. Это максимально возможно короткий, лучше с картинками и диаграммами документ, без лишних фантазий, который хранится в доступном всем месте. Место – корпоративный портал, доска с пришпиленными документами, рабочий стол и т.п. Если короткого описания начинает не хватать по какой-то причине – постепенно дополняйте его.
А еще процесс – это просто-напросто описание того, как нужно делать те или иные инженерные и управленческие практики. Ведь ни у кого же, надеюсь, не возникает сомнения, что нужно делать, например, инспекцию кода (code review). С меньшей надеждой, но все же осмелюсь утверждать, что также не возникает сомнений в необходимости управления рисками, или же карьерного развития персонала.
Теперь давайте спросим себя:
- Действительно ли Маша компетентна во всех инженерных и управленческих практиках, чтобы их формализовывать, а еще и увязывать между собой?
- Понимаем ли мы (объяснили ли нам) что такое процессный подход, зачем он нам тут нужен, зачем нам Маша, и сколько это займет времени (денег)?
Прежде чем читать дальше, давайте возьмем минуту (нет, не молчания), чтобы хорошо вдуматься в эти вопросы…
…
…
Ок, что же получается по первому вопросу. А то, что никакая Маша, будь она даже семнадцати пядей во лбу не сможет быть компетентной во всех инженерных и управленческих практиках. Отсюда напрашивается вывод, что душа (не голова) должна болеть за правильные процессы именно у специалистов, делающих те или иные практики. Например: а) – у менеджеров проектов за то, как правильно делать управленческие практики и как их описать в процессах; б) – у тестировщиков за процессы тестирования и т.д. Физически это выливается в необходимость создания так называемых инженерных групп, или, по научному – Engineering Process Group. Но, важно чтобы люди там были как минимум мотивированные. Достаточно пары человек в каждой специальности, чтобы довольно быстро и качественно формализовать процессы, обучить остальных и собственно внедрить их.
Что же касается второго вопроса, то тут требуется две вещи:
- Пресловутая поддержка руководства, которая выражается не только в указании – «делайте». Но и в формальном выделении времени и даже денег на то, чтобы обучить инженерные группы процессному подходу или какой-либо системе управления качеством, а также обеспечить наличие достаточного времени у них сделать процессную работу. Тут нужно принять тот факт, что или понадобится договариваться с заказчиками о меньшей отдаче, или каким-то другим способом обеспечить время на это. Хочу заметить, что первичное описание процессов – это врЕменная нагрузка, которая действительно требует формального выделения времени, на дальнейшие улучшения процессов много времени скорее всего не потребуется. По опыту, на первичное описание процессов нужно 10-20% занятости у представителей инженерных групп. Как долго? – это уже зависит от того, что вы хотите построить.
- Маша все равно нужна, но не «дешевый и малонужный ресурс», иначе ничего толком не получится, а если получится, то будет долго, болезненно, и дорого. Нужен или человек внутри компании с достаточно высокими полномочиями и профессиональными знаниями как в процессном подходе, так и в разнообразных системах управления качеством. Или же нужен квалифицированный внешний консультант, но только в связке с «человеком внутри с достаточно высокими полномочиями и профессиональными знаниями». И консультант ни в коем случае не должен делать работу по формализации процессов
, это должны сделать инженерные группы.
И последняя мысль – выбор процессов, подлежащих формализации и внедрению – это наш с вами здравый смысл (или необходимость при сертификациях). Ничего лишнего делать не нужно, только то, что действительно нужно сейчас, или же понадобиться в ближайшем будущем.
Оригинал статьи здесь
Кому же нужны метрики?
24 Июль
Проведя много тренингов и семинаров по измерениям в разработке ПО сделал некоторые наблюдения. Наблюдения связаны с реакцией слушателей на излагаемый материал. Причем реакции разнятся – от полного безразличия до восторга. Ниже попытаюсь порассуждать, кому же и когда метрики таки нужны, а кому еще рановато о них думать. Надеюсь мои рассуждения будут полезны еще и в преддверии запланированного тренинга по метрикам.
Уважаемые слушатели прошедших тренингов, если вы это читаете, то примите глубокое уважение и благодарность с моей стороны. Без вас я бы не смог совершенствовать материалы, да и эта статья не появилась бы.
Попробую категоризировать реакции слушателей и собственно проанализировать, почему они именно такие. Причем в определенную категорию попадали как отдельные слушатели из какой-то группы, так и почти целиком вся группа.
- Безразличие, или мне(нам) это не надо, и вообще о чем это. Встречается там, где и так все нормально, т.е. заказчик и руководство довольны (или думают что все хорошо
, и поэтому довольны), существенных проблем нет, или к ним относятся очень снисходительно. Хорошо настроенных рабочих процессов тоже нет, но т.к. компания молодая, или небольшая, то все на виду и все вопросы можно преспокойно решать ручным управлением. Или же все настолько благоденствуют (я без сарказма, такое тоже бывает), что напрягаться по поводу метрик и не надо. И действительно, зачем (опять же без сарказма
)? Но это обычно долго не длиться, рано или поздно возникают вопросы типа: Почему вы так медленно работаете? Почему у вас столько дефектов? Да у вас же на устранение дефектов уходит больше времени, чем на разработку! Почему вы никогда не можете более-менее точно спрогнозировать, когда же вы закончите? И тому подобное. А возразить-то особо нечего, т.к. непонятно как это все объяснить. - Мягкий отпор, или мы тут работу работаем, нам не до метрик. Это следующая ступень после первой. Итак, посыпались вопросы, проблемы. Их надо решать, а то заказчик платить перестанет. К сожалению, обычно мы боремся с последствиями, а не с причинами, и в таком состоянии зависаем. И боремся экстенсивными методами, такими как внеурочная работа, выкидывание «ненужных» видов работ (тестирование, ревью кода, специфицирование и т.п.). Просто педалим. Тут действительно не до метрик. Но вот здесь уже 100% нужно задумываться если не о метриках как таковых, то о базовых шагах по решению проблем. Рецепт прост как тот факт, что солнце каждый день всходит и заходит (исключая полярные дни и ночи J). И по счастливой случайности он совпадает с основными условиями внедрения метрик. А именно, для наведения порядка нужны 3 вещи:
- Процессы. Они вообще-то должны быть, формализованные в удобном для использования виде. Повторяемые, независимо от того, кто делает. Взаимосвязанные друг с другом, например, на выходе кодирования должен быть чистый работающий код, который расположен в оговоренном месте, снабженный релизной запиской, и обо всем этом должны узнать тестировщики. Соответственно, у тестировщиков должно быть понимание как этот код запустить, по отношению к какой версии требований тестировать и т.п. Видите, сразу идет связка таких инженерных практик и специальностей как бизнес анализ, кодирование, ревью кода, юнит тесты, тестирование, создание тестовой документации, и т.п.
- Инструментарий. Тут все просто, это поддерживающие вашу работу таск-тайм-баг трекеры и прочий автоматизирующий инструментарий. При правильной настройке полей и workflow данные собираются и отображаются без особых усилий.
- Люди. Должны быть достаточно профессиональны, чтобы в правильном порядке и виде использовать инженерные и управленческие практики, подточить их под нужды проекта. А также выбрать и настроить инструментарий, или хотя бы грамотно использовать существующий. При определенной инициативе можно переходить к метрикам, т.е. к следующему уровню.
- Осторожная заинтересованность, или вот ведь как еще можно делать. Тут, и в следующих уровнях работать со слушателями одно удовольствие, т.к. мы настраиваемся на одну волну, и в процессе тренинга приходим к решению конкретных задач слушателей. Пусть и не сразу речь заходит о метриках, но вырисовываются причины проблем. Чаще всего ими бывают или ненастроенные процессы, или инструментарий, или просто не хватает подготовки у людей в области процессов, измерений и улучшений.
- Одобрение и продуктивное обсуждение. Вот тут уже хорошо чувствуется профессиональная зрелость слушателей. Или же явно видно, что есть какие-то проблемы, для решения которых недостаточно просто капать на руководство, заказчика или кого-то еще. А требуются именно цифры и факты, на основании которых могут приниматься качественные управленческие решения. Т.е. тренинг является именно тем катализатором, который побуждает к внедрению измерений и, как следствие количественному управлению. Так, в одном из случаев, элементарный сбор статистики о причинах возникновения дефектов (defect origin), побудил к совершенствованию работы именно проблемного подразделения (наконец-то), и отставил претензии к подразделению-пользователю этих проблем.
- Полная поддержка и обмен опытом по внедрению измерений. В этом случае слушатели или уже внедрили и пользуются метриками или тут же на тренинге обсуждаем, как именно улучшить уже работающую систему измерений. В этом случае идет продуктивный обмен опытом использования метрик. Люди убеждаются на опыте коллег и материала, что идут в правильном направлении. И мне тоже практически всегда есть чему поучиться у слушателей такого уровня.
Все вышеперечисленные категории ни в коем случае не есть сугубо негативным или позитивным явлением, просто каждый человек или компания находится на определенном уровне развития или в определенных условиях, что опять же не есть хорошо или плохо.
Ах да, зачем же нам вообще нужны метрики? А чтобы принимать качественные управленческие решения и разговаривать с заказчиками и руководством на языке цифр и фактов, а не на языке ощущений своего живота или другой части тела.
Оригинал статьи здесь.
Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!
Старт проекта. Как это делать?
20 Март
Хочу предложить вашему вниманию серию статей «Старт проекта», еще это называют инициирование проекта. Инициирование проекта – переходной процесс между «продажниками» и исполнителями, который зачастую оказывается либо «ничейным» либо недостаточно качественно сделанным. Что уже с самого начала проекта вносит негативные факторы. В этой серии рассмотрим наиболее, с моей точки зрения, важные вопросы, которым далеко не всегда уделяется нужное внимание.
Вопрос. Как это делать? Т.е. Как делать ваш проект? Предположим, что заказчик понимает зачем делать, и что у вас уже есть хотя бы предварительные требования, т.е. что делать с точки зрения результата проекта.
Приведу немного перефразированные случаи из жизни:
- Стартап, заказчик имеет ограниченный бюджет, которого хватит на несколько месяцев, понимает идею продукта и полностью доступен для коммуникаций. Всем ясно, что за этот бюджет скорее всего можно получить только неплохой прототип, судьбу которого далее решает инвестор.
- Переделка довольно сложного бизнес приложения на новые технологии. Никакой документации к существующему приложению нет. Бизнес-область компании-исполнителю незнакома. Во что выльется переделка – изначально сложно даже предположить. Но скорее всего много относительно возможностей заказчика. На стороне заказчика есть специалисты по старым технологиям, которые могут в какой-то мере саботировать проект.
- Поддержка и развитие системы с множеством версий для разных заказчиков. Долгосрочное (годы) сотрудничество, важность накопления знаний внутри команды по предметной области. Наличие другой команды-конкурента, команды могут сравниваться по производительности по количественным показателям. Заказчик диктует свои стандарты кодирования и подход к архитектурным решениям продукта. Довольно большая доля бизнеса для компании-исполнителя.
Как видно, ситуации совершенно разные, и подход – «Как делать» – тоже будет разный. И лучше договориться о нем заранее. На что обратить внимание:
- Необходимость разбить проект на фазы, например: передачи знаний, выяснения требований, прототипа, проектирования, выполнения, внедрения и т.п. Соответственно в каждой фазе будут совершенно разные результаты работы, состав команды, продолжительность, тип контракта, методология.
- Когда необходимо разбивать на фазы? Когда требования неясны, новая и сложная предметная область, новая технология, требуется получить точные оценки и планы работ, внедрение или долгое или отложено во времени, заказчик или исполнитель не готов делать сразу весь проект и т.п.
- Необходимость договориться о процессах работы – это собственно процессы, поддерживающие методологии, стандарты, технологии. Обычно у компании-исполнителя есть определенные внутренние договоренности «как делать» те или иные инженерные и управленческие практики. У заказчика тоже могут быть свои соображения и по поводу процессов, и по поводу методологий, и по поводу инструментария. Сам по себе проект тоже накладывает определенные условия.
- Задача компании-исполнителя, а особенно ответственного менеджера проекта – установить процессы, которые были бы в первую очередь полезны конкретному проекту, учитывая процессные требования как заказчика, так и компании исполнителя.
- Необходимость понять политические факторы проекта. Их может быть великое множество. Давайте посмотрим. Кому проект выгоден, а кому может быть и не выгоден? Даже есть такое понятие «murder board». Невыгоден – пользователям заказчика, работу которых автоматизируют, т.е. вероятны сокращения штата; ит-шникам заказчика, которые «застряли» на устаревших технологиях или дорого обходятся заказчику; представители подразделений и других проектов заказчика, у которых ваш проект «отбирает» финансирование, т.е. те, кто напрямую не заинтересован в проекте. Со стороны компании-исполнителя тоже может быть набор политических факторов, таких как приоритетность заказчика или направления бизнеса среди других; состояние финансовых и договорных отношений; наличие и квалификация специалистов определенного направления и т.п.
- По политическим факторам скорее всего нужно уделить внимание двум аспектам: а) скажем так – психологической готовности их нейтрально воспринимать; б) выбору правильных способов коммуникации и эскалации, причем с уклоном в более формальные методы.
В следующей статье рассмотрим дисциплину Управление Конфигурациями, и почему важно уделить ей внимание на старте проекта.
Оригинал статьи здесь.
Стоимость качества. Часть 3 – Как это посчитать?
30 Январь
Завершая серию статей о стоимости качества подходим к практической части, а именно, как это посчитать? Для того, чтобы были конкретные данные, на основании которых можно было бы принимать какие-либо управленческие решения. Напомню о предыдущих статьях и для начала рекомендую их прочесть: «Стоимость качества. Часть 1 – Что это такое?», «Стоимость качества. Часть 2.1 – Зачем это надо?», «Стоимость качества. Часть 2.2 – Кому это надо?».
Так как сбор и интерпретация данных относится к дисциплине метрик, то здесь стоит обратить внимание на классический треугольник успешности и полезности измерений:
- Люди – должны быть обучены данной дисциплине, по крайней мере понимать зачем все это. И, естественно, должны иметь возможность (санкционированное время, желание, инструментарий и т.п.)
- Процессы – должны быть. Все рабочие процессы, например: как мы готовим тестовую документацию и тестируем, жизненный цикл дефекта, жизненный цикл задач и т.п. должны быть в том или ином виде описаны-оговорены и донесены до исполнителей
- Инструментарий – собственно те технические средства, которые помогают людям делать их процессы – тайм трекеры, баг трекеры, таск трекеры и т.п. Именно они, при корректной интеграции в процессы работы и при соответствующей настройке, позволяют и собирать данные, и обрабатывать, и презентовать.
В этой статье поговорим именно об инструментарии.
Для начала обратимся к такой дисциплине как Scope Management – управление объемом работ по проекту. В первую очередь это правило 100%, т.е. список работ по проекту должен отражать абсолютно ВСЕ работы и им должно быть место в расписании работ, плановые и фактические трудозатраты по ним должны быть оценены и отрапортованы. ВСЕ – в т.ч. инспекции документов, устранение дефектов, совещания, и даже участие в интервью по набору персонала на проект…
Хорошо помогают шаблоны списков работ (WBS – work breakdown structure).
Ключевым моментом является такая декомпозиция списка работ, где были бы выделены отдельные задачи (берем для примера разработчика), и, соответственно временнАя отчетность на:
- Инспекцию спецификаций (COQ)
- Разработку архитектуры
- Юнит тесты (COQ)
- Кодирование
- Инспекцию кода (COQ)
- Устранение дефектов после тестирования (COPQ)
- Разворачивание продукта в тестовом окружении
- Устранение дефектов по гарантийным обязательствам (COPQ)
- Устранение дефектов после инспекции кода (COPQ)
- И т.п.
В скобках указаны интересующие нас категории – COQ, COPQ. На самом деле, отнесение некоторых задач в какую-то категорию – это ваше решение, например, юнит тесты можно отнести и в разработку. Общие же рекомендации что есть что приведены в первой статье «Стоимость качества. Часть 1 – Что это такое?».
Как далеко идти с декомпозицией – решать вам в зависимости от того, что нужно и что вообще имеет смысл. Например, устранение дефектов после тестирования можно отнести как в общую для всех разработчиков задачу «Устранение дефектов», так и разделять, например, по модулям – «Устранение дефектов по модулю №1» и т.д.
Таким образом, если у вас есть такие компоненты:
- Корректная декомпозиция работ
- Таск-тайм трекер, который позволяет отразить и декомпозицию, и отчетность о затраченном времени
- Обучающие меры для сотрудников – как пользоваться таск-тайм трекером
То сбор данных по соответствующим категориям у вас настроен, и что немаловажно, интегрирован в рабочие процессы. И вы легко можете получать информацию о стоимости качества.
Конечно же, возникают некоторые тонкости в организации и процессов работы, и инструментария. Давайте посмотрим на примеры.
Что такое дефект и как его учитывать? Обычно, если тестировщик находит дефект, то он (дефект) попадает в систему управления дефектами как отдельная запись с описанием, серьезностью и другими параметрами. Но ведь дефекты, найденные, например, на инспекции кода, по существу, ничем не отличаются от дефектов, найденных тестировщиком. И они обычно никак не учитываются, в лучшем случае фиксируется время, потраченное на инспекцию кода. Но возникает резонный вопрос – а зачем это надо вообще? Если уж вы решили определять стоимость качества, то нужно, как минимум фиксировать время на инспекцию кода и время на исправление дефектов, найденных при инспекции. Если вам это не нужно – то не делайте, это будет пустая трата времени и раздражающий фактор для сотрудников. Если вы хотите таки фиксировать не только время на инспекцию, то можно осторожно попробовать использовать систему управления дефектами – например на каждый факт инспекции внести одну запись, к которой приложить список дефектов в коде. По крайней мере необходимость исправить код не потеряется и у вас будут данные о результатах инспекции.
Интенсивная работа с требованиями. А что если требования обсуждаются настолько интерактивно между заказчиком, аналитиком, разработчиками, тестировщиками, что четкая разница между формализацией требований, их инспекцией (обсуждениями) и устранением дефектов (рекомендации, выданные при обсуждениях) не видна? Или же не имеет смысла это разделять. Тут, наверное, лучший вариант – без фанатизма, просто отнести такой вариант работы в задачу «Разработка требований», т.е. к COQ или COPQ не относить вообще. Если же такого интерактива нет, а есть четкое разделение на формализацию, инспекции, и исправление дефектов, и, внимание!, вам действительно надо выделять COQ и COPQ, то предлагаю такой же подход, как и в предыдущем примере – с использованием системы управления дефектами.
Завершая цикл хочу сказать, что серьезно «заводиться» со стоимостью качества и метриками стоит лишь в том случае, если у вас есть:
- Великая цель – зачем это делать и кому от этого будет лучше
- Подготовка по теме – как это работает
- Здравый смысл – в разумной реализации Великой цели
Надеюсь, что это было вам полезно.
Оригинал статьи здесь.
Стоимость качества. Часть 1 – Что это такое?
10 Январь
Хочу предложить вашему вниманию несколько статей, посвященных стоимости качества. Эта, первая часть, приводит некоторые базовые положения на эту тему. В остальных же буду приводить свои соображения по поводу практического внедрения и применения.
Давайте подумаем, во что выливается плохое качество продукции, причем, неважно о чем речь, то ли о программном продукте, то ли о производстве автомобилей. И не только плохое качество продукции, но и плохое качество процесса производства продукции.
Давайте на примере. Допустим, разрабатываем какое-нибудь более-менее сложное приложение без достаточного внимания таким практикам как бизнес анализ и проектирование (элементы процесса). Вдобавок к этому имеем некачественный код, и для полного «счастья» не выделяем достаточного времени на тестирование.
В совокупности вся эта «радость» приводит к:
- Внутренним переделкам, устранению дефектов. Плохо
- Внешним претензиям от заказчика, опять же ведущим к переделкам, а то и к штрафным санкциям. Очень плохо
- Потере репутации и бизнес возможностей. Невыносимо плохо
Итак, существуют такие основные понятия:
- Общая стоимость качества (Total Quality Costs – TQC), что включает:
- Стоимость качества (Cost of Quality – COQ)
- Стоимость плохого качества (Cost of Poor Quality – COPQ)
В разных источниках по-разному определяют, что именно относиться к COQ или COPQ (а то и вообще не разделяют), мы же здесь посмотрим на наиболее распространенное распределение. Причем, я не претендую на абсолютную правоту, в вашей практике вы можете захотеть сделать это немного по-другому.
- Стоимость качества (Cost of Quality – COQ)
- Cтоимость превентивных мер (Prevention Costs), например
- Настройка и внедрение процессов (разработки ПО), в организации и/или на проекте
- Обучение процессам, инженерным и управленческим практикам, концепциям качества
- Подбор на этапе инициирования проекта совместимых методологий, технологий, типов контрактов, фаз, которые бы наиболее эффективно достигали бизнес целей проекта/продукта
- Идентификация и внедрение улучшений в организации и/или на проекте
- Планирование качества на проекте – виды работ, направленные на обеспечение качества на проекте
- Стоимость контроля (Appraisal Costs), например
- Инспекции спецификаций, архитектуры продукта
- Инспекции кода
- Разнообразные виды тестирования продукта, как конечного, так и промежуточных результатов
- Приемочное тестирование
- Ассоциированные затраты на разворачивание тестовых сред
- Аудиты процессов, результатов
- Cтоимость превентивных мер (Prevention Costs), например
- Стоимость плохого качества (Cost of Poor Quality – COPQ)
- Стоимость устранения внутренних дефектов (Internal failure costs), например
- Затраты на «багфикс» и переделки кода, документа, архитектуры
- Затраты на непригодные к дальнейшему использованию результаты работы
- Вынужденные ре-тестирование и ре-инспекции
- Стоимость устранения внешних дефектов (External failure costs), например
- То же, что и для внутренних, но обнаруженных заказчиком, плюс
- Обработка претензий заказчика
- Затраты по гарантийным обязательствам
- Контрактные штрафные санкции
- Стоимость непрямых убытков (Indirect poor-quality costs), сложно количественно оценить, но это
- Потеря внешней репутации, потенциально ведущая к сокращению, потере бизнеса
- Потеря внутренней репутации – демотивация, сокращение персонала
- Стоимость устранения внутренних дефектов (Internal failure costs), например
В завершении этой статьи приведу классическую фразу Philip B. Crosby, который внес значительный вклад в практики управления качеством и теорию менеджента:
- «Quality is free. It’s not a gift, but it’s free. The ‘unquality’ things are what cost money.»
Он же ввел принцип «Ноль дефектов, – сделай правильно с первого раза».
Далее, в следующих статьях, постараюсь изложить некоторые дальнейшие соображения по поводу стоимости качества, как минимум видится вот это: а – «Зачем и кому это надо?»; б – «Как это работает?».
Оригинал статьи здесь.









