---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов. " /> ---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов. " />

Портал издательского дома "ПОЛОЖЕВЕЦ и ПАРТНЕРЫ"
---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов.

О портале Каталог профессий

Python/Django-разработчик

Популярность языка Python растет благодаря легкости изучения и развертывания приложений, отмечают составители рейтинга Tiobe.
    Этот язык программирования широко используется как для обучения, так и для решения реальных задач впромышленности и других отраслях. Соответственно, требуются кадры для разработки, в частности для Python/Django. Мы обратились к представителям компаний, чтобы выяснить, каких кандидатов они видят на этой позиции.

    1. Какими знаниями и навыками должен обладать разработчик Python/Django?
    2. Каков инструментарий разработчика Python/Django?
    3. Каковы требования компании к уровню образования потенциальных сотрудников?
    4. Какие требования предъявляются к опыту работы?
    5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?


    Дарья Плотникова, Python/Django-разработчик, компания «АО “БАРС Груп”»

    1. Основные знания – о том, как работает Python и Django, понимание работы баз данных, особенностей используемой СУБД. На примере Django – как именно он взаимодействует с СУБД, как транслируются запросы через ORM (object-relational mapping) в SQL-запросы, какие возможности предоставляет конкретная СУБД. Так как мы работаем в бэкенде, нужно уметь работать в консоли и знать основы Linux. Также нужно уметь работать с системами контроля версий, в большинстве случаев это Git, уметь ветвиться, мержить и т.п. Наверно, это такой базовый набор, остальное зависит о конкретной компании, от проектов. И, конечно, важный навык – умение искать информацию.

    2. Любимый редактор кода, Python-утилиты, система контроля версий. На моем примере это PyCharm, pyenv, virtualenv + virtualenvwrapper, Git. Это опять же минимальный набор.

    3. Зависит от политики компании, на предыдущей работе меня даже не спрашивали об образовании, в «БАРС Груп» все же обратили внимание на диплом. Но, как мне кажется, в большинстве компаний образование – не главный критерий выбора кандидата. Так как в ИТ и без профильного образования можно достичь высокого уровня.

    4. Требования к опыту зависят от позиции, на которую претендует кандидат. Если это грейд Junior, то компания понимает, что опыт минимальный. Если middle, то, наверно, это опыт от 1 года. Senior – от 3 лет. Но опять же это все очень условно, зависит от конкретного человека, его навыков и конкретной желаемой позиции. Кто-то может иметь пятилетний опыт, но никак не развиваться, а только выполнять текущие рутинные задачи, а кто-то за два года мог спрогрессировать от новичка до Senior.

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


    Дмитрий Соколов, старший инженер-разработчик Bell Integrator

    1. Python OOP, Django ORM, Django Restframe-work, Diango Toolbar, SQL.

    2. Наша команда использует PyCharm Pro, OracleSQL Developer или Data-Grip, Postman, Git, Docker... + Linux (Ubuntu, Mint).

    3. Таких требований нет.

    4. В проекте нет сотрудников с опытом менее 3 лет... но формально такого требования нет.

    5. В компании ведется работа по долгосрочным проектам, поэтому основные требования – это требования конкретного проекта.


    Виталий Герасимов, Backend developer, Kamtor ltd

    1. Python – достаточно простой и функциональный язык, если вы до этого работали с СИ-подобными языками, то с изучением Python особых проблем не возникнет. По фреймворку Django на первых порах хватит ознакомления сhttps://djbook.ru – там все достаточно подробно расписано.

    2. В плане IDE лично я использую Pycharm, для создания виртуальной среды использую Docker.

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

    4. На интересных вакансиях требуют опыт работы от 2-2,5 года работы с Django/Python 2. Часто требуют показать успешно реализованные проекты от 2-3 штук. Также требуется опыт работы с реляционными СУБД, например PostgreSQL, от 1 года.

    5. Специфических требований в нашей компании нет, но т.к. в большей степени мы работаем над созданием ICO, то во время реализации некоторых проектов нужно понимание работы Blockchain-технологии ну или хотя бы иметь желание в ней разобраться.


    Андрей Юнисов, директор по маркетингу, Bacula Systems

    1. Теми же, что и разработчик на любом другом языке, – алгоритмы и структуры данных, синтаксис и идиомы Python, плюсом к этому должно идти знание фреймворка и популярных батареек. C Django ситуация иногда бывает странной – человек знает фреймворк, а Python – не знает, об алгоритмах особо не слышал. Результат в итоге может огорчить. В любом случае главное – база.

    2. Python и Django. В качестве IDE очень хорош pycharm. Также полезно владеть общими инструментами – pip, virtualenv. Тесты – наше все, поэтому pytest/nose или хотя бы unittest тоже должны в арсенале присутствовать. Сейчас распространен Docker, хотя бы базовое знакомство точно не повредит. CI/CD-системы типа Jenkins или GitLab CI очень ускоряют процесс развертывания и тестирования, опыт работы с ними лишним не будет.

    3. Высшее образование в computer science помогает. Если его нет – проблему решат несколько курсов на Курсере, по алгоритмам и структурам данных. Это исключительно вопрос желания и понимания, зачем это вам нужно.

    4. Хорошо, когда есть хороший релевантный опыт. С одной стороны, начинающего разработчика проще интегрировать в команду, у него нет устоявшихся привычек, но процессы командной разработки должны быть поставлены хорошо, должен быть code review, нужно уметь достаточно хорошо декомпозировать задачи для упрощения контроля, большей прозрачности, минимизации рисков. С другой стороны, разработчик опытный может много полезных практик привнести в команду, но может и не принять правила командной игры. Надо смотреть по ситуации.

    5. Нет.


    Михаил Корнеев, сооснователь сообщества Moscow Python, CTO компании Ingenix.ai

    1. Разработчик Python/Django – это прежде всего backend-разработчик. Он должен понимать, как ус-троен http, как работают базы данных, очереди, кэширование. Разработчик должен быть прежде всего программистом на Python, знание Django идет вторым номером.

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

    2. Как и у любых других разработчиков – текстовый редактор/IDE, система контроля версий, консоль.

    Система контроля версий у нас, как у большинства, наверное, Git. Текстовый редактор/IDE обычно разработчики выбирают под себя, например, я сейчас использую Visual Studio Code и Pycharm.

    3. Я не замечал серьезной связи между образованием и уровнем разработчика. Видел много классных профессионалов, которые учились и развивались самостоятельно. Есть небольшой список дипломов, наличие которых может стать дополнительным плюсом, – МФТИ, Мехмат МГУ, Бауманка, ИТМО.

    4. У человека должны быть сделанные проекты, о которых он может внятно рассказать. Если речь идет о джуниор-разработчике, это могут быть собственные проекты, участие в Open Source и т.д. Я всегда задаю вопросы: «Что нового (технологии, библиотеки, языки) ты изучил за последнее время?» и «Какие интересные технические задачи ты решал в последнее время?». Это показывает, насколько человек увлечен и насколько он понимает, что делает.

    5. Я стараюсь брать людей, которые работали хотя бы с парой фреймворков – не только Django, но и, например, Flask, Falcon, aiohttp, sanic, tornado. Также мы достаточно активно используем системы очередей и NoSQL базы данных, поэтому опыт работы с ними тоже спрашиваю на собеседовании.


    Сергей Матвеенко, Tech Lead, Assaia International AG

    1. Прежде всего разработчик Python/Django должен быть разработчиком Python. Django – лишь одна из технологий, с которыми придется иметь дело. И далеко не всегда Django остается фреймворком, используемым в проекте до конца его жизни. Говоря «разработчик Python/Django», на самом деле имеют в виду «разработчик Python в области веб-разработки с опытом использования Django».

    А исходя из этого разработчик Python в области веб-разработки с опытом использования Django должен:

    • Уметь программировать: ООП, функциональные методы, понимать алгоритмы и паттерны вне зависимости от ЯП, знать различные подходы к тестированию и уметь их применять.
    • Уметь программировать на Python: знать встроенные типы данных и уметь ими пользоваться; знать, какие модули есть в стандартной библиотеке и зачем они нужны; иметь представление, какие популярные сторонние пакеты существуют и в каких случаях их полезно использовать; хорошо бы иметь представление об изменениях в последних версиях Python и документах PEP, в которых они описаны.
    • Знать веб-протоколы и понимать, как они работают и в каких случаях используются: HTTP, HTTP/2, Websockets, SSE и прочее.
    • Иметь опыт использования Django и знать, как используются основные компоненты этого фреймворка: ORM, urls patterns, templates, class based views, authentication, localization и другие.
    • В веб-разработке всегда пригодится умение читать, а лучше и писать, на JavaScript.
    • Знать английский язык на уровне чтения документации.

    2. Как и для любого разработчика в наши дни, часто это IDE, Docker, Docker Compose.

    Как и для любого разработчика Python, это IDE, пакетный менеджер (pip, pipenv, poetry), дебаггер, встроенный в ide или pydb.

    Как и для любого веб-разработчика, это браузер, средства отладки в нем (например, Developer Tools в Chrome), средства отладки RESTFull приложений Postman, Arc.

    3. Это очень сильно зависит от компании. Однако в индустрии ИТ сейчас во всем мире важность уровня образования кандидата идет после его знаний и опыта.

    4. Требования к опыту всегда зависят от уровня позиции. Понятно, что для позиций уровня Junior – это требование практически не актуально. Для Senior/Principal-позиций требуемый уровень опыта может быть выше 5 или даже 7 лет. Но в любом случае опыт, измеряемый в годах, – очень условная характеристика. Показать реальный опыт кандидата призваны собеседования, на которых опытные технические интервьюеры могут достаточно надежно оценить, насколько кандидат удовлетворяет ожиданиям компании.

    5. Встречаются разные варианты. Я видел вакансии с требованием разговорного владения немецким языком, например. Часто компании предпочитают кандидатов с опытом работы в проектах в нужной компании предметной области.

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


    Владимир Колясинский, разработчик платформы Яндекс.Коннект

    1. В Яндекс.Коннект разрабатывают сервисы на нескольких языках: Python, Java, TypeScript, JavaScript, поэтому мы не собеседуем на какой-то конкретный язык. В связи с этим требования знать отлично Python у нас нет. Этому можно научиться в процессе. Необходимо:

    • хорошо разбираться в каком-то языке программирования, если Python, то больше чем Django, понимать asyncio;
    • понимание протоколов TCP, HTTP;
    • стандартные инструменты Python плюс pytest, tox, vcrpy;
    • базы данных (PostgreSQL, MongoDB): индексы, джойны, основы репликации, понимание explain, оптимизация запросов;
    • принципы масштабируемых и отказоустойчивых систем, контейнеризация, Docker.

    2. Из ежедневных инструментов разработчика: командная строка, IDE на выбор разработчика (pycharm, emacs, vim), Git, Docker, ноутбук на выбор разработчика (Mac/Ubuntu/Windows).

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

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

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

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


    Анатолий Бардюков, разработчик в «Яндексе»

    1. Странный вопрос, ведь ответ уже в названии: надо знать Python (в последние пару лет достаточно 3.4+) и желательно понимать Django: это MVC-паттерн, middlewares, приложения и работа с шаблонами.

    Для более полной работы необходимо знать распространенные приложения и библиотеки:

    • архитектура приложения – Django Rest Framework (в некоторых проектах встречается TastyPie, но он уже устарел;
    • DRF – огромный отдельный мир, не меньше самой Django, может сэкономить огромную кучу времени, но и потратить на отладку тоже);
    • работа с БД – Django ORM, sqlalchemy, обертка над Mongo;
    • шаблоны – Jinja2, Django Templates Engine;
    • тестирование – юнит-тестирование, функциональное тестирование – pytest, unittest, встроенные инструменты Django Test, tox, pyresttest, gabbi.

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

    В различных задачах встречается необходимость использовать «батарейки»:

    • sorl-thumbnail – для превью изображений,
    • django-ckeditor – редактор текста для админки,
    • python-social-auth – авторизация через сторонние сервисы.

    2. Я использую PyCharm для разработки; пригождается использование Docker для инкапсуляции окружения.

    Также встречается необходимость использовать агрегаторы батареек для сравнения, что-то вроде сайта Django packages.

    Можно добавить nginx, uwsgi, gunicorn – это скорее инструменты администратора, но их знание пригождается для независимой разработки и отладки.

    3. Обычно, помимо знания самой библиотеки Django, спрашивают понимание построения современной архитектуры веб-проектов, разбитие на микросервисы, использование очередей, кэширование, уровни кэширования, чем отличается REST/GraphQL бэкенд от классического подхода с отрисовкой View/Template.

    Фактически все эти знания можно получить, например, просматривая записи с Highload++ и периодически поделывая проекты на схожих архитектурах, чтобы понимать плюсы и минусы; обязательного требования иметь какое-то высшее образование не встречал.

    4. Опыт с Django нарабатывается достаточно легко, при этом в большом объеме, поэтому имея опыт разработки под Django 2-3 года можно уже претендовать на Senior-позиции.

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


    Жахонгир Рахмонов, Senior Software Developer (Super Dispatch)

    1. Разработчик Python/Django в первую очередь должен обладать знаниями и навыками которые необходимы для всех разработчиков: Data Structures, Algorithms, Design Patterns, Software Principles, Software Architecture и т.п. Только потом Python и Django. Потому что Python/Django – это только инструменты. Без базовых знаний они бесполезны.

    2. Инструменты, которые я использую каждый день: PyCharm, iTerm (zsh), Docker.

    3. Если речь идет об академическом образовании, то никаких требований. Знания важнее всего.

    4. Никаких для стажера, минимум год для Juniora, 3-4 ujlf для мидла и свыше 5-6 лет для сеньора.

    5. В большинстве компаний нет специфических требований. Но будет большим плюсом, если кандидат имеет представление о деятельности компании или об индустрии, в которой работает компания.


    Анатолий Саевский, Project manager/Senior developer в компании Yaws

    1. Необходимы знания структур данных, алгоритмов, ООП, паттернов программирования. Также необходимы знания принципов работы основных ОС, сетевых протоколов, клиент-серверной архитектуры, REST API. Для разработки архитектуры приложений необходимо понимание принципов работы реляционных и нереляционных баз данных, а также навык проектирования архитектуры баз данных, то есть формирования модели данных под разные БД.

    Необходимо понимание, как можно масштабировать веб-приложения, понимание принципов работы DNS, Proxy-северов. Также необходимо понимание способов масштабирования баз данных.

    Плюсом является понимание микросервисной архитектуры приложений. Знание других фреймворков: Tornado, Flusk.

    Также в современных реалиях все важнее становится навык асинхронного программирования, знания генераторов и корутин.

    Важен навык написания UNIT-тестов и проведения code review.

    Необходим навык работы с Linux и базового конфигурирования основных элементов веб-приложения: веб-сервера, базы данных, cron, uwsgi.

    Важен навык оптимизации работы кода, профилирования времени выполнения кода.

    2. Инструменты разработки: IDE, debuggers, консоль Linux, системы контроля версий (Git, SVN), системы bug tracking, agile board.

    Базы данных и поисковые движки: PostgreSQL, MySQL, MongoDB, Redis, Memcached, Cassandra, Elasticsearch.

    Брокеры сообщений: Kafka, RabbitMQ

    3. Уровень образования значения не имеет, главное – наличие необходимых знаний и навыков, а также наличие четких профессиональных целей.

    4. Необходим опыт разработки архитектуры веб-приложений или отдельных элементов системы, модулей.

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

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


    Владимир Семенов, Team Leader in Cloud Platform Acronis

    1. Если говорить о Python, то мы требуем уверенного знания языка и уверенного опыта работы с ним, а Django мы, в силу сложившихся традиций, не используем вовсе. Конечно же, чтобы прийти в нашу команду, не требуется знать полностью всю низкоуровневую изнанку Python, однако хорошее понимание принципов работы и внутреннего устройства языка, конечно же, будет несомненным плюсом. Кроме этого, для нас важен общий уровень разработчика, его способность решать нестандартные задачи. Так что самым первым испытанием для будущего разработчика в нашу команду будет относительно небольшой тест на знание синтаксиса и всяких тонких особенностей Python.

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

    2. В Acronis команда разработки работает на ноутбуках, что открывает возможности для удаленной работы или работы «на ходу», когда это удобнее для сотрудника. Мы используем либо OSX, либо Linux. Выбор опять же зависит от пристрастий самого сотрудника. В качестве среды разработки в Acronis применяются продукты JetBrains, в частности, для Python – это PyCharm, для языка Go, который мы также активно используем, – GoLand.

    Что касается интерфейсов для СУБД или других компонентов, их выбор остается за разработчиком, так как для разных задач и ситуаций лучше подходят различные инструменты.

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

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

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

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


    Подготовил Игорь Штомпель


     
    Проект Издательского дома "Положевец и Партнеры"

    По вопросам партнерства обращайтесь по электронной почте chooseit@samag.ru

    Телефон: +7 499 277-12-45