Как тестировщику стать разработчиком — отвечают эксперты

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

«Говорят, что многие тестировщики из тестирования переходят в разработку ПО. Так ли это на самом деле? Насколько сложно из тестировщика «превратиться» в программиста? И в чем плюс того, что у разработчика имеется за плечами опыт в тестировании ПО?»

Мы обратились за разъяснением к нашим экспертам, а полученные ответы представляем вашему вниманию.

Григорий Земсков

Григорий Земсков, Директор компании «Ревизиум»

Задачи тестирования и разработки лежат немного в разных интеллектуальных плоскостях. Хороший тестировщик совершенно не обязательно будет хорошим разработчиком и наоборот. Задача тестировщика придумывать нестандартные сценарии (use cases), при которых будет возникать ошибка. При этом разработчик, зная, как работает алгоритм приложения, какие у него реализованы возможности и как приложения «запрограммированы», с меньшей вероятностью сможет придумать сценарии, которые приведут к ошибкам, поскольку, скорее всего, будет мыслить категориями «фич». Наверняка есть люди, которые с одинаковым успехом будут хорошими тестировщиками и разработчиками, но из моей практики, обычно это разные люди, с разной подготовкой и разным складом ума.

Алла Клименко

Алла Клименко, CEO Mad Devs

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

Сергей Храпов

Сергей Храпов, начальник центра качества компании Nexign

Я бы не сказал, что дело обстоит именно так. Сегодня речь в большей степени идёт уже не столько о переходе из одной специальности в другую, сколько о расширении сферы компетенций – возможно, с последующей сменой рабочей роли. Тестировщик – это уже не профессия, а именно роль. В контексте профессиональной принадлежности сейчас всё чаще используется термин software engineer. Это человек, который владеет определённым набором технических знаний и навыков, в силу чего может совмещать в себе и программиста, и тестировщика, и много кого ещё.

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

В плане профессионального развития это если не насущная необходимость, то, как минимум, работа на перспективу. Судите сами: автоматизированное тестирование к настоящему времени порядком потеснило ручное. А в автоматизации вы уже не тестировщик, а developer in test. Вы пишете библиотеки, тест-дата генераторы, работаете с ветками в git, как и «программисты»… Де-факто вы сами и есть программист. Автотесты проходят все те же стадии жизненного цикла, что и любой код, и подход к написанию автотестов идентичен тому, что используется при разработке.

Для трансформации из ручного тестировщика в программиста/автотестера можно избрать один из двух путей. Простой, быстрый и неправильный (на мой взгляд) путь выглядит так: вы берёте свои же тесты и начинаете их понемногу переписывать. Допустим, на Python — из-за достаточно низкого порога вхождения. Понемногу набиваете руку и начинаете претендовать на новую должность.

Неправильный этот путь потому, что такое вот самообучение прикладному предмету под девизом «быстро нахватаюсь того, что нужно для конкретной работы», в конечном счёте приводит к необходимости переучиваться. Это как в любом спорте: рвёшься в бой, не зная основ – заучишь неправильную технику. А выправлять плохую технику, уже осевшую в мышечной памяти, гораздо труднее, чем ставить хорошую с нуля.

Второй путь медленный и более трудный, но он же и более почётный. Следуя им, вы нарабатываете себе хорошую инженерную базу. А именно: возьмём ручного тестировщика, который знает только основы тестирования, и больше ничего. Чтобы стать приличным автоматизатором, ему недостаточно освоить основы ООП на примере, предположим, Java core. Ему нужно, чтобы хотя бы такие слова, как «система контроля версий», «консоль unix», «стек TCP/IP», «SQL», «UML», «Maven», «Jenkins» не вызывали у него растерянного недоумения. А вызывали, напротив, воспоминания о каком-то практическом опыте. То есть, в идеале нужно устроиться куда-то, где можно учиться на практике, и держать в фокусе именно обучение и практику, а (покамест) не карьеру.

Да, это проект не на месяц и не на два, зато потом вы будете грамотным специалистом, способным произвольно выбирать для себя область применения, а не прикованным к единственной роли «тестировщиком-который-что-то-может-на-Pyhon».
Что касается преимуществ, то у экс-тестировщика они вполне могут быть. Но это не в последнюю очередь зависит от того, в какой компании и на каких проектах человек набирался опыта. Если вы имели дело со сложными распределёнными системами – вероятно, у вас сформировались хороший системный склад ума и интуиция, представление о том, куда направлять усилия, умение видеть тонкие места. Такой аналитический/архитектурный тип мышления всегда в цене. Если вы хороши в тест-дизайне, саппорте или аналитике – отлично. В ту же копилку падают знание предметной области и soft skills. Из всех этих кирпичиков, которые относятся, правда, не столько к опыту тестирования, сколько к опыту работы, может выстроиться достаточно выигрышный набор ваших преимуществ.

Марина Малашенко

Марина Малашенко, HR–директор сервиса путешествий OneTwoTrip

Многие специалисты начинают свой путь в ИТ именно с тестирования из-за очень низкого порога вхождения. Чтобы стать ручным тестировщиком, достаточно посмотреть несколько курсов. Мы часто слышим от кандидатов на собеседованиях, что они хотят быть тестировщиками, чтобы увидеть цикл разработки ПО изнутри и затем уйти в программисты. Карьера таких специалистов может развиваться по-разному. Разработчики — творцы, они создают что-то новое, глубоко погружаются в проект.

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

Марк Толстов

Марк Толстов, основатель компании "Домопульт"

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

Сложно сказать насколько это трудно. Это от конкретной личности зависит. Кому-то несложно, кому-то очень сложно.
Поможет ли опыт тестировщика программисту? Однозначно да.

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

Александр Шабанов

Александр Шабанов, ведущий .Net разработчик, DataArt

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

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

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

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

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

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

Екатерина Ремизова

Екатерина Ремизова, руководитель QA направления компании SimbirSoft

Не многие тестировщики из тестирования переходят в разработку ПО. Есть процент меняющих направление работы, он везде, примерно, одинаков. К тому же, не только в разработку уходят QA-специалисты, но и в аналитику, и в ПМство, и другие смежные специальности.

«Превратиться» в программиста из QA-специалиста примерно так же затратно по силам и времени, как «превратиться» в дизайнера или ПМа. Нужно прокачивать скилы, которые имеются, и нарабатывать новые, необходимые. Обычно, QA-специалисту необходимы знания языков программирования, работы с сетью, основ работы с БД и другое. Это нужно для верного построения своей работы, выбора подходов и стратегии тестирования, просто кликать по кнопкам и использовать только BlackBox в наше время уже очень узко и совсем не покрывает необходимых вещей.

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

Элеонора Русанова

Элеонора Русанова, HR-директор компании «Код безопасности»

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

Артем Некрасов

Артем Некрасов, Unity разработчик и гейм-дизайнер в Seven Winds Studio

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

Большинство кодеров, которые начинают свой путь с профессии тестировщика, уже имеют какие-то навыки программирования. Из-за этого может создаваться ложное впечатление того, что тестировщики со временем «превращаются» в программистов. Важно отметить, что переход из тестировщика в программисты — не повышение специалиста, а его переквалификация.

Михаил Егоров

Михаил Егоров, директор практики СЭД ИТ-компании «АйДи – Технологии управления»

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

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

Как разработка, так и тестирование – это целая наука. Можно годами заниматься тестировкой и стать востребованным на рынке специалистом, который будет получать зарплату намного более высокую, чем среднестатистический программист. Тем более, тестировщик на проекте – фигура значимая: последствия некачественного тестирования или его отсутствия могут быть крайне негативными.

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

Андрей Татаринов

Андрей Татаринов, технический директор компании VRTech

Если честно, я практически не видел успешных примеров конвертирования Тестировщик -> Программист, поэтому я не могу назвать это типичным развитием карьеры. Гораздо чаще я вижу Тестировщик -> Руководитель проекта, и это логично, потому что активное участие в жизни проекта для обеспечения качества хорошо развивает навыки коммуникации и координации других сотрудников 🙂

Иван Шмаков

Иван Шмаков, Senior VoIP Software Developer

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

Поэтому такие переходы случаются крайне редко, куда чаще тестировщики становятся эффективными менеджерами продуктов или развиваются «горизонтально», например, до узкого специалиста UX лаборатории, руководителя отдела тестирования/качества. Однако если стремление «превратиться» в программиста все же есть, это осуществимо, можно начать с автоматизированных тестов: программистом проще стать тому, кто владеет этим искусством.

Юлия Потапова

Юлия Потапова, ведущий HR-специалист компании «СёрчИнформ»

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

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

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

Михаил Григорьев

Михаил Григорьев, доцент кафедры программной и системной инженерии ТюмГУ

Для начала нужно пояснить в чем задача каждого специалиста.

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

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

Да, действительно многие тестировщики переходят в разработку, хотя при этом есть и обратное движение: разработчики переходят в тестирование. Профессии смежные, и специалисты по тестированию работают в тесной связке со специалистами по разработке ПО. Однако, зачастую есть ряд сложностей при смене профессии. Тестировщики работают с так называемой интерфейсной частью алгоритма: исходные данные (включая объем и скорость поступления), выходные данные, порядок работы и т.д. При этом не много внимания уделяется тому, как работает функция. Хотя тестировщикам тоже приходится много программировать, автоматизируя тестирование, это все же не написание новых функций. Помимо трудовых обязанностей есть еще социальная сторона вопроса. Принято считать, что разработка – более важная и ответственная работа, поэтому разработчики более ценные, чем тестировщики. Конечно, это не так – проектная команда всегда равноправна и нельзя выделить более или менее важное звено.

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

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

Вадим Мельников

Вадим Мельников, технический директор Туту.ру

«Превратиться» из тестировщика в программиста не просто, но возможно. В Туту.ру такие примеры есть, но их единицы. Уточню, у нас в отделе качества есть три линейки сотрудников: это «ручные» тестировщики, автотестировщики (те, которые пишут автотесты) и третья линейка — это те, кто развивает фреймворк для проведения автоматического тестирования (англ. Test automation framework). У всех сотрудников этих линеек разные компетенции. При этом тестировщики могут переходить из одной линейки в другую. Мы всех тестировщиков учим писать автотесты, что развивает у сотрудника навыки программирования. Переход из автотестирования в разработку возможен, но этот путь более сложен, чем просто начать писать автотесты.

Кроме того, есть еще написание определенных видов тестов, например, для API – это полноценное программирование. Если мы говорим про автотесты для мобильных приложений, то их написание очень схоже с написанием самих приложений. Однако разработка отличается от тестирования не только знанием технологий и/или фреймворков. Возникает вопрос не про технологии (они используются те же самые), а про умение построить архитектуру приложения. Тестировщику и автотестировщику это требуется в меньшей степени, а разработчику такой навык необходим. Это умение, которое тренируется. Но, будем откровенными, не все разработчики обладают таким навыком :).

Можно использовать такой подход: взять список компетенций, необходимых тестировщику и разработчику, сравнить их. Те, которые не хватает тестировщику, ставим в план на развитие. Это и будет план для перехода в разработчики. Чаще всего тестировщику не хватает алгоритмического мышления, умения находить архитектурное решение, использовать шаблоны проектирования.

Большинство тестировщиков у нас превращаются в автотестировщиков – это такой этап развития. А из автотестировщиков в разработчиков — единицы. Нужно обладать знаниями (теоретическая база), опытом. Это все равно, что врач-терапевт захочет стать хирургом — просто так, без обучения, он им не станет.

В чем плюс того, что у разработчика имеется за плечами опыт в тестировании ПО?  В современных командах, которые работают по аgile, быть «T-shape» полезно. Это помогает получить фичу вовремя. Один человек, без команды, не сделает продукт законченным. Когда у тебя есть опыт в соседней области, ты лучше понимаешь процесс целиком, а в нужный момент сможешь помочь команде, исполнив другую роль.

Алексей Золотых

Алексей Золотых, Frontend разработчик Wrike

Думаю, что вопрос не совсем корректен. Бывают и тестировщики-программисты. У нас в компании они есть. Пишут код для автоматического тестирования продукта. У них там своя архитектура, свои проблемы и свои задачи.

Если же речь идет про ручных тестировщиков, то программирование от них не намного ближе, чем от других «непрограммистов». В общем, ручное тестирование мало приближает к программированию.

Дмитрий Лиходедов

Дмитрий Лиходедов, младший Android-разработчик компании Movavi

Многие ли тестировщики переходят в разработку? Точно не скажу, но это один из возможных путей роста. Среди моих друзей я единственный, кто ушел в разработку. Один мой товарищ в той же компании, где я работал, перешел из тестирования в аналитику, другой стал продакт-менеджером. Все зависит от того, в каком направлении человек хочет развиваться. Я знал, что уйду в разработку. Мне это нравилось со школы, но на тот момент мне не хватало для этого знаний. На первом собеседовании я рассказал о своих амбициях и понимал, что для их осуществления мне нужен опыт в тестировании. Тестирование не всегда первый шаг на пути к разботке. Это всего лишь один из методов. Можно потратить некоторое время на подготовку, обучение и сразу пойти в разработку.

Чтобы стать разработчиком необходимы знания. Я прочел много книг, практиковался. Я всегда был в этой сфере – работал днем и читал по вечерам. Мне хотелось понять, какой объем знаний требуется, чего мне не хватает. Как и все начинающие, я отправлял резюме, делал тестовые задания, пробовал себя, снова и снова получал отказы.

Я люблю Android, также изучал язык Java и использую его в разработке мобильного приложения Movavi Clips. Мое первое приложение Together With You работает до сих пор, хотя кое-что я сейчас сделал бы в нем иначе.

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

Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем как это сделать.

 

Ещё интересное для вас:
— Биты, байты, Ада Лавлейс — тест на знание околоIT.
— Level Up — события и курсы, на которых можно поднять свой уровень.
— Работа мечты — лучшие IT-вакансии для вас.