Всем привет. Вот здесь, в недрах форума, находится мой топиктрехгодичной давности, в котором я спрашивал, с какой стороны лучше запрыгивать в IT людям без профильного образования. Советы оказались не напрасными — я таки запрыгнул, и как мне кажется, запрыгнул удачно. :)
Прошло больше 3.5 лет, и сейчас я довольный .NET разработчик в харьковском Ciklum с зарплатой выше среднесеньорской. Думаю, пришло время отдать определенный долг ДОУ и поделиться своим опытом. Надеюсь, что он окажется кому-нибудь полезным. По крайней мере, если бы я знал три года назад то, что знаю сейчас, это сэкономило бы кучу времени и нервов.
В начале я коротко опишу все, что произошло со мной за это время, ниже приведу подборку материалов для самообучения и несколько советов общего характера о старте карьеры.
Как я попал в ИТ
Буквально через несколько дней после создания первой темы на DOU, еще во времена ICQ и свежескачанных эксплойтов, я общался со своими другом — тогда еще мануальным тестировщиком в Nix Solutions. Мы говорили о работе, и он упомянул, что у них по офису пустили внутреннюю рассылку о поиске Junior QA специалистов для компании.
О том, что такое QA, я слышал впервые и даже не знал, чем отличается мануальное тестирование от автоматизированного. Но в вакансии требовались только знания любого языка программирования на уровне лабораторных работ, базовый английский и желание учиться. А по этим параметрам я подходил на 100%. Поэтому через несколько часов уже сбросил другу заполненную анкету с резюме.
На следующий день меня пригласили на собеседование. После окончания ВУЗа я уже около полугода жил дома, в славном городе Ровеньки Луганской области. Поэтому, упаковав в сумку свой деловой костюм, отправился обратно в Харьков собеседоваться.
Я сильно волновался, но было очень интересно и дружелюбно. Приблизительно через полчаса после интервью мне ответили, что всё оk, и пригласили на должность Junior AutoQA. Сказать, что я был рад, — значит ничего не сказать).
В Nix Solutions я проработал один год, и это было очень комфортное место работы. Большая часть сотрудников никсов — это либо студенты, либо люди, недавно окончившие ВУЗ, поэтому атмосфера там царит соответствующая. Постоянные тусы, корпоративы и праздники — неотъемлемая часть рабочего процесса.
Почти с самого начала я рассматривал должность Auto QA как временную, перед тем как прокачаться и перейти в разработку, так что сразу стал усиленно учить C#. Сначала по книге Михаила Фленова, потом по Троелсену, позже перешел на Шилда и еще докупил огромный талмуд по ASP.NET. Приблизительно через 10 месяцев работы я стал выяснять перспективы перехода в разработку, однако оказалось, что если я сменю направление, то моя, уже немного подросшая, зп опять упадет до начального уровня.
И здесь из-за своей врожденной жадности я сделал большую глупость, решив с переходом в разработку немного повременить. Следующий шанс представился только через долгих полтора года, и уже в другой компании.
Но, как бы то ни было, еще через два месяца меня пригласили на собеседование в EPAM, после которого я получил x2 оффер на позицию Middle Auto QA и, недолго думая, его принял. На первый взгляд EPAM кажется дико забюрократизированной конторой, однако после небольшого периода акклиматизации понимаешь, что все не так уж и страшно: технический уровень специалистов здесь значительно выше, чем в Nix Solutions, и созданы отличные условия для того, чтобы хорошо прокачаться.
Такой возможностью нельзя было не воспользоваться, и за 9 месяцев работы параллельно с накапливанием непосредственно рабочего опыта, я дополнительно осилил:
— Head First O’Reilly,
— Язык программирования С — Керниган Б., Ритчи Д.,
— Прошел все туториалы по ASP.NET MVC и entity Framewrokна asp.net,
— ASP.NET для профессионаловСтивена Сандерсона.
Потом прошел собеседование на разработчика внутри EPAM и стал ждать подходящей вакансии. Сезон оказался не очень рыбный, и ожидание подходящего .NET проекта растянулось еще приблизительно на полгода. За это время мне дали возможность поработать над интересным внутренним проектом на asp.net, плюс я прочитал Рихтера, подучил основы теории баз данных по Кроенке и даже начал учить С++.
В конце концов, я уже было приуныл от ожидания, но вопрос решился, и я таки перешел в другой проект в роли разработчика. По поводу отличий разработки от автоматизации тестирования напишу далее, скажу только, что еще приблизительно через год разработки в EPAM меня позвали на собеседование в Ciklum, и пройдя несколько этапов интервью, я оказался на том месте, на котором нахожусь сейчас.
Выбор направления
Выбор направления, в котором вы будете развиваться, — это очень важный момент, потому правильное решение сейчас сможет сэкономить вам много времени и денег в дальнейшем. Здесь я более подробно рассмотрю направления .NET Auto QA и .NET Development, потому что они мне наиболее знакомы.
Но перед этим отдельно упомяну популярное направление Manual QA, которое предъявляет наименьшие требования к начинающему специалисту, однако и желающих попасть в мануальные тестировщики очень много. Поэтому низкий порог вхождения компенсируется значительной конкуренцией. На мой взгляд, в сложившейся ситуации лучше потратить дополнительные
Теперь, если говорить о выборе между Auto QA и Development, то с точки зрения зарабатывания денег и скорости развития карьеры, на сегодняшний день Auto QA — это наиболее подходящий вариант. Разрыв в зарплатах между автоматизацией .NET разработкой минимален, при том, что технические требования значительно отличаются. К тому же, на Auto QA сейчас очень большой спрос.
Главный же минус автоматизации заключается в том, что, на самом деле это довольно унылая работа :) Первое время, когда на проекте вводится автоматизированное тестирование и разрабатывается новый фреймворк, это достаточно интересно. Но, после того как фреймворк написан, акцент смещается в сторону расширения тестового покрытия, и искра божественного вдохновения навсегда покидает это место. Работа превращается просто в монотонное написание однотипных тестов, а жизнь заволакивает серым туманом безысходности. Девелопмент, конечно, тоже не гонки на рефрежераторах, но определенно более интересная и разнообразная штука.
Программы для самообразования
Теперь по поводу самообразования. Я составил две программы для самообучения по направлениям .NET AutoQA и .NET Development по материалам, которые мне показались наиболее эффективными. Ниже приведены два примерных списка вопросов для подготовки к собеседованию.
Программа для самообучения AutoQA
Первая часть:
1.Герберт Шилдт ‘Полное руководство по C# 4.0’ - самая простая книга по C# из тех, с которыми я сталкивался. Читать до 23 главы и пропустить главу про многопоточность.
2. HTML и CSS — просто понять, что это такое и зачем оно нужно. Туториалы тутили тут.
3.Статьи по Selenium WebDriver в интернете. Разобраться с паттернами PageObject и PageFactory.
После того как вы это прошли, попробуйте написать небольшое приложение с использованием селениума и этих паттернов. Например, приложение для автоматизации проверки новых сообщений в VK и проверки онлайн статуса друзей. Логин/пароль для входа в VK и имя друга приложение должно брать из текстового файла.
4.Кренке Д. "Теория и практика построения баз данных — разобраться с основами баз данных, джоинами, подзапросами и нормальными формами. Всю книгу от корки до корки читать не нужно.
5.Савин Р. — Тестирование Дот Ком — читается очень легко за
Вторая часть (после того как вы осилили предыдущие материалы и нашли работу):
1.Паттерны Head First O’Reilly
2. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#
Ориентировочный список базовых вопросов для собеседования:
С# и ООП
— Три принципа ООП. Привести примеры каждого
— Ссылочные типы и типы значений в C#
— Приведение типов в C#
— Boxing\Unboxing
— Generics
— Отличие интерфейса от абстрактного класса
QA:
— Форма принимает значение от 1 до 40, какие тесты нужно провести в первую очередь?
— Описание бага
— Жизненный цикл бага
— Описать путь к элементу с помощью XPath
— Рассказать про паттерны PageObject и PageFactory
SQL:
— Выборка данных из одной таблицы по условию
— Выборка из двух таблиц с джоином
Алгоритмические задачки:
— Найти самый большой или маленький элемент массива
— Любой алгоритм сортировки массива
— Подсчет количества вхождения подстроки в тексте
Программа для самообучения .NET Developer:
Первая часть:
Все тоже самое, что и AutoQA, только вместо селениума туториалы по ASP.NET MVC и Entity Framework на сайте asp.net — очень классные, проходить их — одно удовольствие.
1. Две части учебника по javascript Ильи Кантора (learn.javascript.ru)
2. Паттерны Head First O’Reilly
Вторая часть (после того как вы осилили предыдущие материалы и нашли работу):
1. CLR via C#.Программирование на платформе Microsoft .NET Framework 4.5 на языке C#
2 .NET паттерны на dofactory.com
3. EDX Introduction to Computer Science — основные понятия о сложности алгоритмов и структурах данных. Домашние задания можно не делать.
Ориентировочный список базовых вопросов для собеседования:
С# и ООП:
— Три принципа ООП. Привести примеры каждого
— Ссылочные типы и типы значений в C#
— Приведение типов в C#
— Boxing\Unboxing
— Generics
— Отличие интерфейса от абстрактного класса ☺
— Чем List отличается от Array
— Что такое сборка? Из каких частей она состоит?
— Лямбда-выражения
— Принципы работы Garbage collector
ASP.NET MVC и паттерны:
— Паттерны MVC
— Паттерны Стратегия
— Паттерны Наблюдатель
— Паттерн Фабрика
— Паттерны Repository и Unit of work
SQL:
— Выборка данных из одной таблицы по условию
— Выборка из двух таблиц с джоином
— Выборка с помощью GROUP BY
— Нормальные формы
Алгоритмические задачки:
— Найти самый большой или маленький элемент массива
— Любой алгоритм сортировки массива
— Подсчет количества вхождения подстроки в тексте
Разное:
— HTTP протокол, отличия POST запроса от GET запроса
— Что такое DOM-модель
— Отличия JavaScript от C#
— XML и JSON форматы
Подход к самообучению довольно простой. Вы берете первый указанный в программе источник и читаете его, повторяя все примеры кода в IDE. Если что-то непонятно, гуглите. Не останавливайтесь слишком долго на моментах, в которых не можете разобраться. Спрашивайте на форумах или просто пропускайте и проходите материал дальше. Осилив один источник, переходите к следующему.
На мой взгляд, обучение программированию — это скорее вопрос времени и желания, чем наличия таланта. В самом начале обучение будет идти очень медленно и со скрипом. Особенно если его придется совмещать с основной работой. Но если просто систематически уделять время образованию, это принесет свои плоды. Чем больше времени вы сможете уделять обучению, тем быстрее будете двигаться.
После прохождения первой части программы уже стоит пробовать искать работу. Даже если не получится сразу, то как минимум на подготовительные курсы внутри какой-нибудь компании с этими знаниями вас возьмут 100%. Хотя я всё же считаю, что прежде чем идти на курсы, нужно сделать все возможное, чтобы работу найти.
Сейчас многие курсы, никак не связанные с конкретными ИТ-компаниями, обещают дать базовый уровень подготовки. Об их полезности мне судить сложно, так как сам я подобные курсы не посещал и отношусь к ним немного скептически. Возможно, они сделают процесс обучения легче и веселее, но в любом случае всё, что они предлагают, можно осилить самостоятельно. Поэтому я думаю, что если даже идти куда-либо на подготовительные курсы, то только на pre-production в какую-нибудь компанию. Потому что после окончания пре-продакшена вам, скорее всего, предложат работу, а внешние курсы просто дадут свидетельство об их успешном окончании, которое само по себе не особо полезная штука.
Вторая часть программы — это то, что стоит изучить в первую очередь, после того как вы оказались на рабочем месте.
Отдельно стоит обратить внимание на английский язык, знания которого необходимы хотя бы на уровне чтения документации и простой переписки. В принципе в школе его в той или иной степени изучал каждый, но, на всякий случай, освежить знания можно на lingualeo.com. После того как найдете первую работу, всю техническую литературу лучше стараться читать на английском.
Словарный запас расширяется чтением текстов и книг. Навык понимания английской речи на слух — просмотром on-line курсов, лекций и выступлений. По сериалам учить сложнее, так как там язык более художественный.
Продолжения ждите сегодня в ч.2.