Перфоманс Лаб

hr
карьера
корпоративная культура
разработка ПО
тестирование
25 июля, 2024

Эффективная коммуникация между разработчиками и тестировщиками. Как её достичь и какие сложности бывают + пути решения каждой сложности

Время чтения: 10 мин.
25 июля, 2024
Автор:
Сергей Ломакин
Каждый год команда «Перфоманс Лаб» исследует российский рынок тестирования. Чтобы подготовить профильный отчет Russia Quality Report, эксперты собирают мнения сотен IT-специалистов из разных компаний и анализируют их. Затем публикуются результаты исследований, основные выводы. Традиционно вопросы взаимодействия в цепочке «разработчик — тестировщик» являются очень горячей темой по итогам всех наших исследований. Поэтому, сегодня обсудим наиболее популярные особенности эффективной коммуникации между теми, кто делает софт, и теми, кто проверяет его на прочность. «Перфоманс Лаб» поделится своими инсайтами.

Разная специфика работы, разная специальность

Начнем с того, что разработчики и тестировщики — два совершенно разных племени, живущих в одном межгалактическом космическом корабле под названием «Проект». Разрабы — беспощадные космические волки, чья цель закинуть в продакшен как можно больше фич за минимальное время. Тестеры же с бдительные сторожа, охраняющие качество продукта от любых посягательств. Но истинная причина проблемы совсем в другом: менеджмент в интересах бизнеса продавливает разработку делать быстрее и больше. Как результат страдает качество кода на выходе, а тут уже тестировщики потирают руки, не упустив возможности поиронизировать над коллегами.

Естественно, между этими двумя лагерями часто возникают трения. 

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

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

Психологический аспект

Разработчики действительно «созидают», вкладывая свои знания, опыт и творческий подход в создание продукта. Это естественно приводит к эмоциональной привязанности к результатам своего труда. Тестировщики, в свою очередь, выполняют критически важную роль «стражей качества», что может восприниматься как критика или недоверие к работе разработчиков.

Разница в целях

Цель разработчика — создать функционирующий продукт в рамках заданных сроков и требований. Цель тестировщика — обеспечить качество продукта путем выявления потенциальных проблем. Эти цели могут казаться противоречащими друг другу, хотя на самом деле они направлены на общий результат — качественный продукт.

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

Разработчики часто мыслят в терминах «как это должно работать», в то время как тестировщики фокусируются на «как это может не работать». Эта разница в подходах может приводить к недопониманию и конфликтам.

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

Проблемные зоны: проверьте 7 причин

Какие же именно сложности могут возникать между разрабами и тестерами? Сейчас узнаем.

01

Различия рабочих словарей

Особенно актуально для команд, которые общаются на разных языках. Ну и конечно — количество сленговых выражений, акронимов и сокращений в нашей индустрии просто запредельное. Зачастую стороны буквально не могут понять друг друга. Допустим, тестировщик говорит про инцидент, выявленные в ходе root cause analysis. А разработчик — просто его не понимает.

Решение: устраивать регулярные мозговые штурмы согласования используемых терминов. Выпустить внутренний глоссарий для новичков.

02

Токсичная корпоративная культура

Во многих компаниях действительно существует негласная иерархия, где разработчики воспринимаются как более ценные сотрудники, а тестировщики — как легко заменяемый персонал. Это может проявляться в:
Разнице в зарплатах и бонусах
Неравном распределении ресурсов и внимания руководства
Пренебрежительном отношении к мнению QA-специалистов
Недооценке вклада тестировщиков в успех проекта

Последствия такой культуры:
Снижение мотивации QA-команды
Ухудшение качества продукта из-за недостаточного внимания к тестированию
Высокая текучка кадров в отделе тестирования
Напряженные отношения между отделами

Обратная ситуация: токсичная культура для разработчиков
Хотя реже, но встречаются ситуации, когда корпоративная культура становится токсичной для разработчиков:
Чрезмерный акцент на процессе тестирования в ущерб разработке
Неоправданно жесткие требования к качеству кода, не учитывающие реалии разработки
Использование количества найденных багов как основного KPI для оценки работы QA, что может привести к «охоте за багами» и конфликтам
Недостаточное доверие к компетенции разработчиков, постоянные перепроверки их работы

Последствия:
Демотивация разработчиков
Снижение инновационности и креативности в создании продукта
Замедление процесса разработки
Напряженность в отношениях между отделами

Влияние на межличностные отношения
Токсичная корпоративная культура, независимо от того, направлена ли она против QA или Dev, негативно влияет на межличностные отношения:
Формирование «лагерей» и противостояния между отделами
Сложности в коммуникации и обмене информацией
Недоверие и неуважение к работе коллег
Отсутствие желания сотрудничать и помогать друг другу
Перекладывание ответственности и поиск виноватых вместо решения проблем

Пути решения проблемы
Для создания здоровой корпоративной культуры и улучшения отношений между QA и Dev необходимо:
Признание равной важности обеих ролей в процессе создания качественного продукта
Создание общих целей и KPI для обоих отделов
Внедрение культуры взаимного уважения и сотрудничества
Поощрение кросс-функционального обучения и обмена опытом
Организация совместных мероприятий, тренингов и воркшопов
Внедрение практик Agile и DevOps, где QA и Dev работают в тесной связке
Регулярные ретроспективы для обсуждения и решения возникающих проблем
Создание системы справедливой оценки и вознаграждения для обоих отделов

Роль руководства
Ключевую роль в создании здоровой корпоративной культуры играет руководство компании:
Демонстрация уважительного отношения ко всем ролям в процессе разработки
Создание и поддержание атмосферы открытости и сотрудничества
Справедливое распределение ресурсов и внимания
Поощрение инициатив по улучшению взаимодействия между отделами
Своевременное реагирование на признаки токсичности в культуре компании
03

Психологические различия

Теория уязвимости гордости творца
Эта теория основывается на идее, что создание чего-либо, в том числе программного кода, является актом творчества. Разработчики вкладывают в свою работу не только профессиональные навыки, но и часть своей личности. Это приводит к нескольким важным последствиям:
01

Эмоциональная привязанность к коду

Разработчики часто воспринимают свой код как продолжение себя, что делает их особенно чувствительными к критике.
02

Страх несовершенств

Многие разработчики стремятся к идеалу в своей работе, и обнаружение ошибок может восприниматься как личная неудача.
03

Защитная реакция

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

Сложность принятия критики

Из-за глубокой личной вовлеченности в процесс создания кода, разработчикам может быть сложно отделить критику их работы от критики их самих как профессионалов.

Пути улучшения коммуникации
01

Развитие эмпатии

Обе стороны должны стремиться понять эмоциональное состояние и мотивацию друг друга.
02

Поощрение открытого диалога

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

Работа над принятием критики

Разработчикам полезно развивать навыки принятия конструктивной критики, воспринимая ее как возможность для улучшения, а не как личное оскорбление. Важно формирование культуры, где ошибки воспринимаются как часть процесса обучения, а не как провал.
04

Обучение конструктивной обратной связи

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

Плохое понимание общего процесса и зависимостей друг от друга

Когда стороны плохо понимают восприятие, мотивацию друг друга, конструктивный диалог становится трудноосуществим. Пример: тестировщик объясняет джуну явление severity в тестировании, говорит о необходимости учёта контекста при определении серьёзности. Но разработчик просто не понимает о чем идет речь и зачем вообще дефекту присваивать какие-то приоритеты.

Часто коллеги не следуют общему процессу, вызывая трения. Просто если есть договоренности на проекте использовать Severity у дефектов, то ни для кого это не должно быть сюрпризом. И каждый должен уметь трактовать и использовать этот термин уместно.
Решение: вводить кросс-функциональное обучение, обмен опытом, брать документацией на committed code. Способов очень много. И можно подобрать то, что платит в вашей, индивидуальной ситуации.
05

Нехватка времени и ресурсов

При вечном дефиците дедлайнов, людей, бюджетов, именно коммуникации зачастую становятся первой жертвой.
Решение: изначально закладывать в плановые графики время на полноценную коммуникацию, выстраивание процессов. Бить колокол перед начальством при дефиците!
06

Удаленная работа. Распределенные команды

Когда люди физически разделены, взаимодействие становится куда менее эффективным, не таким продуктивным.
Решение: включать современные инструменты коммуникации. Для постоянного присутствия на связи пробовать наиболее подходящие инструменты (Zoom, Slack, Notion). И вводить традицию физических встреч раз пару раз в неделю, хотя бы.

Как найти компромисс: топ-9 самых важных факторов

01

Различия рабочих словарей

Разрабы и тестеры — две стороны одной медали, и успех проекта напрямую зависит от слаженной работы команды. Никто не должен смотреть на другого свысока или подшучивать над его профессиональными качествами.
02

Четкие процессы

Да, нужно прописать чёткие процессы. Должны быть установлены единые правила работы: как происходит репорт багов, по какому графику деплоится новый функционал, каковы приоритеты исправлений в разные промежутки времени и т.д. Без этих рельсов поезд точно сойдёт с рельсов даже раньше, чем удастся произнести слово «контейнеризация»! На каждом проекте должны быть выработаны четкие процессы взаимодействия между разрабами и тестерами. 
03

Своевременный обмен информацией

Это критически важно! Разрабы должны сразу ставить тестеров в известность о новых фичах, всех важных предстоящих изменениях. Тестеры, в свою очередь, должны незамедлительно репортить все найденные баги. 
04

Общий профессиональный язык

Важно выковать общий профессиональный язык. Как уже упоминали ранее, разрабы и тестеры зачастую говорят на разных «диалектах», используя разный словарный запас. Поэтому ещё раз проговорим важнейшее правило: в самом старте проекта нужно согласовать общие термины, сокращения, все условные обозначения. Это позволит избежать кучи пикселей забагованного кода недопониманий в будущем. Используйте общепринятые термины, избегайте излишних жаргонизмов, понятных только вашему племени. Это сэкономит кучу времени! И нервов.
05

Регулярные встречи

Регулярные полноформатные митинги. И разрабам, и тестерам нужна площадка для того, чтобы держать всех в курсе происходящего. Обсуждать прогресс, возникающие проблемы, челленджи, предстоящие релизы и фичи. Максимальная прозрачность!  Очень полезно проводить общие митинги разрабов и тестеров, где обсуждаются текущие проблемы, достижения, планы на будущее. Это помогает добиться лучшего взаимопонимания внутри команд.
06

Обучение на примерах

Тестеры могут показывать разрабам реальные юзер-сценарии, позволяющие вжиться в шкуру конечного пользователя. Разрабы же могут на конкретных примерах объяснить технические решения и ограничения. Вот так просто и такой подход действительно сэкономить ценнейшие ресурсы (в первую очередь — время).
07

Личные связи. Формальная коммуникация

Но еще лучше поддерживать дружеские, неформальные отношения в команде. Вместе пейте пиво после релизов, обсуждайте IT-мемы, короче — держите своих ежиков колючками внутрь! Конечно такие коммуникации должны быть приемлемыми и желанными с обеих сторон.
08

Ходить на чужую территорию

Ходить друг к другу в «гнездо». Тестерам полезно регулярно наведываться в закрома разработчиков и смотреть на процесс создания нового кода буквально изнутри. Разрабам, в свою очередь, стоит наблюдать за live-сессиями ручного тестирования, чтобы лучше понимать поведение юзеров. Или начать самим практиковать Test Driven Development, чтобы лучше понимать мышление тестировщика.
09

Парные ревью

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

Послесловие

В идеале разрабы и тестеры должны стать одним большим счастливым семейством, где каждый выполняет свою роль, но все работают на общую цель. Если вы сможете это сделать — ваш продукт будет пережевывать конкурентов на завтрак, сэр! Автор этой статьи надеется: теперь вы точно понимаете важность эффективной коммуникации в цепочке разработчик-тестировщик. Применяйте советы на практике, разговаривайте на одном языке и помните: только вместе мы — сила!

Практические онлайн-курсы для быстрого старта в IT