Почему опытные тестировщики перестают жалеть разработчиков и как это делает их сильнее
Когда я только начинал в QA, я реально жалел разработчиков. «Они же пашут, сроки горят, продукт сложный, а я тут ещё баги нахожу — ну как они всё успевают?» Знакомо, наверное.
Проходит полгода-год. И замечаешь одну и ту же картину: один и тот же разраб раз за разом делает одинаковые ошибки, требования не читает, граничные случаи не проверяет, а потом искренне удивляется багу. Моя жалость сначала превратилась в раздражение. А потом — в холодное понимание: жалость просто убивает качество.
Вот что происходит, когда перестаёшь жалеть разработчиков и начинаешь относиться к ним как к равным профессионалам.
Первое. Уходит синдром спасателя. Раньше я мог промолчать, если видел, что задача недоделана, но дедлайн уже завтра. «Ну, старался человек, пусть потом патчем поправит». И что? Баг уходит в прод, мы получаем инцидент, страдает репутация QA. Когда я перестал жалеть, я начал говорить прямо: «Вот ошибка. Исправляй сейчас, иначе не приму». Разработчик злится? Бывает. Но продакшн становится стабильнее.
Второе. Развивается профессиональная жёсткость. Жалость — это эмоция. А QA — про факты. Когда жалеешь, начинаешь придумывать оправдания за другого. Опытный тестировщик вместо этого анализирует: «Почему баг вообще появился? Что в процессе пошло не так?» Так разговор переходит из плоскости «кто виноват» в «как исправить процесс». И вот тут ты становишься сильнее — ты не просто ищешь баги, а строишь систему, которая их предотвращает.
Третье. Перестаёшь бояться конфликтов. Многие джуны боятся обидеть разработчика — пишут баг-репорты в стиле «возможно, тут есть небольшая неточность». Опытный QA пишет: «Ожидаемое: А. Фактическое: Б. Приоритет — Critical». Без эмоций и извинений. И если разработчик начинает ныть: «Это не баг, это фича», ты спокойно открываешь требования и показываешь разницу. Жалость уходит, уважение приходит.
Типичная ошибка: путать профессионализм с грубостью. Перестать жалеть — не значит стать мудаком. Это значит уважать чужое и своё время.
Если я пропускаю баг из жалости, я делаю хуже и разработчику (ему потом фиксить инцидент), и себе (меня не повышают за пропущенные баги), и продукту. Жёсткость и уважение — не антагонисты.
Как это делает тебя сильнее. Ты перестаёшь быть мальчиком или девочкой для битья — тебя начинают слушать. Ты учишься отстаивать свою экспертную позицию, а это ключевой навык для middle и senior. Ты начинаешь видеть системные проблемы, а не только единичные баги. И перестаёшь выгорать от чувства вины за «лишние» баги.
И да, я всё ещё могу пожалеть разработчика, если вижу, что он реально выложился, но система или требования подвели. Но теперь это осознанный выбор, а не привычка.
Жалость — это скрытая форма неуважения к профессионализму коллеги. Когда перестаёшь жалеть, начинаешь требовать. И команда от этого только сильнее.
Как перестать спорить с разработчиками и не тратить нервы на пустые обсуждения багов
Каждый тестировщик через это проходил. Описываешь баг: скриншоты, логи, чёткие шаги. А в ответ: "у меня работает" или "это логика приложения". Я часто вижу такие ситуации, и грань между нормальной обратной связью и пустыми отговорками тут тонкая, но важная.
Разработчики тоже люди и защищают свою работу. Но для QA ключевой навык — не просто найти баг, а донести его так, чтобы захотелось чинить. По опыту, полезное обсуждение заканчивается там, где начинаются споры ради споров.
Конструктивная обратная связь — это когда разработчик даёт конкретику. Например: "Это известное поведение, в трекере есть баг — вот ссылка". Или: "Не чиним сейчас, потому что в следующем спринте переписываем модуль". Или: "Я проверил, ошибка из-за стороннего сервиса. Давай вместе посмотрим логи". Такая реакция двигает процесс вперёд.
Неконструктивная — это бездоказательные отписки. Меня всегда настораживает: "У меня работает" без уточнения среды или версии. Или "Это не требует исправления" без объяснения причин. Или "Ты не проверял, это по спецификации" — хотя спецификации нет или она противоречит себе. А ещё "Сделай лучше сценарий, я не могу воспроизвести" — если шаги точны, это его головная боль, не ваша.
Как избежать пустых споров. Первое — проверяю себя: баг действительно воспроизводим, описан без субъективщины? Если уверен — стою на своём. Второе — захожу со стороны данных: "Я проверил на трёх окружениях, в логах ошибка X. Давай покажу на созвоне за 5 минут". Третье — не принимаю на свой счёт. Фраза "у меня работает" — не про то, что я плохой тестировщик. Моя задача мягко, но настойчиво потребовать предметный ответ. Четвёртое — если спор в тупике, зову аналитика или техлида.
У меня есть золотая практика: после третьего возражения говорю: "Ок, давай я напишу баг с низким приоритетом и объясню, почему это влияет на пользователя. Если считаешь, что неважно — отклони с комментарием". 9 из 10 разработчиков либо разбираются, либо открывают задачу. Почему? Потому что запись в трекере — публичный след, и они не хотят оставлять его без аргументов.
Конструктивный диалог всегда ведёт к действию или документированию. Неконструктивный — эмоции и пустота. Требуйте либо фикс, либо чёткое обоснование. Тогда нервы целы, а продукт не страдает.
Делитесь в комментариях, как вы выходили из таких споров.
За свой трудовой путь я несколько раз говорил бизнесу «нет». Каждый раз это было неприятно, потому что бизнес приходит к ИТ не за отказами, а за решениями. Но был один случай, когда именно отказ оказался самым выгодным решением для компании.
Близился конец проекта, мы уже практически завершили внедрение нового биллинга. Бюджет был распределен, а команды готовились к запуску. И в этот момент бизнес пришел с новым требованием: «Давайте еще перенесем архивные продукты и исторические данные по ним». Архивные продукты использовались редко, но время от времени сотрудники обращались к ним для разбора спорных ситуаций. Мы вместе с архитекторами и аналитиками оценили объем работ. Оказалось, что типового механизма нет, нужно менять архитектуру. Разрабатывать новые сценарии миграции, тестировать, поддерживать. Когда сложили оценки, получилось около 10 миллионов рублей. После пересчета финансовой модели стало понятно, что дополнительные инвестиции сильно увеличивают срок окупаемости проекта на один год. Проще говоря, компания вкладывала деньги в функциональность, которая не приносила измеримой бизнес-ценности.
Я принял решение отказать бизнесу в новых требованиях и предложил альтернативный вариант – не мигрировать запрошенные данные, а оставить их в legacy биллинге доступными для чтения.
Сидеть и работать в корпорации страшно, жизнь-то мимо проходит. Уходить строить бизнес страшно, а вдруг прогорит. Один из вариантов - разрабатывать свой пет-проект по вечерам. Многие успешные компании, например, Twitter, создавались именно так. Это не значит, что ваш проект обязательно заработает миллиарды, но заработать больше, чем в найме, и получить ценный опыт вполне реально.
Перед началом разработки появляется множество вопросов, например:
– Как выбрать идею для пет-проекта?
– Что нужно знать про маркетинг?
– Как запуститься и довести до первых продаж не имея бюджета на рекламу?
В телеграм-канале Твой пет проект, Михаил Табунов делится своим опытом с разработчиками и менеджерами.
Он рассказывает, где искать идею для нового проекта, что нужно знать о маркетинге, как запустить стартап и привлечь первых 10 клиентов, а также о многих других важных вещах.
Подписывайтесь на Твой пет проект получайте пользу от практиков рынка!
Почему корсет не вышел на сцену: вторая часть истории о докладе «PROvoke» на Analyst Days
Во второй части я рассказываю, что произошло на сцене и после выступления. Мы с Татьяной Маркиной играли роли: я выступал в образе строгого аналитика, она — в образе заказчика. По изначальной задумке, я должен был выйти в корсете, но в последний момент я понял, что этот образ не работает вживую — выглядит неестественно и отвлекает от сути. Корсет так и не появился на сцене, хотя в первой части я упоминал, что мы обсуждали эту идею.
На самой сцене всё прошло гладко: мы синхронно переключались между ролями, публика реагировала живо, особенно на моменты споров. Но главное открытие случилось в кулуарах. После доклада ко мне подошёл один из зрителей и сказал, что раньше боялся спорить с заказчиками, а после нашего выступления понял, что конфликт — это нормально и даже полезно. Этот разговор заставил меня переосмыслить цель публичных выступлений: не просто донести информацию, а дать людям новый взгляд на привычные вещи.
Мы обсуждали, что роль «кнута и пряника» в докладе сработала именно потому, что она была настоящей — мы не играли, а показывали реальный опыт. Я понял, что ценность выступления не в идеальном тексте или корсете, а в честности и готовности показать свои сомнения и споры.
Почему твой ответ на вопрос «Что ты будешь делать, если баг не воспроизводится?» стоит тебе оффера: как перестать давать шаблонные решения и показать зрелость мышления
Вчера на созвоне с коллегой разбирали кейс: кандидат на мидла провалил собеседование на ровном месте. Вопрос классический: «Что будешь делать, если баг не воспроизводится?». Казалось бы, база. Но ответ стоил ему оффера.
Почему? Он выдал шаблон: «Перезалью билд, проверю на другой среде, добавлю логи». Технически верно, но поверхностно. Интервьюер ждал не список действий, а мышление.
Главная ошибка — давать чек-лист. Ты звучишь как исполнитель. Сеньор или лид слышит: «Нет системного подхода, не умеет анализировать корень». Баг, который не воспроизводится — это информационная неопределенность. Твоя задача — снять её, а не бегать с логами.
Как выглядит зрелый ответ.
Сначала я пойму, где искать. Проанализирую: баг стабильный или плавающий? Зависит от данных, времени, состояния системы? Какие шаги пользователя я упускаю? Задаю вопросы, а не прыгаю в дебаг.
Потом соберу контекст малой кровью. Посмотрю пользовательские логи, метрики, скриншоты. Пойму, что уже есть, и только потом решу, нужно ли что-то ещё.
Затем воспроизведу гипотезу. Строю гипотезу о причине и сознательно её проверяю. Если не сработала — строю новую.
И главное: фиксирую, что не удалось воспроизвести, и согласовываю с командой — нужен ли дополнительный анализ. Это про управление рисками.
Реальный пример. Был баг: «При оплате картой падает приложение» — не воспроизводится на тестовых стендах. Младший QA перебирал окружения. Я спросил: «Какие именно карты?». Оказалось, баг только на картах одного региона. Посмотрели логи — разница в формате номера. Решили за час.
Что запомнить: не давайте алгоритм действий, покажите ход мыслей. Говорите о гипотезах и снятии неопределенности. Подчеркните, что работаете в связке с командой и думаете о пользователе. Ответьте логикой, а не списком — результат удивит.