Моя история в IT: через неделю работы тестировщиком я стал начальником отдела

Обложка: Моя история в IT: через неделю работы тестировщиком я стал начальником отдела
Александр Гладков

Александр Гладков

начальник отдела тестирования в ITSpecial

Привет! Меня зовут Александр Гладков, и я скоро год как возглавляю отдел тестирования в калининградской компании ITSpecial. В этой статье я расскажу, как в 33 года достиг «карьерного потолка» в одной области и перешёл в другую, но постарался использовать накопленный опыт, чтобы ускорить развитие в новой профессии.

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

В «РЖД» я прошёл путь от обычного монтёра до начальника дорожной лаборатории. Соответственно, и задачи приходилось решать очень разные, но все они были так или иначе связаны с безопасностью движения поездов. Сначала я занимался обслуживанием и ремонтом оборудования, затем – проектировал и анализировал схемы автоматики и телемеханики, в том числе системы управления стрелками и светофорами. В дорожной лаборатории я анализировал деятельность подразделения – следил, насколько безотказно работают наши устройства, продумывал, как предотвращать и устранять неисправности, решал административные вопросы.

Моя повседневная работа не была напрямую связана с программированием, но я старался хотя бы частично автоматизировать выполнение задач и для этого писал приложения-«помощники». Одним из таких решений стал электронный ассистент для ведения технической документации. С ним я в 2018 году участвовал в корпоративном конкурсе «Новое звено» и занял второе место по области. Затем я ездил в Москву на полуфинал, но вскоре разочаровался и в конкурсе, и вообще в работе «РЖД». Я понял, что выше начальника лаборатории без «хороших знакомых» мне не подняться, и решил кардинально сменить сферу деятельности – перейти в IT.

Из Томска в Калининград

Ещё во время работы в «РЖД» я получил опыт переезда в другой город. После того как расформировали наш отдел в Томске, мне предложили перевод либо в Калининград, либо в Краснодар. Я выбрал первый вариант. Организовать переезд внутри страны оказалось в принципе не очень сложно, хотя и лёгким этот процесс не назовёшь. В таких ситуациях всегда немного страшно – что там, за стеной неизвестности. 🙂

Готовиться к жизни в Калининграде я начал за месяц до вылета – надо было успеть решить основные рабочие и бытовые вопросы, главный из которых, конечно, – квартирный. Были и транспортные проблемы: как добраться из пункта А в пункт Б. Приезжаешь, а вокруг – красивый, но совершенно незнакомый город, и нужно время, чтобы к нему привыкнуть. Были также небольшие финансовые просадки, но когда твёрдо знаешь, чего хочешь, и настойчиво действуешь, вопросы постепенно решаются.

Фото из личного архива автора

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

Что касается вакансий, работа в Калининграде есть, и не только в IT.

«– Яжпрограммист! – Какие ваши доказательства?»

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

Почему всё-таки Java? Я уже программировал на этом языке, и он пришелся мне по душе. Но IT-индустрия развивается очень быстро, так что знаний всегда не хватает. Появляются новые фреймворки, подходы и практики, о которых надо знать, чтобы «не отстать от поезда». Кроме того, мне важно было восполнить пробелы в знаниях, чтобы соответствовать требованиям работодателей.

Я наткнулся на рекламу GeekBrains в интернете – открыл лендинг, позвонил методистам и обстоятельно с ними поговорил. Меня интересовало буквально всё: как проходят курсы, в каком виде подается материал, что я получу по итогам обучения. Когда речь идёт о чем-то важном, я «докапываюсь» до каждой мелочи. Я записался на курсы и сейчас могу сказать, что в целом мои ожидания от обучения оправдались. Случались, правда, неприятные моменты, когда преподаватель неуверенно читал методичку. Тогда становилось ясно, что подготовка у него не очень. Но были и профессионалы: такие, как Иван Овчинников и Александр Фисунов – их вебинары я с удовольствием слушал и слушаю. Это, можно сказать, мои кумиры. 😉

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

  • Java 8. Полное руководство (Г. Шилдт).
  • Java. Библиотека профессионала (К.Хорстманн).
  • Java. Программирование для начинающих (М. МакГрат).
  • Структуры данных и алгоритмы Java (Р. Лафоре).

В 2020 году, как раз перед началом всеобщей самоизоляции, мне позвонили из одной IT-компании и пригласили пройти собеседование на должность тестировщика. Это был поворотный момент, после которого я простился с «РЖД».

Учебный космошутер для души

За время обучения в GeekBrains я сделал два проекта: сетевой чатик и космический 2D-шутер  «FireBorn». Когда я выбирал, что буду делать, решил, что Spring – это скучновато и обыденно, высоконагруженные БД – долго и напряжённо, а игра поможет одновременно испытать свои навыки и раскрыться творчески. Так и вышло. Мне давно хотелось разработать игру, и вот наконец представилась такая возможность.

Я написал код на чистом Java с использованием библиотеки LibGDX. За время работы над проектом я сделал для себя несколько выводов. Во-первых, если заранее продумать, что и зачем пишешь, количество строк уже не пугает. Во-вторых, когда берёшься за код игры, важно соблюсти несколько условий:

  1. правильно сгруппировать игровые объекты,
  2. сделать мир игры родительским объектом,
  3. вынести всю логику в отдельный класс – связующий для остальных классов.

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

Главное оружие любого разработчика игр, в том числе и на Java, – это DELTA TIME, время между кадрами, которое нужно правильно использовать. Именно в эти промежутки времени творится магия игр! Потому что на экране мы видим результат, а «судьбы вершатся» за кадром.

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

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

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

По итогам работы над космошутером я убедился, что Java хорошо подходит для создания небольших игровых приложений, которые можно портировать на Android. Сейчас, из-за большой занятости на работе, я временно приостановил развитие игры. Но вообще совмещать обучение с работой было легко – переключаешься между делами и таким образом отдыхаешь. Главное – цель 😉 Бросить учебу ни разу не хотелось.

Моя первая работа в IT

Компания, где я сейчас работаю, создаёт и поддерживает продукты разного типа: веб-сайты, приложения с использованием дополненной реальности (AR), Android-приложения, мобильные игры. Чтобы попасть в отдел тестирования, я прошёл два очных собеседования. На первом меня спрашивали, что умею, знаю и уже писал, какие фреймворки использую. Вместо тестового задания я показал порт своей игры у себя на телефоне. И ещё добавил, что знаю, как применять Java в области тестирования.

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

В команде нас пятеро: самыми масштабными проектами занимаются три специалиста, и ещё два – курируют по небольшому продукту каждый. Недавно мы принимали участие в разработке сайта goldautumn2020.ru для электронной выставки Министерства Сельского Хозяйства РФ. О, да! Я надолго запомню эти две недели бессонных ночей и постоянного напряжения.

Что касается небольших проектов, это, во-первых, соцсеть brybe.com, где владельцы брендов и талантливые маркетологи встречаются, чтобы помочь друг другу.

Во-вторых, у нас есть игра с дополненной реальностью и рейтингом 18+, о которой я не буду здесь распространяться. 🙂 Зато скажу несколько слов о том, как на практике выглядит наша повседневная работа.

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

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

Дело в том, что фирмы пользуются разными средствами автоматизации процессов: у одних инструментов есть GUI, у других – нет. Выбор инструментария зависит от результата, который необходимо получить, будь то работоспособность сайта, загруженность платформы или ещё что-то. Я создал решение, которое тестирует и back-, и front-составляющую проекта. Внутри фреймворка спрятан, во-первых, опросник всех endpoint – наружных и служебных, во-вторых, считыватель данных о том, как система реагирует на внешний раздражитель. Например, что будет, если сменить аватарку на валидную, а потом – на не валидную. В-третьих, фреймворк создаёт нагрузку на конкретный endpoint, при этом считывает и логирует характеристики сервера.

Буквально всё, чем я занимаюсь на работе, мне интересно. Считаю, что, на сегодняшний день, я нашел то место, которое искал. Как и раньше, я создаю программы для автоматизации, но теперь это стало моим основным занятием и перешло в область, которая меня давно привлекала.

Тестирование на фоне пандемии

Так совпало, что на работу я вышел, когда в России поднималась «первая волна» COVID-19. А мне как раз надо было срочно вникнуть во все проекты отдела и взяться за их развитие. Пришлось, без преувеличения, сидеть в офисе одному, пока остальные сотрудники были дома на так называемой «самоизоляции».

Конечно, понадобилось перестраивать процессы внутри команды, и ситуация вынуждала действовать по принципу «Пришёл, увидел, победил», потому что времени на долгие эксперименты не было. Чтобы полностью адаптировать нашу работу к новым условиям, ушло около месяца. Подводным камнем на этом пути стал, как нетрудно догадаться, человеческий фактор. Мало кто рвётся «чинить то, что не сломано», даже если оно плохо работает. Поэтому для коллектива, как и для отдельных людей, решение проблемы всегда начинается с её осознания. И мы этот путь прошли. Сейчас всё в порядке – процессы наладились: коллеги в основном работают из дома, а при необходимости приезжают в офис.

Как новичку быстрее прокачаться?

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

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

Что дальше

Помимо тестирования мне сейчас интересна Frontend-разработка, так что собираюсь основательно взяться за изучение JavaScript. Почему-то никак он мне не даётся. Может, дело в специфике Java, после которой на JS сложнее переключиться, но раз уж я наметил, буду осваивать новый язык. Пока – для души, а там посмотрим.