Что должен знать junior, middle, senior разработчик: отличия уровней и как расти
Кем ты видишь себя через 5 лет? Рекрутеры и HR-менеджеры не устают задавать это вопрос, а кандидаты продолжают скромно отвечать: middle, senior, team lead.
Но каким путем достичь этих профессиональных уровней? Что нужно сделать, чтобы выбраться из позиции junior и с гордостью написать в LinkedIn middle? И как выглядит дальнейшее карьерное развитие? Чем middle принципиально отличается от senior? Отвечаем на эти вопросы в статье и разбираем ключевые навыки разработчика на каждом этапе.
Как стать junior разработчиком?
Для начала разберемся в терминах. В общем понимании junior — это новичок с минимально необходимым багажом знаний для самостоятельного выполнения задач. Для лучшего понимания поделим junior-специалистов на 4 категории:
- Стажер (trainee) — Это человек, который находится на шаге до того, чтобы стать junior-разработчиком. Trainee уже знают основы языка программирования, однако применять его для решения реальных задач еще не умеют. Каждая задача должна быть разписана пошагово от А до Я. В основном, это стажировка. То есть trainee работает на опыте, но о фиксированной зарплате пока не идет речь.
- Junior-новичок. Это стадия, на которой junior получает первый оффер на фултайм, а вместе с тем свои первые реальные задачи. Такой разработчик имеет достаточно знаний, чтобы выполнять простые задачи без детального описания. Новичок умеет работать с документацией и находить в ней нужную информацию. Главные задачи на этом этапе — «набивать собственные шишки», учиться у опытных коллег и задавать много вопросов..
- Middle junior developer. На этом этапе уже можно покупать футболки с IT-шными приколами. Испытательный срок за плечами, а все процессы командной разработки уже понятны. Теперь этому специалисту можно давать задачу и не контролировать ее выполнение в течение дня. Самостоятельно декомпозировать задачи такой junior еще не умеет, но уже ставит более глубокие и конкретные вопросы.
- Strong junior. Это категория, на которой специалист по техническим навыкам уже middle или очень близкий к нему. Последнее, чего не хватает, — это существенный опыт в решении бизнес-задач.
Как стать middle developer?
Middle — это программист, который, в отличие от junior-специалиста, уже умеет решать свои проблемы самостоятельно. Но старшие коллеги могут помочь, если возникли трудности, с которыми middle не может до конца разобраться без помощи.
Требования к владению технологиями в каждой компании могут отличаться, поэтому мы в общих чертах опишем то, что обычно ожидают от middle-специалистов.
Hard skills
- Понимание технологий, используемых в работе. Middle-специалист должен хорошо разбираться в программе, которую он пишет. Важно понимать, как работают определенные конструкции языка и уметь объяснить это другому человеку простыми словами.
- Проведение code-review. Умение разбираться в чужом коде — прекрасный способ поделиться своим опытом. Кроме того, это позволяет понять общую структуру программы и увидеть места, которые можно улучшить.
- Умение декомпозировать задачи. Обычно программист среднего уровня пишет код дольше, чем junior. Это связано с тем, что опытный специалист сначала должен разбить свою задачу на несколько последовательных этапов и ответить на вопросы, почему план выглядит именно так. В дальнейшем это поможет аргументировать свои решения. Также это тренирует умение разбираться в чужом коде.
- Насмотренность и любопытство. Для того, чтобы принимать правильные решения, необходимо увидеть множество плохих и хороших решений других разработчиков. Специалист среднего уровня (вообще, как и специалист любого уровня) должен быть в контексте всего, что происходит в индустрии: технологии, практики, успехи и неудачи.
- Понимание алгоритмов и того, где их можно применять. Мир программирования меняется очень быстро, но алгоритмы остаются стабильными. Важно понимать причинно-следственные связи работы определенных вещей, а также применять алгоритмы на практике, вместо того, чтобы мучить себя сухим заучиванием.
- Умение писать понятный код. Опытный разработчик всегда пишет простой код, который будет понятен коллегам.
Soft skills
- Самостоятельность
- Умение видеть требования бизнеса
- Понимание конечной цели проекта
- Классные коммуникативные навыки
- Уровень английского Upper-Intermediate и выше
- Умение ясно доносить свои мысли
- Стремление к дальнейшему карьерному росту
Как стать senior разработчиком?
Senior developer — это сильный специалист, который владеет знаниями не только в программировании, но и в смежных областях. Начиная с этого уровня, программист может не только работать самостоятельно, но и вести проекты.
Основное задание senior специалиста — принимать правильные технологические решения в проекте — то есть такие, которые приносят максимальную пользу бизнесу и минимизируют расходы.
Путь к этой позиции долгий и сложный. Опыт — это не то, что всегда можно измерить в годах, но в среднем до уровня старшего можно дойти за 5-7 лет интенсивной работы.
Так что же нужно иметь/знать/уметь перед тем, как подаваться на performance review на этот профессиональный уровень?
- Опыт. Главный показатель опытности — успешно запущенные IT-продукты, которые работают и решают определенную задачу бизнеса.
- Технические навыки. Senior создает и продумывает архитектуру проекта, пишет инструменты для решения задач в разработке и фреймворки, которыми пользуются джуниоры и мидл-специалисты. От senior разработчика требуют не только найти решение, но и убедить в его правильности заказчика и команду.
- Понимание всей картины проекта. Для одной задачи существует множество решений, но именно senior разработчик способен определить, какое является оптимальным в конкретном случае.
- Коммуникативные навыки. Senior программист часто ведет проекты самостоятельно, поэтому очень важно уметь обрабатывать ТЗ (техническое задание) заказчика, задавать правильные вопросы, устанавливать сроки выполнения и строить план работ. Кроме того, работа в команде все еще остается очень важной составляющей. Senior умеет организовать рабочий процесс и не боится таких терминов, как Agile, Scrum и Kanban.
- Навыкиментора и интервьюера. Подбор персонала и обучение новичков часто лежит на плечах senior-разработчика. Опыт позволяет выбрать, какие вопросы ставить, чтобы определить сильные и слабые стороны кандидата, а также как организовать рабочий процесс для тех, кто уже прошел собеседование.
А что дальше? Куди расти senior?
Senior — це dream этап для каждого программиста. Прямо сейчас рекрутеры соревнуются за таких специалистов и делают самые выгодные предложения. На этом уровне можно не беспокоиться, что тебя уволят из-за малейшей ошибки, потому что таких специалистов на рынке мало.
Однако это не повод расслабляться и больше не ставить перед собой целей. Senior программисты, как никто, знают, насколько важно постоянно развиваться, осваивая новые и новые горизонты. Они никогда не ограничиваются одним набором инструментов, потому что в стремлении к оптимизации рабочего процесса так или иначе приходится обращаться к чему-то новому.
Куда может развиваться senior-разработчик?
Техлид (Tech Lead)
Также CTO (Chief Technical/Technology Officer) или CIO (Chief Information Officer). Это специалист, который строит архитектуру для всей команды и является самым сильным разработчиком в команде. Именно техлид выбирает техническое решение задачи: предлагает использовать определенные фреймворки, технологии и библиотеки. В обязанности также входит проверка кода и решение самых сложных или ответственных технических задач.
Тимлид (Team Lead)
Это опытный программист и хороший менеджер одновременно. Основное задание — комбинировать технически грамотные решения с управлением командой.
Проект-менеджер (Project Manager)
Специалист, который координирует проект, организует взаимодействие между отделами, руководителями и заказчиками. В небольшой компании один специалист может объединять в себе роль тимлида и проекта.
IT-архитектор
Разработчик с большим опытом реализации коммерческих проектов, который умеет закладывать архитектуру (каркас) сложной IT-системы. Главная задача IT-архитектора — найти оптимальное решение между потребностями заказчика и возможностями команды.
Можно долго дискутировать о том, сколько времени нужно, чтобы добраться до карьерных вершин. Но у каждого свой темп и свои цели. Неизменным остаётся одно — в IT почти невозможно исчерпать себя и достичь потолка. Постоянное развитие, стремление к крутым проектам, драйвовая команда, амбициозные цели и четкое понимание их воплощения — это и есть план реализации собственного профессионального потенциала.
Если тебе нравится IT сфера и ты только думаешь о карьере в айти, пройди наш профориентационный тест. Узнай, какая специальность подходит именно тебе. Или выбирай один из наших it курсов и успешно расти от Junior до Senior и выше
Что нужно знать Python-разработчику в 2021 году
Здравствуйте! Меня зовут Павел Сушко. Я Senior Python Developer в компании LeverX Group. В 2021 году Python исполнится 30 лет. Согласитесь, серьезная дата. Однако и сегодня есть много вопросов, которые волнуют разработчиков.
В каких сферах Python будет особенно востребован? Сможет ли он стать популярнее Java? Может ли Python-разработчик обойтись без soft skills и реально ли стать идеальным «питонистом»?
Собрал для вас факты и последние новости, которые должен знать каждый Python-разработчик, если хочет оставаться востребованным специалистом в 2021 году.
Актуальность за счет универсальности
«Второй лучший язык программирования» — именно так сегодня о Python говорят в IT-сообществе. И это правда: если вы изучите различные рейтинги, то увидите, что Python занимает в них уверенное второе место. Временами даже выходит на лидирующую позицию, обгоняя C и Java.
Особенным этот язык делает его универсальность. Python можно использовать практически в любой сфере. Его активно применяют в веб-программировании, поскольку он позволяет разработать и запустить веб-приложение в самые короткие сроки, что актуально для стартапов.
Более широкое распространение Python получил в Data Science и Machine Learning. Сейчас есть немало новых библиотек с интерфейсами, которые просты в применении, ускоряют разработку и позволяют Junior-специалистам не знать сложной математики при решении базовых задач.
Язык постоянно развивается и совершенствуется. Если появляется какая-то технология, будьте уверены: новая библиотека на Python не заставит себя долго ждать.
Спрос на специалистов продолжит расти
Сейчас все чаще встает вопрос о том, не превращается ли Python в новый PHP. В свое время PHP был популярен как среди разработчиков, так и среди заказчиков, поэтому не было недостатка ни в вакансиях, ни в кандидатах.
Однако не стоит забывать, что PHP изначально был больше похож на динамический язык разметки. Привычные для языков программирования атрибуты появились в нем позже. Python же с момента своего появления развивался как язык программирования. Это позволяет строить оптимистичные прогнозы о его будущем.
Согласно Bloomberg, за последний год число стартапов выросло на 24,58%, а объемы инвестиций в них достигли отметки в $1,27 млрд, что на 61% больше прошлогодних показателей. Поскольку Python — удобный инструмент для стартапов, такие цифры говорят о росте спроса на Python-специалистов в 2021 году.
Сегодня нет предпосылок к снижению популярности и востребованности Python. Даже когда приходили другие языки (например, Go, который тоже предлагал сочетание простого синтаксиса, низкого порога входа и возможность написания конкурентного работающего кода), они не смогли подвинуть Python с его лидирующих позиций.
Повышение зарплат
Если проанализировать спрос на Python-разработчиков, то становится видно, что он непрерывно растет и за последний год увеличился в два раза. Согласно отчетам Code Platoon, вакансия Python-разработчика в 2020 году занимает первое место как по количеству открытых вакансий, так и по уровню зарплат.
Из анализа рынка, который провел DOU, также видно, что, несмотря на то, что Python в Украине пока не входит в топ-3 языков программирования, интерес к нему постоянно увеличивается. Только за последний год количество Python-разработчиков здесь выросло на 13,2%.
Причина тому проста: большинство гигантов, например Google, Yahoo! и IBM, в своих разработках постоянно используют Python. Спрос на таких специалистов резко вырос и в компаниях Instagram, Reddit, Tumblr, YouTube и Pinterest. Чтобы не отставать от лидеров индустрии, все чаще обращаются к нему и другие компании.
Кроме этого, будет расти и зарплата Python-разработчиков. Для наглядности рассмотрим медианные зарплаты специалистов из Украины, Беларуси и России.
Опираясь на данные сайтов DOU, dev.by и Habr, мы можем проследить, как изменялась заработная плата Python-разработчиков с конца 2018 года по квартал На графике с конца 2019 года четко виден стабильный рост, который наверняка продолжится благодаря интересу к этой специальности.
Востребованный Python-разработчик — какой он
На зарплату любого специалиста влияет множество факторов, и гарантия ее увеличения — постоянное повышение квалификации. Какими же знаниями и навыками должен обладать Python-разработчик?
Синтаксис, базы данных и фреймворки
Необходимый стек знаний зависит от общего уровня специалиста и от задач, которые перед ним поставлены. Однако, помимо общих частей синтаксиса, всегда полезно разбираться в особенностях языка: как он работает с внутренними структурами данных и конкурентной моделью, его возможные пути реализации.
Если говорить о конкретных технологиях, то в веб-разработке вам будет полезно знать фреймворк Django — один из самых больших и функциональных сегодня. Если используете его уже не первый день, необходимо понимать, как работает его ORM (объектно-реляционное отображение).
Можно выбрать фреймворк Flask в связке со SQLAlchemy ORM. Его вряд ли можно назвать альтернативой Django: масштабы не те. Но Flask можно использовать как базу для конструктора, если разработчики не хотят или не могут применить Django. В таких случаях одной из частей конструктора становится именно SQLAlchemy ORM, поскольку реляционные базы данных и сегодня остаются надежным инструментом для работы с back-end, хранения и обработки данных. Их тоже будет полезно знать.
В бэкенд-разработке обычно используется реляционная база данных PostgreSQL. Одно из стандартных решений — MySQL. Стоит также обратить внимание на популярные NoSQL-инструменты, такие как MongoDB и DynamoDB.
Знание и понимание методологий разработки
Методологии разработки, или Agile-методологии, — это совокупность подходов к организации разработки. Сегодня существует множество вариантов их реализации.
Источник: Organize Agile, Consultancy.eu
На графике видно, что самая популярная форма сегодня — Scrum. Согласно статистике, ее использует более 80% компаний. Главная задача — оптимизация и повышение эффективности процессов разработки.
Однако не стоит забывать: ни один из методов не должен сковывать команду. Знание методологий определенно полезно при выстраивании рабочего процесса, но подход к работе должен подстраиваться под команду, а не наоборот.
Английский язык
Большинство представителей Python-комьюнити владеет английским. И даже если кто-то не является носителем этого языка, он все равно создает продукты, выступает с докладами и записывает подкасты на нем. Поэтому ваш английский должен быть хорош хотя бы на уровне восприятия.
Однако не стоит забывать, что любая IT-компания заинтересована в иностранных заказчиках, которые во время работы будут общаться с вами на английском языке. И здесь уже без умения говорить по-английски никак не обойтись. Вы должны уметь объяснить, что, как и зачем делаете. Это существенно сэкономит время вам, вашей команде и клиенту.
Многие IT-компании в качестве бонуса для своих сотрудников предусматривают бесплатные корпоративные курсы английского языка. Обращайте на это внимание во время поисков работы. Это отличная возможность совершенствовать свой уровень.
Soft skills
Первое, что ожидают от любого разработчика, — это умение работать в команде.
Поэтому понятие soft skills (гибкие навыки) включает в себя:
- умение доносить свою мысль;
- умение слышать собеседника;
- спокойное отношение к конструктивной критике;
- умение обсуждать и приходить к оптимальному решению.
Сегодня создать успешный программный продукт в одиночку практически невозможно, поэтому большинство проектов — это командная работа. Здесь без soft skills вам не обойтись. Они нужны каждому Python-специалисту для максимально эффективного взаимодействия с коллегами.
В целом в IT-индустрии нет предела совершенству, потому что эта сфера меняется каждый день и мотивирует постоянно учиться и оттачивать профессиональные навыки. В таких условиях сложно достичь идеала, ведь идеал — это «потолок», выше которого подняться уже нельзя. Но тот стек знаний, который я описал выше, в сочетании с soft skills точно поможет вам стать востребованным специалистом.
Что нужно знать в разрезе специализаций
Python — язык универсальный, именно поэтому он прижился во многих сферах ІТ.
Веб-разработка
К основным инструментам веб-разработки относятся Django и Flask. Также сюда стоит добавить популярные сегодня асинхронные фреймворки, начиная с базовой библиотеки Asyncio, ее реализации Aiohttp и заканчивая фреймворком FastAPI.
Если при разработке используются асинхронные фреймворки, то в качестве ORM снова выступает SQLAlchemy с асинхронными адаптерами для базы данных.
На сайте Real Python можно найти много полезной информации как о популярных фреймворках, так и о веб-разработке на Python в целом.
Data Science
Здесь вам пригодится базовый инструментарий — библиотеки pandas и NumPy, Jupyter Notebook. Если решили уйти в Machine Learning, обратите внимание на библиотеки Scikit-learn или более сложные PyTorch и Keras. Последняя — враппер над TensorFlow — популярной библиотекой от Google.
Более подробно о базовом инструментарии для Data Science можно узнать здесь. Есть и руководство для специалистов в области Machine Learning.
На сайте Coursera есть хороший курс от компании «Яндекс». Также можно попробовать свои силы на курсе Data Scientist with Python.
DevOps Engineering
Python также применяется в различных DevOps-приложениях. Одни из самых известных оркестраторов — Ansible и Fabric, которые стоит взять на заметку веб- и бэкенд-разработчикам, поскольку идеология DevOps подразумевает единство знаний о разработке и доставке кода.
Automation QA Engineer
Python может выступить и в качестве скриптового языка, который поможет автоматизировать проверку качества. Для этой цели в нем есть различные библиотеки, например враппер над Selenium, который тестирует и проверяет графические интерфейсы.
Для пополнения знаний о тестировании на Python можно изучить подкаст Test & Code.
Инструменты, которые важно знать всем Python-разработчикам
Существуют инструменты, которые с языком программирования либо никак не связаны, либо связаны частично. В первую очередь это система контроля версий Git.
Важно знать и интегрированные системы разработки. Одно из самых популярных коммерческих решений на рынке — PyCharm, но всегда можно найти альтернативу, например Visual Studio Code.
Не стоит забывать о важности инструментов для контроля качества кода. Это статические анализаторы кода, анализаторы типов, юнит-тестирование. Python-комьюнити предоставило много хороших вариантов для этих задач, например PyTest.
От Junior до Senior: как стать опытным специалистом
Чтобы подготовиться к интервью, можно заранее изучить список вопросов, но без опыта и знаний все равно не обойтись, а они не возникают в нашей голове по щелчку пальцев. Для всего нужно время.
Junior
Если вы новичок и пришли на собеседование, от вас будут ждать знания синтаксиса языка и понимания его особенностей; основные принципы работы с тем фреймворком, который необходим для проекта: это и настройка, и базовые структуры. И, конечно же, умение пользоваться своим собственным инструментом. Это начальные знания Gitflow или умения работы с ветками в Git.
Если вы начинаете свой путь в веб-разработке, будет плюсом знать, как работает Request-response- и RESTful-архитектура.
Помимо этого, даже если вы Junior, не надо забывать о таком понятии, как инженерная культура. Во время написания кода помните о его чистоте и о тех людях, которые тоже будут с ним работать. Вы же не хотите, чтобы они потом вспоминали вас плохими словами?
Middle
Middle-разработчик должен хорошо знать свои инструменты — фреймворк и набор его функций, дополнительные библиотеки.
Работа с документацией неизбежна на любом из уровней, но Middle подразумевает, что разработчик при решении базовых задач обращается к ней реже или четко знает, где можно найти необходимую информацию.
Уровень Middle — это также возможность решать определенные бизнес-задачи, например реализация больших фич, самостоятельно либо с минимальным вмешательством со стороны старших коллег.
Senior
Это широкий кругозор, глубокое знание инструментов, их концептуальное понимание и умение принимать глобальные стратегические решения при разработке. Кроме того, возможность быть наставником, то есть вести либо всю команду, либо отдельных разработчиков в правильном направлении.
Если же вы планируете строить карьеру Python-разработчика в США и дорасти там до уровня Senior, полезно будет заранее изучить тамошние требования к специалистам.
Где искать опыт и знания
Накапливать знания можно разными способами: самостоятельно, изучая учебники, видеогайды и подкасты; с помощью ментора, который будет направлять. Но ничто не помогает расти профессионально так, как живой опыт работы на проектах. Вы можете совместить его с занятиями с ментором, чтобы у вас было плечо, на которое можно опереться в случае тупика или ошибки.
Работа на проекте хороша еще и тем, что дает опыт выполнения бизнес-задач. За каждой из них кроется реальная потребность. Как правило, это нетривиальный случай, который подталкивает специалиста к исследовательской работе и стимулирует расширение его кругозора.
Если говорить о теоретической подготовке, то в первую очередь стоит обратиться к официальной документации Python, где содержится хорошее руководство для новичков. Также я бы порекомендовал следующие ресурсы:
Codecademy — платформа с интерактивными курсами, которая подойдет всем новичкам. Вы узнаете о том, как писать код на Python. А также сможете пройти несколько практических уроков.
Automate the Boring Stuff with Python — книга, которая будет полезна и новичку, и опытному разработчику. В каждой главе рассматриваются решения, которые можно автоматизировать с помощью Python.
A Byte of Python — электронная книга для начинающих, благодаря которой удастся разобраться в основах языка.
Essential Reads for Any Python Programmer — сборник советов для разработчиков, которые переходят на Python с других языков.
Google’s Python class — ресурс для тех, кто хочет изучить язык на профессиональном уровне. Он подойдет специалистам, которые уже имеют базовые знания о Python и хотят их расширить. Здесь найдете видеолекции, текстовые материалы и упражнения по коду.
Fluent Python — книга, в которой много интересной информации как о технической стороне реализации языка, так и о встроенных библиотеках.
Python Weekly — еженедельная рассылка с главными новостями из мира Python.
TutsPlus — руководство, которое пригодится и новичкам, и ветеранам Python. Здесь найдете множество ресурсов для изучения языка. Можно даже составить свой учебный план, чтобы точно знать, когда и к какому источнику обратиться.
Что принесет Python-разработчикам 2021 год: прогнозы и ожидания
Из года в год Python-разработчики ждут улучшения производительности языка. С этим ожиданием мы входим и в 2021 год. Даже сам создатель Python в своем Twitter написал, что хотел бы, чтобы язык работал быстрее на любой платформе.
Сюда можно добавить и желание отказаться от работы с GIL (Global interpreter lock), однако это нетривиальная задача, которая вряд ли будет решена в этом году.
В Data Science и Machine Learning останутся в тренде и продолжат двигать процессы разработки вперед. Не станет этот год последним и для веб-разработки, потому что стартапы все еще нуждаются в быстро разработанных прототипах.
Также напомню: в 2020 году закончилась поддержка второй версии Python. К сожалению, не все проекты и даже библиотеки организовали переезд на новую версию. Исходя из этого, вряд ли стоит тратить время на изучение особенностей второй версии, но стоит держать в уме, что, возможно, вам придется перевести продукт, проект или библиотеку на третью, поэтому на всякий случай держите в закладках документацию и руководство о том, как это сделать.
В остальном же в 2021 году Python продолжит давать разработчикам большую свободу выбора в направлениях для развития.
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.
Подобається Сподобалось 16
До обраного В обраному 17
Схожі статті
Рейтинг мов програмування 2022. C# обійшов Java, TypeScript зрівнявся з PHP, а Dart — найбільш комфортна мова
Редакція DOU 14 лютого 2022
Розробка API на Python із Serverless
Mischa 23 серпня 2019
Прогнозування на стороні клієнта за допомогою TensorFlow.js
Matvii Kovtun 5 квітня 2019
42 коментарі
Valentin Nechayev архімаггриб в Дарницькі печери 23.01.2021 10:37
Python давно устарел, потому что не учитывает новые проблемы вследствие резкого торможения прогресса аппаратных возможностей компьютеров.
Принципиальный рост производительности процессоров и объёмов памяти не происходит уже лет 10. Ранее известное правило «закона Мура» (в 2 раза не реже чем каждые 2 года) перестало работать. Оперативная память так и не дешевеет с 2012, колеблясь вверх-вниз в 2 раза). Как на это всё реагирует Питон? А никак — всё та же тупая интерпретация, заставляя процессор делать на 1% нужной работы 99% бессмысленной, потери памяти на всякие дескрипторы, и прочая и прочая.
Для сравнения, даже для более кошмарного Javascript, для конкурирующего Ruby — есть качественный JIT. Для новых языков-конкурентов — Nim, Julia. — или компиляция изначально, или обязательный JIT. Для Python есть только PyPy, который JITит не целевую программу, а собственный интерпретатор(!), давая, конечно, рост раза в 3 на задачах стиля «веб-сервер» / «сервер текстового взаимодействия», но это копейки по сравнению с возможным. И не надо вспоминать NumPy с компанией, или частные затычки вроде Cython и Numba — там, где они что-то дают, другой язык дал бы ещё больше.
Качество поддержки разработчика у Питона тоже ниже плинтуса. Во всех нормальных языках давно есть, например, требование предопределения используемых переменных. В Питоне описка в названии далеко не всегда ловится даже статическими анализаторами — а интерпретатору тем более пофиг, пока не взорвётся уже при работе. Динамическая типизация — интерпретатору никогда заранее не известен тип данного и нельзя устранить проверку этого типа (дорого, неэффективно). Огромное количество проблем, которые даже в Javascript ловятся всякими strict mode при парсинге, в Python могут быть отловлены только тестами. При одинаковых задачах, эффективность разработчика на Python в разы ниже разработчика на другом аналогичном языке. Статические анализаторы слабы и ловят единицы процентов проблем.
Использование языка, который принципиально делает всё, чтобы не компилироваться — становится преступлением против цивилизации и экологии. Я обычно скептичен по отношению к подобным плачам, но Питон — отличная мишень для Греты Тунберг, надо подумать подсказать ей.
Главное, что надо знать Python-разработчику в 2021 — это слинять на что-то другое, пока его не начали бить те, кому нечем платить за электричество, сожранное неэффективным сервером. Тех же, кто предлагает его учить — надо самих «учить» уже сейчас.
PS: я сейчас пишу на Python. Вынужденно. Но я знаю и говорю, что это плохо.
причем, вот второй массовый — php, но над которым работают, в том числе и над интерпретатором:
синтетические тесты
benchmarksgame-team.pages.debian.net/. /fastest/php-python3.html
показывают что и между интерпретаторами — есть разница.
о всех нормальных языках давно есть, например, требование предопределения используемых переменных
это да, пусть и динамическая типизация — но не хватает объявления и пыху.
и нельзя устранить проверку этого типа
по идее, должны бы появляться синтаксические конструкции, прагмы, указывающие интерпретатору что вот этой переменной тип известен
но думаю есть там сложности
эффективность разработчика на Python в разы ниже разработчика на другом аналогичном языке
а тут — зависит от размера проекта, дисциплины на нем, и архитектурных принципов.
Огромное количество проблем, которые даже в Javascript ловятся всякими strict mode при парсинге
мое мнение — ЯП должен быть гибридным — когда надо — можно указать тип, для статической проверки типа, когда не надо — var, val, any, mixed тип
php двигается в эту сторону
www.php.net/. ge.types.declarations.php
и прагма
//declare(strict_types=1);
если надо отключить попытки автоприведения типов
не надо — не используй, ляпай код на пыхе как раньше
надо, серьезный проект и подход — врубай, и пусть вебремесленники как-то попавшие в команду взвоют 🙂
Python как понимаю — пока не особо развивается в этом направлении: требований промышленной разработки ПО
Valentin Nechayev архімаггриб в Дарницькі печери 23.01.2021 11:59
показывают что и между интерпретаторами — есть разница.
У PHP, насколько я знаю, есть JIT. Видимо, он и влияет. Интересно с этой точки зрения увидеть бы сравнение с PyPy.
по идее, должны бы появляться синтаксические конструкции, прагмы, указывающие интерпретатору что вот этой переменной тип известен
но думаю есть там сложности
Оно уже есть — пишется в духе
def foo(x: int, y: list)
a: str = «goodbye cruel world»
но не хватает воли дать хотя бы на уровне модуля или функции потребовать обязательности объявления (как было implicit none в Фортране).
мое мнение — ЯП должен быть гибридным — когда надо — можно указать тип, для статической проверки типа, когда не надо — var, val, any, mixed тип
ну и типы variant, где требуется явная динамика. Хотя, естественно, var x: int = 2 лучше (это менее важный тут вопрос, но стиль объявлений C слишком чреват боком).
Python как понимаю — пока не особо развивается в этом направлении: требований промышленной разработки ПО
Да, и это становится сильнейшим недостатком.
Что должен знать Python-разработчик
Python — сейчас один из популярных языков программирования. Язык Python входит в тройку самых популярных и востребованных языков. Объясняется это его универсальностью и простотой синтаксиса. Что нужно знать, чтобы устроиться на позиции Junior, Middle и Senior размером ниже.
Python-разработчик — специалист, который применяет в работе многоуровневый язык программирования. Язык отличается минимальным
набором символов и очень прост для изучения и использования. В силу своей универсальности язык Python позволяет выполнять различную работу: писать различные плагины и скрипты, разрабатывать игры, онлайн-сервисы, мобильные приложения.
Python-программист занимается следующим:
• Работает с сетевыми протоколами HTTP и HTTPS;
• Пишет программное обеспечение (парсер) для сбора и структурирования данных;
• Пишет новые парсеры для сбора данных с различных сайтов;
• Создаёт вычислительные программы;
• Администрирует работу парсеров;
• Настраивает отдачу данных в модуль машинного обучения;
• Правит написанные ранее парсеры при изменении данных;
• Создаёт многопоточные приложения;
• Использует систему контроля версий.
60% Data analysis
55% Web development
44% DevOps / System administration / Automation scripts
39% Machine learning
34% Programming of web parsers
32% Software testing
28% Educational purposes
27% Software prototyping
20% Network programming
19% Desktop development
11% Computer graphics
7% Game development
5% Mobile development
3% Multimedia applications development
Other
Что должен знать Python-разработчик
Python — один из популярных языков программирования. По данным популярного среди программистов ресурса Stackoverflow, Python входит в тройку самых популярных и востребованных языков на протяжении 5 последних лет. Это объясняется его универсальностью и простотой синтаксиса.
В статье мы разберем кто такой Python-разработчик, что он делает и чем занимается, что нужно знать, чтобы устроиться на позиции Junior, Middle и Senior.
Python-программист: кто это и чем занимается
Python-разработчик — специалист, который применяет в работе многоуровневый язык программирования Python. Язык отличается минимальным набором символов и прост для изучения и использования относительно других языков. В силу универсальности позволяет выполнять различную работу: писать плагины и скрипты, разрабатывать игры, мобильные приложения, онлайн-сервисы, сопровождать ПО.
Python-программист занимается следующим:
- Создаёт вычислительные программы;
- Работает с сетевыми протоколами HTTP и HTTPS;
- Пишет программное обеспечение (парсер) для сбора и структурирования данных;
- Пишет новые парсеры для сбора данных с сайтов;
- Администрирует работу парсеров;
- Правит написанные ранее парсеры при изменении данных;
- Настраивает отдачу данных в модуль машинного обучения;
- Создаёт многопоточные приложения;
- Использует систему контроля версий.
Python — универсальный язык программирования, но наиболее применим в следующих направлениях:
- Веб-разработка. Наиболее популярные web-фреймворки – Django и Flask. Это инструменты облегчающие написание и запуск веб-приложений. Они многое умеют из коробки: есть готовая админ панель, которая играет роль CMS, готовые модули аутентификации и авторизации, упрощенные методы работы с базами данных (ORM), работа с XML и многое другое. Django признан веб-разработчиками как один из наиболее удобных и быстрых способов реализовать идею в жизнь.
- Математические вычисления (анализ и визуализация данных). В Python есть множество библиотек для работы с вычислениями разного характера. Например, matplotlib и seaborn для визуализации данных, NumPy для линейной алгебры, SciPy для научных вычислений. При помощи Python можно в несколько строк кода написать самообучающийся искусственный интеллект или посчитать огромную матрицу. . Код на питоне легко преобразуется в более быстрый C++ , что делает использование языка невероятно удобным, простым и универсальным.
- Машинное обучение (Machine Learning). Набор алгоритмов, которые позволяют определять закономерности. Специалист загружает массив данных — начальные и конечные, затем эти данные проходят через матрицу. С помощью информации о конечных данных получается желаемый результат. Системы могут учиться искать закономерности и принимать решения практически без участия человека.
- Глубокое обучение (Deep Learning). Система методик, которые основываются на обучении представлениям под определённые задачи, а не алгоритмам. Такая сеть представляет собой нейронные связи, аналогичные связям в человеческом мозге. Машинное и глубокое обучение позволяет практически автоматизировать и упростить процесс обработки данных.
- Программное обеспечение. Python отличается простотой и в то же время высокой производительностью, что отлично подходит для работы с программным обеспечением. Кросс-платформенная графическая библиотека tkinter, входящая в стандартную библиотеку Python позволяет реализовать программу под любую операционную систему.
- Автоматизация и написание скриптов. Пишется скрипт, который автоматизирует работу. Используется в случае когда нужно сымитировать поведение приложения в среде окружения. Чтобы не писать одинаковое количество программ, создается один сценарий и с помощью процесса автоматизации прорабатывается..
- Администрирование ОС и локальных сетей. Использование Python совместно с Bash значительно упрощает работу системным администраторам.
Что нужно знать Python-разработчику
Стартовать в любой карьере, в том числе и python-программисту стоит с азов профессии. Итак, давайте для начала разберёмся что должен знать Junior Python-developer (новичок). Потенциальному Python-специалисту следует читать много литературы, уметь быстро находить нужную информацию, а также:
- Представлять что такое операционные системы, для чего они нужны, какие там происходят процессы;
- Знать что такое поток;
- Знать что такое сокеты и для чего они нужны;
- Представлять, как устроен стек протоколов TCP/IP;
- Знать что такое Linux, sh.;
- Знать виртуализацию и все её типы;
- Уметь настраивать онлайн-машины с помощью различных инструментов;
- Работать с GIT(создавать ветки);
- Знать что такое ООП и его функционал;
- Знать что такое MVC и зачем он нужен;
- Понимать асинхронную концепцию программирования;
- Уметь работать с базами данных;
- Работать с nginx (настройка прокси);
- Разбираться в отличиях Python2 от Python3;
- Представлять что такое алгоритм импорта модулей в Python;
- Знать что представляют из себя генераторы и итераторы;
- Понимать что такое GIL и зачем он нужен;
- Разбираться в WSGI и понимать как использовать его в работе.
Окунувшись в новый мир и поняв как много в нём интересного, программисты с новым опытом продолжают свой карьерный путь. Далее, рассмотрим список того, что должен знать python-разработчик в среднем, по мнению работодателей (в дополнение к предыдущим требованиям):
- Умело использовать сам язык, библиотеки, его синтаксис, веб-фреймворки (Django и Flask);
- Знать принципы работы с базами данных, алгоритмами и SQL;
- Английский язык, потому что команды в Python пишутся на этом языке;
- Знать и уметь использовать в работе системы контроля версий (Git);
- Понимать управление пакетами (версии, зависимости) в дистрибутиве и окружении Python;
- Уметь тестировать код, работать с непрерывной интеграцией;
- Знать опции развёртывания кода;
- Реализовывать все уровни стека (проекта);
- Работать с библиотеками для распределения и обработки данных;
- Уметь работать в команде на уровне кода: писать читаемый код, анализировать код своих коллег (code-review);
- Знать методологию разработки.
Вместе с этими навыками специалисту необходимы такие личные качества как усидчивость, трудолюбие, аналитический склад ума и умение работать в команде.
Зарегистрируйтесь на Портале
и получите красивый адрес своей странички вида: senior.ua/sergey.ivanov