СИБИТ, управление качеством программного продукта (кейс)
Узнать стоимость этой работы
13.03.2019, 11:13

Кейс: «Война миров: программисты и тестировщики. А как же качество?»

«Вы не можете создавать хорошие программы без хорошей команды, но большинство софтверных команд ведут себя как проблемная семья»

Jim McCarthy

1. Ситуация

Борис работает ведущим IT-менеджером компании по разработке программных продуктов. Вот его рассказ: «Когда-то я был тестировщиком и в те далекие времена порой был крайне недоволен программистами: вечные сомнительные доводы: «Это не баг, это фича» или «Если это и баг, то незначительный, пусть остается!». Да как же остается, если система колом встает!? Потом я стал программистом. И всё изменилось – меня начали жутко бесить бесконечные возвраты на доработку: То им это не нравится, то тут не работает! Да зачем было вообще в этом окне контекстное меню вызывать и вставлять нечитабельные символы!? Как они вообще до этого додумались!? Бред же, в боевом режиме так ни один пользователь не сделает! Не буду править, пусть остается! В общем, классика – вражда программистов и тестировщиков. А потом я стал ITменеджером. И понял, что вражда эта губительна для общего дела. К счастью, я хорошо помнил себя и программистом и тестировщиком, что и помогло мне осознать истинную суть проблемы и изменить ситуацию».

Процесс

Пять лет назад в компании был очень простой и понятный процесс разработки:

Задачи --> Программирование <--> Тестирование --> Релиз (результат)

Причем: тестировщики узнавали о задачах только в момент передачи их в тестирование, т.е. о начале разработки новой задачи они уведомлений не получали; программисты не дожидались завершения тестирования задач и приступали к новым задачам немедленно. Все считали подобную ситуацию примером идеальной инкапсуляции! У программистов на вход: новые задачи и возвраты из тестирования, на выход: передача задач в тестирование. У тестировщиков: на входзадачи от программистов, на выходвозврат задач программистам и официальный выпуск версии. Собственно, процесс хорош– каждый живет в своем мире и занимается любимым делом!

Но ведь у этого процесса есть вполне конкретная конечная цель – выпуск качественного ПО с нужным функционалом в срок. В этот момент и начинаются проблемы: приходит менеджер и начинает напоминать о конечной цели.

Типичная ситуация: Менеджер приходит к программистам и спрашивает «когда?», а они отвечают «не знаем, мы все сделали, спросите у тестировщиков».Менеджер идет к тестировщикам с тем же вопросом «когда?», а они ему отвечают: «Разработчики только утром выдали сборку, мы только сейчас приступили к тестированию, и точно будет возврат – тут багов уже много вылезло, поэтому мы не знаем когда будет выпуск – спросите у программистов». И менеджер начинает ходить по кругу туда-сюда, а релиза все нет и нет. В итоге, терпение менеджера кончается, он собирает программистов и тестировщиков вместе и пытается как-то решить вопрос. Собственно, все решения сводятся к выработке правил взаимодействия между программистами и тестировщиками. И все дальнейшие усилия менеджера направлены на контроль за соблюдением этих правил. Вот некоторые правила, которые сформировались в отделе спустя несколько месяцев изнурительной работы менеджера:

· Совместное планирование. Версия планируется заранее. На планировании присутствуют и программисты и тестировщики. Благодаря этому, все заранее знают, что им предстоит делать. Например, это позволяет тестировщикам заранее начать составлять планы тестирования и подготавливать необходимое тестовое окружение.

· Маленькие версии. Это попытка сократить разработку, ведь это накладные расходы на актуализацию кода и повторное тестирование. Если делать маленькие версии, то можно работать сразу в основной ветке.

· Ничегонеделанье. Ещё одна попытка сократить разработку. Когда накапливается много задач, и разработка сильно убегает вперед от тестирования, то программистам разрешается просто ничего не делать, чтобы ещё больше не убегать вперед.

· Раннее информирование. Например, тестировщик приступил к тестированию задачи. Задача большая, но он уже сразу нашел дефект. Он сообщает об этом программисту сразу при обнаружении, а не в конце, когда все тестирование завершено. Или наоборот, программист ещё во время разработки сообщает тестировщику о нюансах реализации, чтобы тот заранее подготовил тест-план. Это позволяет развести работу программиста и тестировщика.

Все эти правила на самом деле хоть и помогли улучшить ситуацию, но кардинально её не изменили. Они как будто затыкали по одной маленькой дырочке. Чувствовалось, что есть какое-то другое решение, что что-то упущено из виду. Например, как только менеджер расслаблялся – почти сразу все договоренности между программистами и тестировщиками забывались, и все возвращалось к исходному состоянию.

Более того, взаимоотношения между программистами и тестировщиками не улучшались – как была вражда, так она и осталась.

Осознание

Борис, как ведущий IT-менеджер, много размышлял о причинах происходящего, о поведении людей, об их эмоциях, потребностях и мотивах. А потом вдруг всё стало ясно! Да ведь сама структура такого подхода, когда «одни программируют – другие тестируют» порождает конфликт между программистами и тестировщиками. И вся суть этого конфликта в том, что у них разные цели! У тестировщиков цель «протестировать». У разработчиков цель «разработать», т.е. «передать в тестирование». А цель «выпустить релиз» только у менеджера. И только пока он прикладывает к этому усилия – она достигается. А когда у людей разные цели – им не по пути, они не интересны друг другу. Как их не притягивай, они все равно будут идти своей дорогой, в разные стороны.

Решение

Собственно, решение проблемы и заключается в том, чтобы поставить и перед программистами и перед тестировщиками одну общую цель. Причем цель очевидную – выпуск качественного программного продукта в срок. Ведь не достигая эту цель, локальные цели «разработать» и «протестировать» теряют всякий смысл. Изменить цели оказалось делом не простым. Но поскольку Борис полностью проникся логикой своих мыслей – то был готов сломить любое сопротивление изменениям! Вот основное, что было сделано:

1. Изменена организационная структура отдела. Вместо отделов разработки и тестирования сформированы команды, в которых собраны и программисты и тестировщики.

2. Переезд подразделений. Вновь сформированные команды получили по отдельной комнате. Теперь не было ситуации, когда тестировщики и программисты сидят в отдельных комнатах и живут своей жизнью.

3. Пропаганда. Пришлось сказать немало пламенных речей о том, для чего и почему затеяли реорганизацию. И главное – донести до всех общую цель.

4. Увольнение. Увы, но кто-то не согласился с новыми идеями. Они уступили дорогу тем, кто теперь приносит куда больше пользы.

И все эти усилия того стоили! Эффект оказался просто поразительным! Напряженные отношения между программистами и тестировщиками исчезли, как будто и не было.

· Появилась взаимная поддержка, продукты стали качественнее.

· Программисты стали помогать тестировщикам, указывая на узкие места, которые стоит дополнительно проверить.

· Изменилось общее отношения к обнаруживаемым дефектам. Никто никого не считает виноватым. Даже наоборот, разработчик благодарен тестировщику, что тот помог сделать продукт лучше.

· Все договоренности о взаимодействии программистов и тестировщиков стали выполняться сами собой – потому что все поняли их эффективность.

· В общем, все заработало как часы – регулярные релизы, качественный продукт. На глазах за полгода произошло настоящее преображение!

Вывод

У любого конфликта всегда есть истинная причина. У типичного конфликта между программистами и тестировщиками истинная причина – это разные цели. Стоит поставить перед ними одну общую цель – и все сразу изменится! Программисты и тестировщики станут лучшими друзьями, всегда будут помогать друг другу, а от этого выиграют все – и программисты, и тестировщики, и менеджеры, и продукты, и компания!

2. Проблема указанной ситуации состоит в следующем: какие методы управления качеством программного продукта целесообразно применять в данной ситуации? Не забывайте, что эти методы касаются не только программного продукта, но и людей, разрабатывающих его! Прав ли Борис, применив перечисленные методы? Какие из предложенных методов наиболее эффективны?

3. Ключевое задание.

Рассмотреть представленную ситуацию и разработанные мероприятия по устранению проблем в разработке. Проанализировать возможности на предмет реальности проведения всех намеченных (предложенных Вами) мероприятий. Разработать свои варианты решения проблем и обосновать оптимальный вариант.



Узнать стоимость этой работы



АЛФАВИТНЫЙ УКАЗАТЕЛЬ ПО ВУЗАМ
Найти свою работу на сайте
АНАЛИЗ ХОЗЯЙСТВЕННОЙ ДЕЯТЕЛЬНОСТИ
Курсовые и контрольные работы
БУХГАЛТЕРСКИЙ УЧЕТ, АНАЛИЗ И АУДИТ
Курсовые, контрольные, отчеты по практике
ВЫСШАЯ МАТЕМАТИКА
Контрольные работы
МЕНЕДЖМЕНТ И МАРКЕТИНГ
Курсовые, контрольные, рефераты
МЕТОДЫ ОПТИМАЛЬНЫХ РЕШЕНИЙ, ТЕОРИЯ ИГР
Курсовые, контрольные, рефераты
ПЛАНИРОВАНИЕ И ПРОГНОЗИРОВАНИЕ
Курсовые, контрольные, рефераты
СТАТИСТИКА
Курсовые, контрольные, рефераты, тесты
ТЕОРИЯ ВЕРОЯТНОСТЕЙ И МАТ. СТАТИСТИКА
Контрольные работы
ФИНАНСЫ, ДЕНЕЖНОЕ ОБРАЩЕНИЕ И КРЕДИТ
Курсовые, контрольные, рефераты
ЭКОНОМЕТРИКА
Контрольные и курсовые работы
ЭКОНОМИКА
Курсовые, контрольные, рефераты
ЭКОНОМИКА ПРЕДПРИЯТИЯ, ОТРАСЛИ
Курсовые, контрольные, рефераты
ГУМАНИТАРНЫЕ ДИСЦИПЛИНЫ
Курсовые, контрольные, рефераты, тесты
ДРУГИЕ ЭКОНОМИЧЕСКИЕ ДИСЦИПЛИНЫ
Курсовые, контрольные, рефераты, тесты
ЕСТЕСТВЕННЫЕ ДИСЦИПЛИНЫ
Курсовые, контрольные, рефераты, тесты
ПРАВОВЫЕ ДИСЦИПЛИНЫ
Курсовые, контрольные, рефераты, тесты
ТЕХНИЧЕСКИЕ ДИСЦИПЛИНЫ
Курсовые, контрольные, рефераты, тесты
РАБОТЫ, ВЫПОЛНЕННЫЕ НАШИМИ АВТОРАМИ
Контрольные, курсовые работы
ОНЛАЙН ТЕСТЫ
ВМ, ТВ и МС, статистика, мат. методы, эконометрика