Тестировщик vs программист
Если перефразировать поговорку «плох тот солдат, который не хочет стать генералом», то выйдет «плох тот тестировщик, который не хочет стать программистом» или «плох тот программист, который не хочет стать стартапером». Сейчас это почти аксиома. Например, в среде неокрепших умов считается, что тестирование — это своего рода трамплин в IT, первая ступенька на пути к программированию. Мол, через N-лет в тестировании будет легче совершить переход в разработку. Тем более что автоматизация, к которой так стремятся мануальщики — это и есть зачаточная стадия программирования. Но годы идут, а в программирование переходят лишь немногие.
Похожая ситуация происходит и с программистами, которые по молодости бьют себя в грудь и обещают родить множество стартапов, стать CEO или на худой конец хотя бы проджект-менеджером. Но и здесь особого прогресса не видно — даже в тимлиды зовут неохотно. А в это же время рядовому QA-мануальщику выдают новые лампасы и стригут в product owner’ы. Но при этом запрещают ему ходить в бар для программистов. Что происходит?
Инертные люди
С одной стороны, дело может быть в традиционной инертности человека. Затратив пару лет на то, чтобы освоить свою профессию (тестирование/программирование), он уже не рвется в смежную специальность. Ему и здесь тепло. Хотя, с другой стороны, может, не так уж и хотел?
Тезис «котелок не потянул» рассматривать не приходится, потому как обе эти профессии являются инженерными, да и в работе тестировщика и программиста есть много точек соприкосновения. То же написание тестов, уточнение требований, знание Linux, SQL, умение писать bash-скрипты и так далее. Да и часто в требованиях к вакансии тестировщика указывают способность понимать ООП, читать код и даже уметь кодить. То есть, тестировщик, который соответствует всем этим параметрам, уже является без пяти минут джуном-программистом.
Причем когда какой-нибудь тестировщик с перечисленным набором умений объявляется на форуме с жалобой «не могу найти работу», тут же подтягиваются программисты, которые советуют кое-что подучить и смело идти в программирование:
— Из навыков у меня: базовые знания C#, Javascript, SQL, знаю HTML, CSS, в свое время написал 2 сайта (это в подтверждение знаний html и css).
— Хорошо, почему не подтянуть JS, не посмотреть AngularJS и не пойти во фронтэндщики? Туда, может быть, попасть даже проще, чем в QA, а работа не такая дурацкая, а всё-таки осмысленная, инженерская, в отличие от тестирования.
Но они не идут. Мало того, что по факту лишь немногие QA таки переходят в разработку (по разным причинам), так и дорога в product owner’ы для них оказывается короче, чем для программистов. Логика проста: тестировщик знает, как приложение не должно себя вести, тогда как PM знает, как должно. Немного магии, и — вуаля! — держите свежего начальника.
Но есть в работе программиста и тестировщика кардинальное различие. Один строит, другой ломает. Один оптимист, другой пессимист. Один любит, другой ненавидит.
Программист проектирует и изготавливает автомобиль, а тестировщик пытается его убить об стену на скорости 200 км в час. Разраб радуется, что машина продолжает, хоть и с повреждениями, но катиться по шоссе, а тестер в это время ликует, что у неё вот-вот отвалится глушитель. Программист говорит: «ерунда, заживет», тестировщик отвечает: «срочно в больницу». Дуалистика!
Оптимизм и пессимизм
Программист по природе своей — оптимист. Если он не будет оптимистично смотреть в будущее, его съест ежедневная горечь ошибок. Никогда ничего не бывает гладко, даже чертовы туториалы — и те компилятся не с первого раза. Программиста спасает вера в то, что все будет хорошо: «это не баг, это фича», когда QA уверен в обратном. Так они устроены — каждый в свое болото тянет. Но это взаимовыгодный союз. Они — как два друга, или как семейная пара, где один витает в облаках, а другой его всё время тянет на землю. Чтоб не улетели оба.
Но тестировщики тоже умеют радоваться. Правда, причины для радости у них своеобразны — как для программиста. У меня до сих пор стынет кровь в жилах, когда вспоминаю радостный вопль знакомого тестировщика: «Аааа! Нашел!». «Что ж ты радуешься, скотина?» — думаю я. Нашел проблему, дефект, чертов баг. А хочется лететь, двигаться дальше. Поэтому если в рабочей обстановке у одного на лице радость и улыбка, то у другого непременно будет pokerface. «Здесь не работает!», — улыбается тестировщик, — «И в логах, глянь — одни epic fatal total kernel panic error’ы. Всё красным», — не унимается его радость . «Сейчас посмотрим», отвечает ему с лопатным выражением лица разраб. Проходит полчаса — и они меняются ролями: программист с улыбкой объясняет, что это на самом деле не баг, а неправильная конфигурация environment’а, или что таки баг, но не критический, и погоды он не делает. Тестер чахнет прямо на глазах.
К чему я всё это говорю — у тестировщиков с программистами разные системы ценностей. И чем дольше каждый из них работает в своей профессии, тем сложнее ему потом сделать разворот на 180. Один живет годы с философией «баги — это плохо», тогда как другой всю жизнь считает: «баги — это хорошо».
Как в анекдоте: «Программист видит стакан наполовину полным, проджект-менеджер видит стакан наполовину пустым, тогда как тестировщик видит его наполовину треснувшим.»
Ценности
Но и это не всё. Программист смотрит в будущее — он моделирует, планирует, пытается предсказать на несколько шагов вперед. Планирует ли тестировщик? Конечно. Но в режиме «Карфаген должен быть разрушен». Как хладнокровный охотник он продумывает покушение на софтину — отсыпает пороху, чистит ружье, смотрит прогноз погоды, точит нож. Он постарается убить её во что бы то ни стало, любым доступным способом, хоть голыми руками. Вот почему программистам неспокойно, когда в «сезон охоты» родная софтина надолго уходит в саванну. «Достаточно ли я её подготовил? Сумеет ли она избежать смерти? Если она будет ранена, то не смертельно ли? Успею ли я оказать ей первую помощь?» — мелькают мысли в голове программиста, пока он прихлебывает кофе, искоса поглядывая на тестировщика, который, кажется, начинает входить в раж.
Критиковать всегда легче. Как бы не было сложно грамотно протестировать софтину, создать её или пофиксить скрытую багу все равно сложнее. Это как в искусстве: кинокритику, чтобы указать на недочеты сюжета и общее впечатление от картины, нужно потратить часы, максимум дни. Режиссеру и его команде, чтобы снять этот фильм — месяцы, а иногда и годы. В этом плюс и одновременно минус рыботы тестировщика: с одной стороны, он меньше стрессует, ему не звонят в воскресенье утром с вопросами «почему не работает». С другой стороны, именно поэтому он находится ниже на иерархической ступеньке, ведь главную работу делает программист. Отсюда возникает вопрос: какое занятие человек выберет — менее сытое, зато более спокойное, или же более выгодное, но при этом требующее больше нервов?
Перфекционизм
Стерильный мир нулей и единиц является отличной средой для деления бактерий перфекционизма, которые захватывают мозги IT-специалистов. У программиста острая фаза длится до поры до времени, пока не прижмут сроки и пока не придется изобретать костыли для своего детища — чего не сделаешь ради заказчика? Тогда как у тестировщика она приобретает хронический характер. Если программист — это перфекционист-второклассник, то тестировщик — перфекционист-третьекурсник. Пока разраб закрывает глаза на мелкие огрехи в надежде, что зритель не заметит неровностей и царапин, тестер только на них и смотрит. С линзой в руке. Поначалу все тихо-мирно. Но когда девелопер отвлекается на «смотри, самолет!», у тестировщика в руках оказываются здоровенные раскаленные клешни, бензопила, отбойный молоток и ванна с жидким бетоном. Сейчас он будет испытывать софтину на идеальность.
Поэтому вопрос в том, захочет ли тестировщик пересмотреть свои перфекционистские привычки, научится ли он смотреть сквозь пальцы на некоторые мелочи.
Любовь
Программисты любят свой код и свои программы вместе со всеми костылями и велосипедами, которые они создают, как кошка любит котят. Разраб-создатель предпочитает не замечать недостатков и видеть только хорошее. Но тестировщик в этом плане больше похож на сурового отца, который проявляет свою любовь через суровую дисциплину и ремень. Как Шварц.
Захочет ли заботливая мамуля поменяться ролями с суровым отцом? Вот в чем вопрос.
Ненависть
Посмотрим правде в глаза: программисты не всегда ладят с тестировщиками. Оно и понятно — хотят вроде бы одного, но методы у них разные. Одни строят, другие ломают. Одни джинсы сшивают, другие пытаются их порвать конями. К этому добавляется еще и иерархическая и зарплатная составляющая, а также дискриминация по признаку тестировщика. Поэтому вопрос в том, захочет ли человек, взяв вместо лупы отвертку и поменяв звезду на свастику, переходить в стан врага.
То есть если повыносить за скобки типичные причины, по которым тестировщики и программисты неохотно меняются местами (нет знаний, опыта, вакансий и т.д.), то в игре останутся не менее интересные факторы: оптимизм/пессимизм, перфекционизм, система ценностей, и, конечно же, любовь и ненависть. Поэтому, если технарь на старте своего пути уверен, что пойдет «дальше» — например, в тестировщики, разрабы, руководители, в PM’ы и product owner’ы, но с течением лет этого не происходит, то далеко не факт, что дело в чьей-то ленивой заднице или неспособности обучаться. Нет (хотя, очень может быть, паскуда — прим. авт.). Просто сваи уже вбиты и бетон залит. Проще строить новый дом, чем достраивать этажи или взрывать фундамент и начинать с нуля. Поэтому на старте неплохо бы еще разок обмозговать, куда поедет бетономешалка, но при этом не спешить заливать первый попавшийся фундамент. Кто знает, может, там дальше за горизонтом есть более интересные и стоящие заливки формы.