Поехали!
Этот пост рассчитан на людей, которые далёкие от этой темы, но хотели бы попробовать и не знают с чего начать. Так вот, начать можно прям от сюда 😻
Меня часто спрашивают "Как войти в IT?". И я догадываюсь почему 🙈. Решил собрать всё в одном месте, исходя из своего собственного опыта.
В IT есть масса профессий. Я расскажу о минимуме знаний для успешного прохождения собеседования на позиции Junior Software Engineer или Junior Quality Assurance Engineer. Короче, что нужно знать, чтоб начать работать Программистом или Тестировщиком QA, QE (инженером по качеству).
Про программистов, вроде как, всё понятно. Сидят пишут код, чинят баги, занимаются автоматизацией какого-нить процесса.
Тестировщики бывают разные. Одни занимаются ручным (мануальным) тестированием, другие автоматизированным.
Здесь сделаю уклон больше на тех, которые занимаются автоматизированным тестированием. Мне кажется, так проще найти работу. Есть масса проектов, где есть всё кроме тестов. Поэтому, постоянно требуются люди для написания автоматических тестов.
Люди, которые занимаются ручным тестированием тоже нужны. В основном это сложные проекты, где очень сложно реализовать автоматическое тестирование. У меня знакомый устроился работать в контору, которая занимается интеграцией нескольких систем логистики судов в одну большую систему. Им как раз требовались мануальные QA потому что автоматизировать всё было бы очень долго и дорого.
Для начала нужно понять, что необходимо знать для удачного прохождения собеседования и с чем, непосредственно прийдется работать на работе.
Итак, что нужно знать:
- Git - система контроля версий. Это такая штука, с помощью которой можно посмотреть какие изменения вносились в код, когда и кем. В общем, вещь нужная и интересная.
- Какой-нить язык программирования. Можно выбрать абсолютно любой, в зависимости, что хотите разрабатывать и что, так сказать, ближе к телу. Например, хотите делать красивые сайты - Javascript, для игр - С++, программировать железяки, контроллеры, IOT - Cи и так далее, подробнее для чего какие языки используются можно почитать тут или тут. Я рекомендую начать с Python, так как сам с него начинал 😎. Много туториалов, видео, книг, курсов, почти всё можно скачать и смотреть бесплатно!
- Теория тестирования. Для QA без этого вообще никуда. Скажем так, даже если вас устроили на работу по-блату всё равно её - теорию прийдётся выучить. Это знание позволит вам работать меньше, а зарабатывать больше! Ну и жизнь будет спокойнее, меньше всяких 🐛 🐞🦟🪲 в продакшине.
- Базы данных Это важно знать как для программистов, так и для QA. Если сильно упростить, можете себе представить таблицу Excel. Так вот программист автоматизирует работу с этой таблицей, создание, добавление, обновление и удаление данных, а также фильтрация в зависимости от запроса.
- Aлгоритмы и структуры данных. Для программистов это да! Чтоб программа работала быстро, не падала и вы вызывали уважение у коллег
по опасному бизнесув офисе. Для ознакомления, что это такое и как оно работает, есть небольшая книга Грокаем алгоритмы причем, не нужно знать высшую математику, чтобы начать изучать алгоритмы, для начала хватит этого. - Linux и работа в терминале. Если вы будете работать в Windows, наверное, вам это не нужно. Если нет, прийдется выучить несколько команд, перемещение по папкам, копирование и удаление файлов, в принципе, для начала, и всё.
Ресурсы для изучения:
👨💻🐞Learn Git Branching это как игра, всё доступно и понятно. Если ее полностью пройти несколько раз, этого более чем достаточно для прохождения собеседования и нормальной работы в 99% всех существующих проектов.
👨💻🐞GIT - проще некуда Смотрим и сразу повторяем, автор очень просто и подробно всё объясняет, действительно - проще некуда!
👨💻🐞Python-koans Python Koans — это интерактивный учебник для изучения языка программирования Python путем прохождения тестов.
После прохождения Learn Git Branching скачиваете себе в git репозиторий и можно пробовать проходить.
Возможно, для старта Python-koans покажутся немного сложными. Можно поискать что-то попроще, чтобы ознакомиться с базовым синтаксисом языка. Можно посмотреть несколько видео на YouTube.
Настоятельно рекомендую книги:
- Простой Python, Билл Любанович, 2 издание
- Начинаем программировать на Python, Гэддис Тони, 5 издание
Также, параллельно можно проходить задания на CheckiO есть русский язык, задачи от простых к сложным, даже можно самому добавлять задачи. Вообщем одни плюсы.
👨💻🐞Тестирование Дот Ком Это прям классика. Книга небольшая и читается очень легко. Самое важное, она дает понять, нужно Вам это или нет. Не нужно прям прорабатывать каждую страницу, можно прочитать один раз и понять, стоит продолжать двигаться в этом направлении или нет. Будущим программистам это поможет в написании юнит-тестов.
🐞Теория тестирования Для тех кто осилил книгу Тестирование Дот Ком. Берем и учим наизусть, что такое баг, тест-кейс, какие виды тестирования бывают, какие уровни и так далее. На собеседовании на позицию QA 80% вопросов будут как раз по теории тестирования.
🐞 Тестовые фреймворки. Их несколько в Python, я бы смотрел в сторону PyTest. Используется в большинстве проектов, интуитивно простой. Тут можно почитать на русском языке.
👨💻🐞Базы данных только самое необходимое тот же автор, что и GIT - проще некуда, кстати, он написал несколько книг и у него есть сайт.
👨💻Aлгоритмы и структуры данных python Наверное, лучшее, что можно найти на русском языке и бесплатно. Смотрим лекции Тимофея Хирьянова, делаем задания, осознаём, запоминаем.
👨💻🐞Linux для Начинающих Этот курс прям для самых-самых начинающих, лично я рекомендую Вводный курс по администрированию Linux этот курс в первую очередь нацелен на подготовку к сдаче экзамена LPIC, но здесь важно то, что в этом курсе рассматриваются практически все темы, которые будут нужны в работе.
На самом деле, здесь не так много материалов для изучения, как кажется на первый взгляд. Если уделять час в день, всё это можно осознать за 6-9 месяцев. Некоторые вещи прийдется прорабатывать параллельно, что увеличит скорость изучения 🍻. Например, решение алгоритмов, тестирование, сохранение кода в Git репозитории.
Резюме
Итак, после прохождения всего этого нужно написать резюме. Какое должно быть резюме и что туда писать можно посмотреть тут
Также можно полистать клубные записи по этому поводу, есть куча годного контента:
Светлая сторона
Всё это, конечно, супер, но что же писать в резюме?
Заводим аккаунт на Github или Gitlab (это такие сайтики, где программисты хранят свой код) создаем там проекты и сохраняете там все ваши програмки с детальными пояснениями, которые писали во время обучения. Это плюсик на собеседовании.
По-хорошему, нужно придумать свой небольшой проектик, программу которая что-то автоматизирует. Например, каждое утро присылает вам в телеграм канал погоду на день (согласен, тупо, но суть не в самом смысле программы, а в ее компонентах).
Что для этого нужно:
- Написать программу
- Написать тесты
- Добавить GitLab CI/CD или GitHub Actions - это чтобы каждое утро она сама присылала сообщение.
- Каждый раз, когда вы сохраняете код после редактирования, автоматически должны запуститься ваши же тесты, дабы проверить код на вшивость
Последние два пункта кажутся сложными, но на самом деле нужно немного знаний и времени чтоб их реализовать. Есть очень много материалов по этой теме на разных языках и в разном качестве, с примерами и плюшками.
Второй вариант, делать вклад в опенсорс проекты.
Находите проект по душе и начинаете наносить непоправимую пользу. Если вы начинающий разработчик, можете начать чинить баги. Если вы начинающий QA, можете начать баги находить или писать тесты. Обычно большинство опенсорс проектов страдают от наличия отсутствия тестов. Скажем так, я не встречал ни одного опенсорс проекта, где бы не нужет был QA.
Кстати, вот - vas3k.club и далеко ходить не нужно, уверен, если предложите свою помощь в развитии, все будут безумно счастливы 🤗!
Если вы с этим справитесь и готовы об этом поболтать на собеседовании, это уже минимум уровень мидл и можно переходить на Темную Сторону
Тёмная сторона
Если вдруг, решили перейти на тёмную сторону и использовать проверенный способ вкатиться в АйТи, настоятельно рекомендую изучить вопрос разработки программного обеспечения, всякие Scrum Agile и т.д. и т.п., а также что такое Jira и зачем она нужна. Тут нужно хоть немного ориентироваться в теме.
Что дальше?
- Рекомендую к прочтению, комментарии под этим вопросиком: Как найти первую работу QA, если ты джун?
- Для QA Обзор частых вопросов по тестированию ПО на собеседованиях и ответы на них
- Для программистов, как вариант, решать задачки на LeetCode или на других подобных платформах.
Итого:
Программистам важно знать язык программирования, базы данных, алгоритмы. В меньшей степени, администрирование операционных систем и теорию тестирования.
Для QA инженера в первую очередь теория тестирования, потом всё остальное. Если вы хотите быть QA Automation, стоит выучить язык программирования, базы данных, тестовые фреймворки.
Не нужно стремиться устроится QA потом поменять работу на программиста. Поверьте мне, это сделать гораздо сложнее чем просто устроиться программистом. Мало того, что учить прийдется в два раза больше, так еще и подсознательно работая QA ваша задача находить баги. Это основная работа QA, вы от этого будете получать удовольствие. Поменяв работу на программиста, вы всячески будете избегать этого процесса. Сознание должно переключиться. Вы должны будете писать хороший качественный код. Вы будете думать что ваш код самый лучший, у него не может быть багов, он как ребенок, самый-самый 😌.
Важно понимать, чтобы устроится на первую работу, важно уметь проходить собеседования. А чтобы научиться проходить собеседования, нужно походить на собеседования 😉. Даже если Вы обладаете идеальными знаниями во всех темах и 100% подходите на должность, не факт что вас возьмут с первого раза.
Это не единственный правильный путь войти в IT, это "один из". Нужно пробовать и всё получится 🙂.
Надеюсь, для кого-то статья будет полезной 🤗.
Отзывы и комментарии welcome 🙃.
Мне кажется Python один из худших вариантов для начинающих :)
Статья хорошая и ссылки полезные. Но кажется в названии стоило уточнить, что основная информация для QA (хотя согласен, в общем и целом подходит всем)
Почитал, подумал и понял, что хоть сам в айти 20+ лет, но как туда вкатываться - без понятия, тем более что сейчас явно иначе чем раньше, и чем потом)
Поэтому статью не напишу)
По sql добавлю свой проект.
Собрал все актуальные материалы, что то есть платное, по мере возможности помогаю, всегда можете писать в личку!
https://vndv.github.io/LearningSQL/#/
вот тут есть что-то похожее, если еще не видели: https://roadmap.sh/
Вот, например, для QA https://roadmap.sh/qa
Добавлю свои пять копеек для собирающихся в программисты. На основе годового опыта преподавания JavaScript для вкатывающихся в IT.
Начать нужно с того, что определить зачем вы хотите в IT. Я видел довольно много примеров, когда люди успешно находили работу, работали год, два, а после этого уходили из профессии. Таких, конечно, не большинство, но нужно чётко понимать свою цель и соотносить её с реальностью. IT это не только про "много платят", это ещё часто и про переработку, постоянную необходимость что-то изучать, постоянную работу в условиях высокой неопределенности. Не то чтоб в других местах было сильно иначе, но люди часто видят фразу "много платят" и не видят всё остальное.
Если говорить про самообучение, первая самая главная вещь — нужно очень много практики. Представьте объем практики, который вам кажется большим, а затем умножьте его на три. Это будет примерно половина того, что вам надо.
Несмотря на то, что теорию тоже надо знать — для вкатывания практика в несколько раз важнее. За каждый теоретический час у вас должно быть 4 часа практики, а то и больше. По опыту для начинающих соотношение должно быть 80% практики, 20% теории, и это соотношение будет постепенно изменяться в сторону увеличения теории по мере набора опыта. А потом уменьшаться. А потом снова увеличиваться. Через какое-то время практика будет уже "в пальцах" как говорила моя преподавательница по фортепиано, и на это будет гораздо легче накладывать теорию, чем наоборот.
Если вы застряли с какой-то конкретной задачей дольше, чем на 10 часов, значит вам нужна помощь. Ищите более опытных ребят, нет смысла долбиться в стену, которая не поддаётся так долго. Если вы застряли с какой-то теоретической частью —пробуйте делать практику, даже если не до конца понимаете. Гуглите задачи, благо от недостатка задач интернет сейчас не страдает.
По поводу выбора языка, с которого начинать: со всех сторон вам будут рекомендовать совершенно разные языки, приводить миллион аргументов за и против, поэтому сделать взвешенный выбор будет сложно. Мой совет, берите тот язык, эксперт по которому есть у вас в прямом доступе. Выше в комментариях предлагают много разных вариантов: Python, Java, Golang. Все они с точки зрения количества вакансий плюс-минус похожи, с точки зрения базовых концепций хороши и в будущем при необходимости перейти с одного языка на другой будет проще, чем учить с нуля. Конечно, между этими языками есть и большая разница, но вам-то надо набрать достаточный уровень чтобы войти в профессию, а не чтобы стать в ней экспертом.
Я знаю примеры, когда программистами становились повара, водители и няни. Может быть, конечно, не великими гипер-синьорами, но уверенными миддлами — вполне. Помните, получилось у них — значит получится и у вас :)
Ждем поста "Как выйти из IT"...
(я бы почитал)