Направо пойдёшь — тестировщиком станешь, налево пойдёшь — ˂...˃: куда податься питонисту?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр!

В этой статье поговорим о том, какие перспективы есть у питониста и куда ему можно податься.

Кому может быть полезна статья?

  1. тем, кто сейчас активно изучает Python — вы можете добиться большего, если выберете конкретное направление, связанное с питоном, и не будете распыляться на всё подряд

  2. тем, кто наслышался "войти в айти" — посмотрите на реальные занятия, которые ждут, например, питониста и ответьте: «Надо ли вам оно?»

  3. тем, кто уже давно в теме и пишет питонячий код, но хочется попробовать чего-то другого примерно с тем же стеком

  4. ну и ещё неопределённому кругу лиц

Attention: не стоит слепо поклоняться языкам или отдельным технологиям, как замечательно сказано в этой хабростатье. Программист — это чел, который повелевает технологиям, его воле повинуются и плюсы, и питон, и всеми любимый раст. Это я к тому, что не стоит превозносить Python и пытаться пихать его везде — в некоторых местах его нужно без сожаления выкинуть и заменить на более подходящий ЯП. Истина проста: «Не существует идеального ЯП, который покроет все задачи». Не нужно натягивать язык на задачу, нужно выбирать оптимальный для решения задачи язык. Или сменить задачу.

Перед тем, как перейти к разбору разных ответвлений, связанных с Python, давайте освежим азы — в них должен ориентироваться любой питонист. Итак, назвался грибом — полезай в кузовок, питонисту нужно знать всё это:

  • типы данных: числа, строки, списки, множества, кортежи

  • циклы while и for, условия, их комбинации

  • функции, область видимости, lambda, рекурсия, декораторы

  • генераторы

  • вычислительная сложность, операции над структурами данных

  • стандартная библиотека

  • работа с ошибками и исключениями, try-except, raise, assert

  • работа с файлами: чтение, запись, сериализация

  • концепции ООП: полиморфизм, наследование, инкапсуляция

Кстати, кто уверен, что хорошо знает питон — эти 2 хабростатьи бросают вам вызов: «100 вопросов для подготовки к собесу Python», «Кандидат сбежал в слезах»

Знание основ Python — это то, что объединяет разные специализации питонистов. Различает же их знание своих библиотек/фреймворков, владение дополнительными инструментами, круг задач и интересов. Ну и не только.

Питонист может работать на самых разных позициях. Мы рассмотрим следующие:

  • тестировщик ПО (QA-инженер)

  • data scientist, аналитик данных

  • ML-инженер

  • разработчик ПО, fullstack-разработчик, инженер ПО

  • системный администратор, DevOps

  • backend-разработчик

Кстати, если вам близка Data Science, для дата-сайнтистов в моём тг-канале есть море годноты — добро пожаловать. А вот отличная подборка каналов по Python, Machine Learning, нейронным сетям и не только.

Тестировщик

Тестировщик, он же QA-инженер (Quality Assurance) — это специалист, который проверяет качество ПО и уровень его соответствия ожидаемым результатам. В своей работе он использует различные инструменты, стратегии тестирования, включается в SCRUM-команды и т.д. Вообще, сфере тестирования очень большая и тестировщики бывают разные: специалисты автоматизированного тестирования, тестировщики СУБД, аналитики тестирования, разработчики-тестировщики, тестировщики-DevOPs и проч. Всё зависит от того, какие скиллы соединяет в себе каждый конкретный специалист.

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

Какие знания/навыки должен иметь тестировщик?

  • опыт технической поддержки — плотное изучение технологий в сжатые сроки, умение понимать проблемы и быстро сопоставлять их с причинами и путями решения + навыки документирования заявок

  • основы программирования — SQL, Python, знание других ЯП не помешает

  • знание методологии Agile, умение встроиться в микро-команды

  • основы Linux

  • основы архитектуры ПК

  • модель OSI и сети (базовое понимание, знание структуры заголовков пакетов и проч.). Практически сразу потребуется свободная работа с утилитой Wireshark

  • инструменты управления тестированием — Bugzilla, Jira или любой другой багтрекер

  • selenium — инструмент для автоматизации действий веб-браузера. Очень популярный инструмент тестирования

  • желательно — понимание стратегий тестирований чёрного, белого, серого ящиков и осознание того, где вы наиболее хорошо применимы как специалист

Также требуется умение проводить тестирование разных видов. Чаще всего ищут кандидатов с навыками функционального тестирования. Другие требования: опыт работы с системой контроля версий Git, умение составлять тест-кейсы.

Простые задачи тестировщика могут выглядеть так:

  • проверить функциональность логина в приложении и написать баг-репорт о найденных ошибках

  • протестировать платёжный сервис в интернет-магазине

  • проверить форму авторизации на сайте (на предмет XSS, SQL-инъекций и похожих штук)

  • понять, почему не работает «Добавить в корзину»: проблема на стороне клиента или сервера?

План действий тестировщика в целом примерно такой:

  • получаешь ПО

  • определяешь необходимый набор тестов

  • находишь косяки/баги

  • фиксишь, пока они не закроются

А это пара примеров свежих вакансий на тестировщика с Хабр.Карьеры:

Хабростатья человека, который начал путь в IT с тестировщика — «Как стать Python-разработчиком с нуля»

Подробнее о работе — «Профессия: тестировщик»

Data scientist, аналитик данных

Вообще, в сфере работы с данными есть довольно много всего. Мы рассмотрим из всех этих направлений 2: дата сайнтист и аналитик данных. В чём же между ними разница?

Успешный аналитик данных должен уметь преобразовать данные в удобный ему формат (если упрощённо). То есть он занимается скорее описательным анализом. Для этого желательно знание языков программирования. Де-факто Python, — впрочем, другие языки тоже могут сгодиться (например, R). Кроме того, данные часто содержатся в специализированных хранилищах и для их извлечения необходимо знать соответствующий язык запросов — например, SQL в случае реляционных баз данных. Для представления результатов своей работы используют BI-инструменты, такие как Tableau или DataLens. Ну и важно знать мат. статистику. Из софтов можно упомянуть коммуникабельность, умение презентовать свои выводы и грамотно объяснять сложные технические концепции людям без соответствующего бэкграунда. Если аналитик сделал важное открытие, но не смог его объяснить или убедить в его важности, толку от него мало. И конечно же, важно внимание к деталям и умение думать вне рамок.

Про дата-сайнтиста. DS-специалист занимается исследованием данных при помощи инструментов языка программирования и машинного обучения. Есть обширный класс задач, которые нецелесообразно поручать аналитику-человеку. Например, когда слишком много входных параметров. Или когда закономерность в данных слишком неочевидна, чтобы сходу сформулировать гипотезу (чем с математической точки зрения изображение котика отличается от изображения пёсика?).

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

В работе с данными аналитику данных или DS-специалисту могут пригодиться такие питоновские либы:

  • NumPy

  • SciPy

  • Pandas

  • StatsModels

  • Matplotlib/Seaborn/Plotly/Bokeh

  • Scikit-Learn

  • PyTorch/Tensorflow

А в решении реальных задач пригодится знание матана, теорвера, статистики, работы с временными рядами. Вот пара вопросов для проверки себя (больше вопросов тут):

Реальные кейсы в сфере Data Science могут выглядеть наподобие (больше кейсов тут)

  • Заказчик — кредитный отдел банка. Нужно разобраться, влияет ли семейное положение и количество детей клиента на факт погашения кредита в срок. Входные данные от банка — статистика о платёжеспособности клиентов. Результаты исследования будут учтены при построении модели кредитного скоринга — специальной системы, которая оценивает способность потенциального заёмщика вернуть кредит банку.

  • Вы аналитик компании «Мегалайн» — федерального оператора сотовой связи. Клиентам предлагают два тарифных плана: «Смарт» и «Ультра». Чтобы скорректировать рекламный бюджет, коммерческий департамент хочет понять, какой тариф приносит больше денег. Вам предстоит сделать предварительный анализ тарифов на небольшой выборке клиентов. В вашем распоряжении данные 500 пользователей «Мегалайна»: кто они, откуда, каким тарифом пользуются, сколько звонков и сообщений каждый отправил за 2018 год. Нужно проанализировать поведение клиентов и сделать вывод — какой тариф лучше.

Интервью с дата-сайнтистом — «Валерий Бабушкин - Data Science, карьерный путь, образование»

Несколько примеров вакансий на Data scientist с Хабр.Карьеры:

Заметки Дата Сайентиста: с чего начать и нужно ли оно?

ML-инженер

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

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

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

Кстати, вот реальный кейс — ML-мидлу сказали разработать приложение, которое:

  1. обрабатывает фото одежды пользователей: очищает фон, улучшает качество изображения, преобразовывает плоское изображение в объемное, распознаёт тип одежды, цвет.

  2. "надевает" одежду самого пользователя (обработанную в п.1) на цифровую модель (фото человека).

  3. "надевает" одежду из интернет-магазинов на цифровую модель.

  4. с учетом параметров пользователя: предпочтений, истории покупок, просмотров, введенных пользователем данных:

    • рекомендует подходящую к одежде пользователя одежду из интернет-магазинов

    • собирает готовые комбинации одежды из вещей самого пользователя

    • осуществляет поиск в интернет-магазинах по картинке

А вот подборка реальных применений Machine Learning. И не где-то там, а самом что ни на есть суровом производстве (полный список тут, есть и зарубежные предприятия):

поиск аномалий:

  • Росатом (Цифрум) — предиктивная аналитика на МСЗ. Иван Максимов [youtube], [medium]

  • Россети (Mail.ru) — разработка ML-решений: от постановки задачи до эксплуатации [youtube]

  • РКЦ «Прогресс» — интеллектуальный мониторинг технического состояния станков [youtube]

определение качества продукции:

  • Микрон и Уралхим (МТС) — как использовать данные на предприятии на примере Микрон и Уралхим. Михаил Матвеев [youtube]

разные другие кейсы:

  • РКЦ «Прогресс» — интеллектуальный мониторинг технического состояния станков [youtube]

  • ГПН — применение алгоритмов ML для подавления шумов по несуммированным сейсмическим данным. Даниил Сёмин [youtube]

  • ГПН (Сколтех) — применение ML для прогнозирования литологии в процессе бурения скважины. Никита Ключников [youtube]

Интервью про работу в сфере ML и нейронных сетей в целом, не с позиции питониста — «Машинное обучение и нейросети / Интервью с техническим директором Яндекс.Дзен»

Как-то вот так выглядят предложения в сфере ML (взято с Хабр.Карьеры):

Разработчик ПО (Software developer)

Alert: тут и далее под разработчиком ПО будем подразумевать Software developer.

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

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

К слову сказать, сейчас всё реже встречаются вакансии на разработку нативных приложений, всё чаще "Python-разработчик" становится синонимом "Бэкенд разработчик на Python". Оно и понятно: веб всё больше проникает в жизнь, постиндустриальная эпоха, все дела.

При этом Python всё же используется для создания нативных приложений. На питоне написаны такие известные десктопные программы, как BitTorrent, Blender и GIMP.

Разработчику ПО важно ориентироваться в следующем:

  • алгоритмы и структуры данных

  • архитектура, шаблоны проектирования

  • базы данных

  • параллельное выполнение и синхронизация работы процессов

  • основы производительности ПО

  • дебаг и логирование

Так выглядят предложения на рынке разработки десктопных/нативных приложений (с Хабр.Карьера):

Интервью «Lead software engineer Python — Юрий Зайцев»

Для Software developer понимание алгоритмов важно, вот неплохая статья в тему — «Пройти LeetCode за год»

С помощью Python и Flutter можно разрабатывать даже мобильные приложения, вот так — «Flutter на Python».

Или можно использовать фреймворк SimpleUI — «SimpleUI для быстрого создания бизнес приложений на Android».

DevOps

Какие навыки нужны? — Основы администрирования Linux, навыки работы с Docker и Kubernetes, Ansible. Ну и знать Python и Bash, работать с системой контроля версий Git.

Изначально DevOps («development and operations» – разработка и эксплуатация) — это методология взаимодействия разработчиков программного обеспечения, с одной стороны, и системных администраторов — с другой.

В целом, DevOps можно рассматривать, как логическое развитие системного администрирования.

DevOps-инженер решает проблему «развёртывания» ПО, т.е. применения новых программ, предоставленных разработчиками, на конкретных серверах клиента. Также он внедряет системы модернизации, обслуживания, мониторинга и тестирования ПО, определяя оптимальный путь к цели и подбирая необходимые средства. DevOps-специалист призван отвечать за стабильность работы всего программного и аппаратного, именно он должен гарантировать отсутствие простоя персонала и 100% доступность всех сервисов, нужных для коммерческой деятельности. Любой простой, любая дыра в безопасности — это потеря времени и денег компанией, а это никому не нравится. И никто не постесняется среагировать на сбой и потрепать нервы админу. Ладно, не будем о грустном, ведь в целом перед DevOps-инженером стоят интересные задачи. Их список постоянно растёт, вместе с этим повышается ценность профессии.

Простые задания для DevOps-инженера могут звучать так (больше заданий тут)

  • описать конфигурацию Nginx, где он будет выполнять роль балансировщика c использованием upstream

  • написать bash скрипт, который будет создавать PostgreSQL бэкап. Для автоматического запуска скрипта создаём запись в Cron

  • написать скрипт, который будет выполнять проверку состояния диска и, если места меньше чем 85%, то высылать алерт на почту. Для отправки писем прямиком из консоли можно использовать ssmtp клиент

  • поднять Kubernetes cluster из трёх нод. Сделать первичную конфигурацию и задеплоить в него контейнер

Кстати, вот так выглядит стек DevOps, если мы говорим про основные инструменты и технологии (pdf-версия):

Интервью с DevOps инженером — «DevOps здорового человека / Все пути ведут в кубернетес / интервью с Дмитрием Столяровым»

Вакансии на DevOps-инженера выглядят как-то так (взято с Хабр.Карьера):

Backend-разработчик

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

В веб-разработку входит фронтенд и бэкенд, на Python можно делать и то, и другое, но сейчас я всё чаще встречаю, когда на питоне делается только бэк, а за фронт отвечает React.

Бэкенд-разработчик — это программист, который отвечает за внутреннюю и вычислительную логику веб-сайта или веб-приложения, а также иного программного обеспечения и информационных систем. Другими словами, бэкендеры разрабатывают всё то, что не видит и напрямую не трогает пользователь.

Например, красивая форма ввода данных или корзина интернет-магазина — это фронтенд, а хранение данных в СУБД, связка полей формы регистрации и корзины, интеграция с платёжным шлюзом, автоматические письма, подгрузка и обновление контента — это всё бэкенд.

Какие скиллы ожидаются от бэкендера?

  • знание Python, раз мы говорим о питонистах. А вообще, в бэкенде смогут найти себя любители массы ЯП, бэкенд делается на: PHP, Go, ASP.NET, C/C++, Ruby, Java

  • понимание азов фронтенда, ведь фронтенд и бэкенд должны образовывать цельный продукт

  • знание SQL для работы с базами данных, умение проектировать БД

  • знание популярных веб-фреймворков (Django, Flask, CherryPy, Pyramid, FastAPI и других ❋)

    некоторые из этих фреймворков морально устарели, но могут встретиться в реальных проектах как легаси

  • понимание работы сети, знание основ сетевой безопасности

  • навыки написания юнит-тестов

  • понимание азов работы серверов Apache, NGINX, IIS и иже с ними

Какие задачи стоят перед бэкендером?

  • интеграции с разными внешними сервисами

  • разработка API

  • создание основной логики работы приложения, его алгоритмов

  • поддерживание корректной вычислительной логики сайта

  • работа с базами данных с помощью СУБД

Кстати, вот неплохой план изучения бэкенд-разработки, о нём рассказывается в этом ролике:

Предложения на рынке в сфере бэкенда таковы (с Хабр.Карьера):

Хабростатья в тему — «Python — серьезный язык для разработки backend»

А вот классный пошаговый туториал — «Практическое руководство по разработке бэкенд-сервиса на Python»

Подробная хабростатья о бэкенде изнутри — «Профессия: бэкенд-разработчик»

Полная дорожная карта, чтобы стать лучшим разработчиком Python в 2024 году

The end

Что ж, на этом всё, мы обсудили несколько важных направлений IT, где один из пунктов в описании вакансии — знание Python. Питонист может работать:

  • тестировщиком ПО

  • в сфере анализа данных

  • как ML-инженер

  • в качестве разработчика нативных/десктопных приложений

  • как DevOps-инженер

  • как бэкенд-разработчик

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

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

Кстати, если вам близка Data Science, для дата-сайнтистов в моём тг-канале есть море годноты — добро пожаловать. А вот отличная подборка каналов по Machine Learning и не только, и ещё. А это полезный канал по Python и Django.

Источник: https://habr.com/ru/articles/785718/


Интересные статьи

Интересные статьи

Примерно раз в десятилетие на русскоязычных около-компьютерных ресурсах кто-нибудь поднимает тему такого элемента архитектуры 8-битной Денди и её прародителей, как «маппер», пытаясь на пальцах объяс...
У Bioshock 2 очень неоднозначное место в истории. С одной стороны, её считают коммерческой поделкой, слепленной без уважения к первоисточнику для паразитировании на успехе культовой игры Кена Леви...
Всем привет! И это мой опыт вхождения в профессию тестировщика через стажировку в Яндексе. Для большего понимания всей картины, я 3,5 года училась в вузе на лингвиста и 4,5 года параллельно работала в...
Давайте представим себе обычного среднестатистического пришельца. Что нам рисует наше воображение при слове «инопланетянин»? Скорее всего, это будет один из двух вариантов...
Когда телескоп не работает, астрономы грустят Многие знают, что в телескоп можно смотреть на солнце как минимум дважды. Но это если телескоп небольшой. В случае нашего БТА, лучик бы, вероятно,...