Connect with us

Карьера

Python-разработчик: скиллы, обязанности, требуемый опыт

Чек-лист по крепкому мидлу

В ответ на знаменитое изречение Германа Грефа о невостребованности программистов, сказанное им еще в далеком 2017 году, рынок труда, за прошедшие годы, отреагировал обратно пропорционально, показав бурный спрос в области программирования и разработки. Девелоперы всех мастей по-прежнему требуются в огромном количестве и, зачастую, одного знания языка программирования уже недостаточно. Что должен знать и уметь рядовой python-разработчик? Кого рекрутируют в больших компаниях?

Для обзора мы взяли реальную вакансию с сервиса «Мой Круг», где искал разработчика Python…Сбербанк. Да, несмотря на все заявления своего президента, крупнейший банк России по-прежнему хантит разработчиков в свои ряды. Ссылка на вакансию (она уже в архиве) — https://moikrug.ru/vacancies/1000051081

Прямая цитата из вакансии: Команда «Супермаркета данных» ищет Backend разработка портала, основная цель которого – это распространение данных внутри Банка. Данные – это новая нефть. Перед командой стоит амбициозная цель – разработать портал, пользователи которого смогут заказывать данные банка для работы, в режиме self-service.

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

Обязанности

Проработка, прототипирование и разработка архитектурных решений Backend-сервисов и компонент портального решения.

Хорошие backend-программисты в России сейчас на вес золота. Увлекательный мир бэкенда — это архитектура веб-приложений, создание алгоритмов, ядра, API, хайлоад, сверхбыстрые key–value хранилища, асинхронные запросы в PostgreSQL, MapReduce и вот это вот всё. Разрабатывать то, что остается «за кадром» от пользователя, который взаимодействует только с frontend-оболочкой. Здесь нам предлагают писать отдельные компоненты для портального решения.

Анализ требований и выработка технических решений.

Чтобы сформулировать требования к продукту (сервису) необходимо провести некоторую работу: собрать требования и представления о необходимых функциональных возможностях. Анализ требований — часть процесса разработки программного обеспечения, включающая в себя сбор требований к программному обеспечению (ПО), их систематизацию, выявление взаимосвязей, а также документирование. В общем, навыки инженера и бизнес-аналитика тут будут очень в кассу.

Анализ требований включает три типа этапа:

  • Сбор требований — анализ области программного решения, общение с пользователями (клиентами) на предмет их требований к продукту
  • Анализ требований — логическое обоснование этих требований: являются ли собранные требования неясными, неполными, неоднозначными или противоречащими
  • Документирование требований — они могут быть задокументированы в различных формах, таких как простое описание, сценарии использования, пользовательские истории, или спецификации процессов.

Выработка технического решения может происходить в нескольких вариациях, где определяются слабые и сильные стороны каждого из них:

  • Пользовательские истории (User stories);
  • Критерии приемки (Acceptance criteria);
  • Моделирование данных (Data modelling);
  • Мозговой штурм (Brainstorming);
  • Ментальные карты (Mind mapping).

Оценка ресурсов и сроков выполнения задач в рамках своего участка работ.

Оценивать собственные силы и следить за дедлайнами — это даже не про программирование. Обычный тайм-менеджмент, который должен быть знаком каждому сотруднику в IT-компании. Возможны кранчи.

Участие в разработке архитектуры сервиса и проектировании баз данных, анализ разработанного кода.

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

Рефакторинг существующего кода, проведение code review.

Рефакторинг — неотъемлемая часть работы любого программиста, не только пишущего на Python, не только в Сбербанке. Рефакторинг — это, в первую очередь, превращение грязного кода в чистый. Зачастую, это неблагодарная работа — долго (написание тестов), муторно (встречаются legacy-системы), не всегда успешно (угадывать мысли предыдущего разработчика то еще развлечение). Однако, очищение кода (без написания нового функционала) — это постоянная практика в любом проекте.

Код ревью — инспекция написанного вами кода специальным человеком — рецензентом. Код отправляется ему на ревью и уже по решению рецензента (их может быть много) принимается решение включать ли данный код в «боевую» версию продукта. Подобный сценарий позволяет лучше анализировать код и снизить риски для общей кодовой базы проекта. Поэтому чистота кода так важна в таких серьезных проектах.

Внедрение новых технологий, инструментов и методов разработки.

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

Требуемый опыт

Опыт разработки Backend (Python) приложений от 3-х лет.

Здесь всё очевидно, ведь попасть в Сбербанк без экспириенса очень сложно, если вообще возможно. В целом, на отечественном рынке труда доминируют вакансии с middle и senior/lead-уровнями — джуниорам, порой, найти работу очень сложно. В данном случае, 3 года — это довольно много. В «Моем круге» гораздо больше вакансий, где просят всего от одного.

Опыт разработки различных API (REST).

Вряд ли стоит объяснять разработчику, претендующему на такую должность стоит объяснять, что такое API. Application Programming Interface — набор процедур и функций, позволяющий другим приложениям использовать данные вашего с помощью специальных запросов (в случае с Python используется JSON). Все крупные  компании уже давно публикуют свои сервисы для внешнего пользования, для интеграции с партнерами и для автоматизации бизнес-процессов

REST — (REpresentational State Transfer) — это принципы взаимодействия клиента и сервера через протокол HTTP. Такая архитектура позволяет создать удобное взаимодействие, обработку и передачу информации сервером по запросу клиента, который может быть приложением или веб-сайтом.

В чем плюс использования архитектуры REST (очень хороший и объемный материал по REST можно почитать здесь)

  • Масштабируемость взаимодействия компонентов системы (приложения)
  • Общность интерфейсов
  • Независимое внедрение компонентов
  • Промежуточные компоненты, снижающие задержку, усиливающие безопасность

Хорошее знание и опыт разработки на Full Stack Frameworks (Django, Node.js, Spring-boot).

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

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

Опыт разработки решений для полнотекстового поиска (Elasticsearch, Solr).

Полнотекстовый поиск — это когда ваш поисковик может искать требуемый запрос не только по его названию, но и по содержимому в документах/файлах,  с учетом морфологии языка или поиск по geo координатам. Вам предлагается повышать производительность поиска с помощью платформ Elasticsearch (используется Гитхабом) и Apache Solr. Первая, кстати, написана на с помощью JSON REST API, которую мы упоминали выше.

Опыт работы с реляционными БД (Oracle DB, PostgreSQL, MySQL).

Работа с СУБД — один из важнейших скиллов программиста. Синтаксис, подключение, классы-посредники (используется фреймворком Django), подстановка значений в запрос, привязка к объекту cursor, перебор данных — уметь нужно много.

Опыт разработки интеграционных решений на основе API.

Как мы уже выяснили выше, API — программный интерфейс, отдающий свой функционал (модуль, библиотека, данные) для других, сторонних приложений и сервисов. Ваша задача будет состоять в разработке таких интеграционных решений. Они должны объединять ваш продукт и другие бизнес-приложения, создавать сквозные процессы и новые коммуникации.

Опыт разработки распределенных решений в концепции микросервисной архитектуры.

Микросервисная архитектура (MSA, Micro Service Architecture) — сервис-ориентированная архитектура разработки в основе которой лежат микросервисы, где каждый из них работает в собственном процессе и слабо связанных между собой (независимы друг от друга настолько, что могут быть написаны на разных языках). Один такой сервис максимально сфокусирован: один сервис — одна задача. Такая архитектура применяется для масштабирования и распределения бизнес-задач программного продукта.

Опыт работы с ПО для работы команд разработки: Git, Jira, Confluence.

Связка Jira + Confluence часто используется в относительно больших проектах. Такая коллаборация позволяет структурировать документы и материалы проекта, информировать участников о каком-либо событии, создавать и распределять задачи. Confluence позволяет создать внутренний интранет-портал на основе wiki-движка с распределением прав (read only, редактирование и т.п.). Confluence хвалят в т.ч. за богатые возможности форматирования, необходимые для того чтобы сделать страничку красивой и легко читаемой.

Jira изначально создавалась для отработки запросов на обслуживание и для удобства траблшутинга (техническая поддержка). Со временем проект перерос в полноценную платформу для организации процессов и ведения разработки. Именно с её помощью можно контролировать поручения и отслеживать исполнение задач программистами.

Опыт работы в Agile командах.

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

Каков ИТОГ?

В конкретной вакансии набор требованию к middle-программисту достаточно широк — если вы только что закончили курсы на Geekbrains, то вам точно не видать этой работы. Установленная планка опыта работы в три года говорит о том, что необходимо серьезно поднатореть во всех аспектах своей работы — это требует времени.

Click to comment

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Телефон не заряжается. Что делать?

Гаджеты

Wink Интерактивное ТВ на Android: Настройка, цена, решение проблем

Телевидение

Расшифровка SMART у HDD. Как читать ошибки жесткого диска?

Гаджеты

Интерфейс на Python: пишем с помощью PyQt

Обучение



  • Яндекс.Метрика

Карьера, тренды, диджитал, образование, разработка, DevOps

Connect