Путь Python Junior-а в 2020


Оглавление (нажмите, чтобы открыть):

Please verify you are a human

Access to this page has been denied because we believe you are using automation tools to browse the website.

This may happen as a result of the following:

  • Javascript is disabled or blocked by an extension (ad blockers for example)
  • Your browser does not support cookies

Please make sure that Javascript and cookies are enabled on your browser and that you are not blocking them from loading.

Reference ID: #feaac3b0-046a-11ea-a520-e9c79d857e8f

Требования к junior python developer

29.04.2020, 23:18

Подходит ли Python под мои задачи и требования? Плюсы и минусы!
Здравствуйте. Уже очень много времени, я выбираю язык программирования для изучения и.

Каковы фактические требования к Junior Python Developer?
Доброе время суток! Интересует личный опыт людей, получивших работу Junior Python Developer’ом.

Какие требования нужно выполнить, чтобы стать Junior developer, Middle и Senior developer?
Быть может не совсем в ту ветку форума написал, но мне показалось, что здесь я смогу получить.

Уровень программиста (Junior Developer, Middle Developer, Senior Developer), как проверить?
Доброго времени суток. Какие есть тесты для проверки своего уровня программирования(может на хабре.

Какие требования к Junior С#?
Нужен совет! Сл. осенью планирую перебираться в Питер и искать там работу Junior c#, какие.

29.04.2020, 23:37 2 30.04.2020, 00:32 3 30.04.2020, 08:14 4

У меня на работе есть личный помощник. Это девочка Настя. В отличие от меня, Настя москвичка. Ей двадцать два года. Она учится на последнем курсе юридического института. Следующим летом ей писать диплом и сдавать «госы». Без пяти минут дипломированный специалист.

Надо сказать, что работает Настя хорошо и меня почти не подводит. Ну так… Если только мелочи какие-нибудь.

Кроме всего прочего, Настёна является обладательницей прекрасной внешности. Рост: 167−168. Вес: примерно 62−64 кг. Волосы русые, шикарные — коса до пояса. Огромные зелёные глаза. Пухлые губки, милая улыбка. Ножки длинные и стройные. Высокая крупная и, наверняка, упругая грудь. (Не трогал если честно) Плоский животик. Осиная талия. Ну, короче, девочка «ах!». Я сам себе завидую.

Поехали мы вчера с Настей к нашим партнёрам. Я у них ни разу не был, а Настя заезжала пару раз и вызвалась меня проводить. Добирались на метро. И вот, когда мы поднимались на эскалаторе наверх к выходу с Таганской кольцевой, Настя задаёт мне свой первый вопрос:

— Ой… И нафига метро так глубоко строят? Неудобно же и тяжело! Алексей Николаевич, зачем же так глубоко закапываться?
— Ну, видишь ли, Настя, — отвечаю я — у московского метро изначально было двойное назначение. Его планировалось использовать и как городской транспорт и как бомбоубежище.

Настюша недоверчиво ухмыльнулась.

— Бомбоубежище? Глупость какая! Нас что, кто-то собирается бомбить?
— Я тебе больше скажу, Москву уже бомбили…
— Кто?!

Тут я немного опешил. Мне ещё подумалось: «Прикалывается!» Но в Настиных зелёных глазах-озёрах плескалась вся гамма чувств. Недоумение, негодование, недоверие… Вот только иронии и сарказма там точно не было. Её мимика, как бы говорила: «Дядя, ты гонишь!»

— Ну как… Гм… хм… — замялся я на секунду — немцы бомбили Москву… Во время войны. Прилетали их самолёты и сбрасывали бомбы…
— Зачем?!

А, действительно. Зачем? «Сеня, быстренько объясни товарищу, зачем Володька сбрил усы!» Я чувствовал себя как отчим, который на третьем десятке рассказал своей дочери, что взял её из детдома… «Па-а-па! Я что, не род-на-а-а-я-я. »

А между тем Настя продолжала:

-Они нас что, уничтожить хотели?!
-Ну, как бы, да… — хе-хе, а что ещё скажешь?
— Вот сволочи.
-Да … Ужжж!

Мир для Настёны неумолимо переворачивался сегодня своей другой, загадочной стороной. Надо отдать ей должное. Воспринимала она это стойко и даже делала попытки быстрее сорвать с этой неизведанной стороны завесу тайны.

— И что… все люди прятались от бомбёжек в метро?
— Ну, не все… Но многие. Кто-то тут ночевал, а кто-то постоянно находился…
— И в метро бомбы не попадали?
— Нет…
— А зачем они бомбы тогда бросали?
— Не понял…
— Ну, в смысле, вместо того, чтобы бесполезно бросать бомбы, спустились бы в метро и всех перестреляли…

Описать свой шок я всё равно не смогу. Даже пытаться не буду.

— Настя, ну они же немцы! У них наших карточек на метро не было. А там, наверху, турникеты, бабушки дежурные и менты… Их сюда не пропустили просто!
— А-а-а-а… Ну да, понятно — Настя серьёзно и рассудительно покачала своей гривой.

Нет, она что, поверила?! А кто тебя просил шутить в таких серьёзных вопросах?! Надо исправлять ситуацию! И, быстро!

— Настя, я пошутил! На самом деле немцев остановили наши на подступах к Москве и не позволили им войти в город.

Настя просветлела лицом.

— Молодцы наши, да?
— Ага — говорю — реально красавчеги.
— А как же тут, в метро, люди жили?
— Ну не очень, конечно, хорошо… Деревянные нары сколачивали и спали на них. Нары даже на рельсах стояли…
— Не поняла… — вскинулась Настя — а как же поезда тогда ходили?
— Ну, бомбёжки были, в основном, ночью и люди спали на рельсах, а днём нары можно было убрать и снова пустить поезда…
— Кошмар! Они что ж это, совсем с ума сошли, ночью бомбить — негодовала Настёна — это же громко! Как спать то.
— Ну, это же немцы, Настя, у нас же с ними разница во времени…
— Тогда понятно…

Мы уже давно шли поверху. Обошли театр «На Таганке», который для Насти был «вон тем красным домом» и спускались по Земляному валу в сторону Яузы. А я всё не мог поверить, что этот разговор происходит наяву. Какой ужас! Настя… В этой прекрасной головке нет ВООБЩЕ НИЧЕГО. Такого не может быть!

— Мы пришли! — Настя оборвала мои тягостные мысли.
— Ну, Слава Богу!

На обратном пути до метро, я старался не затрагивать в разговоре никаких серьёзных тем. Но, тем ни менее, опять нарвался…

— В следующий отпуск хочу в Прибалтику съездить — мечтала Настя.
— А куда именно?
— Ну, куда-нибудь к морю…
— Так в Литву, Эстонию или Латвию? — уточняю я вопрос.
-.

Похоже, придётся объяснять суть вопроса детальнее.

-Ну, считается, что в Прибалтику входит три страны: Эстония, Литва, Латвия. В какую из них ты хотела поехать?
— Класс! А я думала это одна страна — Прибалтика!

Вот так вот. Одна страна. Страна «Лимония», Страна — «Прибалтика», «Страна Озз»… Какая, нафиг, разница!

— Я туда, где море есть — продолжила мысль Настя.
— Во всех трёх есть…
— Вот блин! Вот как теперь выбирать?
— Ну, не знаю…
— А вы были в Прибалтике?
— Был… В Эстонии.
— Ну и как? Визу хлопотно оформлять?
— Я был там ещё при Советском союзе… тогда мы были одной страной.

Рядом со мной повисла недоумённая пауза. Настя даже остановилась и отстала от меня. Догоняя, она почти прокричала:

-Как это «одной страной»?!
— Вся Прибалтика входила в СССР! Настя, неужели ты этого не знала?!
— Обалдеть! — только и смогла промолвить Настёна

Я же тем временем продолжал бомбить её чистый разум фактами:

— Щас ты вообще офигеешь! Белоруссия, Украина, Молдавия тоже входили в СССР. А ещё Киргизия и Таджикистан, Казахстан и Узбекистан. А ещё Азербайджан, Армения и Грузия!
— Грузия?! Это эти козлы, с которыми война была?!
— Они самые…

Мне уже стало интересно. А есть ли дно в этой глубине незнания?
Есть ли предел на этих белых полях, которые сплошь покрывали мозги моей помощницы? Раньше я думал, что те, кто говорят о том, что молодёжь тупеет на глазах, здорово сгущают краски.
Да моя Настя, это, наверное, идеальный овощ, взращенный по методике Фурсенко. Опытный образец. Прототип человека нового поколения. Да такое даже Задорнову в страшном сне присниться не могло…

— Ну, ты же знаешь, что был СССР, который потом развалился? Ты же в нём ещё родилась!
— Да, знаю… Был какой-то СССР… Потом развалился. Ну, я же не знала, что от него столько земли отвалилось…

Не знаю, много ли ещё шокирующей информации получила бы Настя в этот день, но, к счастью, мы добрели до метро, где и расстались. Настя поехала в налоговую, а я в офис. Я ехал в метро и смотрел на людей вокруг. Множество молодых лиц. Все они младше меня всего-то лет на десять — двенадцать. Неужели они все такие же, как Настя?! Нулевое поколение. Идеальные овощи…
С сайта https://www.inpearls.ru/

Добавлено через 21 минуту
Судя по вашим ошибкам в тексте вам уже не поможет высшее образование!
Во-первых правильно python.
2. Postgresql.
3.Javascript — слитно.
4.Linux.
5.И что для вас значит хорошее знание html4?
И чтобы вы не думали о себе слишком много пройдите хоть 1 лёгкий тест на знание (не говорю о том чтобы получить сертификат). Даже я не могу там его получить. Слишком много технологий изучаю сразу (а надо выбрать 1 и изучить досконально (и пройти по 3-4 круга (выявляя слабые места и исправляя))).
https://myrusakov.ru/tests.html
https://www.quizful.net/test
https://certifications.ru/tests/list/
https://www.brainbench.com/xml/bb/my. metype=default
https://htmlbook.ru/test
https://code.he.net/index.php

Добавлено через 8 минут
Говорите linux знаете? Пройдите курс пожалуйста! https://stepic.org/course/%D0%92%D0%. ux-73/syllabus

Добавлено через 2 минуты
и ещё словосочетание «хотя бы» пишется не через дефис!

Добавлено через 5 минут
Да и ещё у меня нет высшего образования. Не вижу в нём смысла. Курс теоретической механики изучал без всяких институтов и интернета.

Добавлено через 8 минут
Мало чего понял из курса. Зато что-то в мозгу переключилось и решил стать программистом). Успешно!

Как войти в разработку за считанные месяцы (level: junior)

Как джуниору сориентироваться в хитросплетениях IT-индустрии? Какая мотивация лучше всего помогает начинающему программисту не капитулировать перед первыми трудностями? Как эффективнее искать вакансии — через рекрутинговые сервисы или через знакомых? Как пробиваться через «HR-заслон» в компанию мечты? Стараемся ответить на эти вопросы с новым ракурсом, опираясь на личный опыт гостя Moscow Python Podcast — Семёна Осипова, куратора на курсах Learn Python и бэкенд-разработчика X5 Retail Group, чей путь в профессию был стремительным, но вовсе не гладким. Ведущие подкаста — сооснователь MoscowPython Валентин Домбровский, тимлид NVIDIA Злата Обуховская и руководитель программного комитета Moscow Python Conf++ Григорий Петров.

Путь Python Junior-а в 2020

Я решил сделать что-то вроде дорожной карты (Roadmap) для изучения языка Python. Возможно, если найдутся желающие дополнять ее, модифицировать и редактировать, то получится хорошая инструкция. Данная информация полезна тем, кто хочет изучить основы Python.

P.S. за ссылки на курсы, видео о статьи я не получаю ничего. Все ссылки не реферальные.

Почему Я решил это сделать? У меня было много попыток стать разработчиком. История об этом тут: (https://github.com/GnuriaN/Python-Roadmap/blob/master/previous_version/README.md). В итоге я устроился на работу и получил должность Junior Software Developer (2020 год). Но я решил, что нужно продолжать создавать RoadMap и довести его до логического конца. Мой путь не единственно верный, но он мой.

Мои репозитории по обучению

Все свои материалы по обучению из различных репозиториев, я решил скомпоновать в один и поместить как подпапки в Python Roadmap. (жалко, но он очень редко обновляется)
Collection of training lectures

Необходимо установить себе Python

  1. Для этого нужно скачать его с сайта python.org.
  2. Вам нужна IDE для работы. Список основных IDE можно увидеть на Wiki. Так же можно воспользоваться «продвинутыми» текстовыми редакторами. Мой список:
    1. PyCharm. Скачать можно с сайта JetBrains. Можно установить обе версии Professional и Community . Позже я скажу как можно получить/получать лицензию на три месяца.
    2. Visual Studio Code. Скачать можно с официального сайта: code.visualstudio.com.
    3. Sublime Text 3. Скачать можно с официального сайта: sublimetext.com.
    4. Anaconda. Скачать можно с официального сайта: anaconda.com.
      • Немного о составе дистрибутива: anaconda.md

Мои рекомендации:

  1. Всех лучше для изучения подходят дистрибутивы PyCharm и Anaconda.
  2. Для удобства можно устанавливать две версии PyCharm, Professional и Community .

Сделать рабочее окружение

Для создания рабочего окружения лучше всего подходит Python Virtual Environments . Прочитать можно в официальном PEP 405. Документацию можно прочитать на официальном сайте docs.python.org. Хорошая статья на python-script.com. Существуют модули, библиотеки, которые дополняют venv, но это уже сами.

  • Дополнительно: советую обратить внимание на проект PyEnv

Научится делать рабочее окружение в выбранных IDE.

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

Теперь пора учиться

С чего начать учится? Я считаю, что самый простой способ это использовать онлайн курсы. Начинать нужно с простых, а дальше переходить к более сложным.

Начинаем с самого простого.

Возьмем большую шпаргалку по Python 3, распечатаем ее, и повесим или положим на самом видном месте.

Ссылка на файл: mementopython3-russian.pdf P.S. Она висит у меня на рабочем месте до сих пор.

А еще был подкаст «Python Junior» от MoscowPython и LearnPython, его нужно слушать или смотреть. Сейчас это просто подкаст про Python, но смотреть/слушать его нужно.

Так же могу порекомендовать присоедениться к Python комьюнити в вашем городе и к разным информационным каналам.

Telegram:

  1. https://t.me/ru_python — Уютный чат для профессионалов, занимающихся поиском питоньих мудростей.
  2. https://t.me/ru_python_beginners — Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами.
  3. Если вы из Нижнего Новгорода то вы всегда можете постучаться в RANNTS и чатик https://t.me/rannts — это Python Community of Nizhny Novgorod!

1. Программирование на Python

О КУРСЕ: Курс посвящен базовым понятиям и элементам языка программирования Python (операторы, числовые и строковые переменные, списки, условия и циклы). Курс является вводным и наиболее подойдет слушателям, не имеющим опыта написания программ ни на одном из языков программирования.

Рекомендация: Выполняя задания и решая задачи вы можете получить лицензию от JetBrains на три месяца.

Затем продолжим закреплять пройденный материал с помощью следующего курса.

2. Python: основы и применение

О КУРСЕ: Курс посвящен базовым принципам языка Python и программирования в целом. Он хорошо подойдет тем, кто уже может писать простейшие программы на Python или тем, кто до этого программировал на других языках.

Рекомендация: Выполняя задания и решая задачи вы можете получить лицензию от JetBrains на три месяца.

После этого можно проверить, что осталось у нас в голове. Заодно, что-то освежить и немного попрактиковаться. Но перед этим уже пора познакомиться с системой контроля версий GIT.

О КУРСЕ: Система контроля версий Git является стандартом де-факто в деле управления исходным кодом и каждый разработчик должен понимать основы работы с ней. Задачей курса является описание наиболее важных команд и сценариев их использования.

Cсылка: https://stepik.org/course/3145/
Очень рекомендую книгу: ProGit (там же можно найти и версию на других языках)

4. Интерактивный учебник языка Питон

О Курсе: Учитесь, решая серьёзные задачи прямо в браузере. Основные плюсы:

  • Удобный визуализатор
  • Не нужно ничего устанавливать на компьютер: пишите и исполняйте код прямо в браузере
  • Отлаживайте код по шагам и смотрите за значениями переменных
  • Проверяйте правильность решения на разных входных и выходных данных
  • Визуализатор переводит и объясняет ошибки в программах
  • После решения задачи ознакомьтесь с образцовым решением

После этого стоит пройти еще один курс

5. Погружение в Python

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

Зачем? Тут даётся то, что вы еще не проходили и повторение того, что вы уже проходили. К тому же, этот курс — это начало большой программы по специализации. Но перед этим нужно познакомится с Базами данных .

6. Введение в базы данных

О Курсе: Курс введения в базы данных знакомит слушателями с историей создания систем обработки структурированных данных, подходами к обработке информации, развитием моделей данных и систем управления данными. Основу курса составляет изучение и применение в типовых ситуациях средств SQL для обработки данных в SQL-СУБД. Выполнение практических задач в рамках курса предполагает использование СУБД MySQL.

О Курсе: Основу курса составляют изучение и применение языка SQL для создания, модификации объектов баз данных и управления данными в произвольной реляционной базе данных. Выполнение практических задач в рамках курса предполагает использование СУБД My SQL. В курсе рассматриваются этапы проектирования реляционных баз данных, правила составления запросов, основные методы индексирования данных. В курсе будут изучены вопросы использования транзакций и прав доступа к данным. Также курс дает обзор современных тенденций в области науки о данных в связи с появлением BigData. В заключении курса будут показаны сферы применения NoSQL баз данных и указаны современные подходы к обработке big data.

8. Автоматизация тестирования с помощью Selenium и Python

Бонус для автотестеров

О Курсе: Это базовый курс для начинающих тестировщиков, который научит вас писать автоматизированные UI-тесты на языке программирования Python с помощью библиотеки Selenium. А еще мы рассмотрим популярные фреймворки и хорошие практики написания автотестов.

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

Программирование на Python от CSC

Рекомендация: Смотреть все. От начала до конца. Можно и нужно конспектировать то, что вы видите. Это будет очень полезно. В этом видео вы увидите то, что уже проходили, но там вам покажут некоторые нюансы того, как это происходит.

Комментарии: В настоящий момент (осень 2020 г.) на CSC идет новый курс лекций https://compscicenter.ru/courses/python/2020-autumn/ >

Курс информатики на Python 3 от МФТИ

Рекомендация: Смотреть на быстром просмотре. Отмечать интересные моменты и прорабатывать их.

Язык программирования Python от UNEEX

Рекомендация: Смотреть на быстром просмотре. Отмечать интересные моменты и прорабатывать их.

Работа Junior python, вакансии Junior python

1-20 из 7414 результатов

Получать новые вакансии на почту

Junior Actuary

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

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

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Программист Python

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Python разработчик

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Программист ( Junior)

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Junior BM

БЬЮТИЖ РУС (Revlon Professional Brands & Elizabeth Arden)

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Junior Quantitative Researcher

100 000 — 140 000 руб.

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Junior QA

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Программист Python (Junior)

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Разработчик Python (Junior)

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

Говорят, стать Python программистом легко. Правда?

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

Мы запускаем цикл статей в которых подробно расскажем о каждой профессии через опыт людей. В первом выпуске обсуждаем Python-разработчиков. Свои истории рассказали Артем Сухаренко и Данила Лобанов. Они пришли в профессию совсем недавно, но успели набраться опыта в других сферах. А экспертом выступил Алексей Петренко — декан факультета Python в Geekbrains.

Мы поговорили о том, что нужно знать перед обучением, чем хорош и плох язык, что трудного ждет в обучении и на чем стоит сосредоточиться; какие профессии и какая зарплата python-программиста, как готовиться к первым собеседованиям и многое другое.

Для чего учить Python

Артем Сухаренко учился в СибГИУ на кафедре автоматики и информатики. Его специальность была инженерной, но не связанной с программированием. После выпуска Артем устроился работать на завод ЗСМК — один из самых крупных металлургических комбинатов в России

«Я обалдел, насколько там все ужасно», — говорит он, — «Полуразвалившийся советский электропривод, никакой модернизации, специалисты особо не нужны». Долго на заводе он не задержался, но продолжил работать с электрикой дальше. Вырос до ведущего инженера в Сибирьтелекоме, затем переехал из Сибири в Москву и устроился в коммерческий ЦОД, где отвечал за инфраструктуру.

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

«Может быть, я не туда совался, но развития для себя не нашел. Пять лет вуза — просто чтобы крутить провода. Это было так обидно».

Однажды коллега подал Артему идею изучать программирование не для электрики, а чтобы стать Python-разработчиком. Он стал читать книги, пробовать разные задачи, но не решался сменить профессию. «Желание у меня назревало долго. Сначала не давали сменить профессию ипотека, финансовые вопросы, личный страх».

В 36 лет Артем пошел на курсы GeekBrains «Python-разработчик».

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

«Зная Пайтон можно делать много всего — от простейших скриптов до анализа данных и построения нейронных сетей. Но конкретно разработка на Пайтон — это бэкенд для веб-серверов, разработка скрытой части интернета — той, которую не видят обычные пользователи. Сервер, его логику, взаимодействие с базами данных». Все это мы расскажем на наших курсах и ответим на ваш вопрос — «Как стать программистом Python?», говорит Алексей Петренко, декан факультета Python в Geekbrains.

Мастер Йода рекомендует:  ТОП-20 хитрых вопросов по SQL для собеседования

«Думаю, это хороший выбор в качестве первого языка. У него простой синтаксис. Он прощает мелкие ошибки разработчика. У Пайтона низкий порог вхождения, на нем очень легко освоить азы программирования. У него очень большая аудитория и обширная библиотека, плюс много внешних библиотек, которые делают разработчики со всего мира. За счет этого он становится языком, который подойдет для чего угодно».

«Хоть Python и пропагандируется как язык для всего, по факту у него только две сферы применения: всякие data science, ML и прочая математика — и веб-разработка. В этом он меня немного разочаровал», — говорит Данила Лобанов, бывший сисадмин, который недавно стал Python-разработчиком.

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

Данила тесно познакомился с компьютером относительно поздно, примерно в 18 лет. От высшего образования он отказался и почти сразу пошел работать сисадмином. Начинал с самых элементарных задач, потом приступил к изучению Linux и программирования.

«Я попытался изучать С, PHP, Java еще какие-то языки, но не заходило — начинал и бросал. Не мог писать даже простейшие скрипты. Когда я ходил на курсы по С, у меня получалось читать код, но не получалось его писать. Мне давали задачу, я смотрел на нее и не представлял, как делать. Преподаватель садился рядом, писал построчно, объяснял, и я понимал, что именно так и надо было делать. Но мне давали аналогичную задачу, и я снова был в ступоре».

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

«Новичку лучше первым делом разобраться в синтаксисе», — считает Алексей Петренко, — «Только потом стоит думать, куда хочется идти дальше. Чем больше ты учишься, тем больше уходишь от синтаксиса к библиотекам, паттернам проектирования, отдельным шаблонам».

Данила все-таки выбрал Python потому, что язык считался легким. «Синтаксис реально оказался простым», — говорит он, — «Как писать текст на английском языке. Сначала я изучал его самостоятельно по видеоматериалам на Ютубе, по статьям, решал задачи на pythontutor.ru. Но потом понял, что ресурсы в интернете — это только основы и азы. Они доступны всем и везде, и не помогут научиться программированию основательно. Я понял, что надо искать курсы, которые дадут все то же самое, только систематизировано, а потом поведут меня дальше».

Что надо знать перед началом обучения

Перед тем, как серьезно погружаться в изучение языка, Алексей Петренко рекомендует выяснить заранее — а нравится ли программировать вообще. «Я бы советовал попробовать написать несколько программ, пройти бесплатные уроки. Перед началом обучения лучше уже понимать, что такое переменная и как две переменные сложить.

Чтобы курсы не стали бесполезными, поможет только одно — практика. Если только смотреть и слушать, ничего не получится. Для новичка практикой будет даже переписать код, который преподаватель показывает на экране. Переписывать и думать, как он работает.

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

Начать может быть легко, но впереди ждут трудности

Артем продолжал работать электриком днем, а вечерами начал учиться на курсах, несмотря на усталость. «Как и у всех наивных людей, у меня было ожидание магии от курсов. Я пришел не совсем нулевым. Я не мог даже ответить на вопросы: «Python developer — что это?», «Что должен знать программист Python?». В багаже было несколько книг и даже простых сайтиков, в том числе на PHP (грешен, признаю). Я ждал, что на курсах надмозги меня выдрессируют, и я стану волшебником. Реалии оказались другими — там такие же люди, которые просто знают чуть больше».

Артему нравилось на курсах, но не все шло гладко. Программа на тот момент была новая, мало обкатанная и по его впечатлениям сумбурная. О спорных моментах ученики высказывались, давали обратную связь, и недостатки исправлялись на ходу. Один из преподавателей оказался настолько слабым, что его попросили убрать. Но остальные, как вспоминает Артем, были очень сильны.

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

«Все признавали, в том числе сотрудники Geekbrains, что уровни 2 и 3 в программе по Python были одними из самых сложных курсов в университете. Очень много информации в слишком сжатые сроки, очень большие домашние задания. Многие усваивали только часть материала. Я лично два раза переводился в следующий поток. Мы просили облегчить программу, нас спрашивали как, и я предлагал разбить два курса на три. Что-то из этого приняли во внимание и сейчас реализовали».

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

«Преподавать программирование тоже очень сложно. Всем кажется, что раз человек может писать программы, значит может и научить. Это не так. Когда мышление перестроено, и знаешь много всего — уже не можешь вспомнить, каково это — не понимать».

Алексей предупреждает, что Python легкий только в начале. А после легкой базы придется приложить усилия, чтобы освоить более серьезные аспекты — библиотеки и фреймворки. «Если сравнить язык программирования с водоемом, то, например, язык С — это океан. Ты ныряешь с обрыва на огромную глубину, и либо плывешь, либо тонешь. Язык Пайтон — это пляж с чистым песком, где ты можешь далеко зайти, спокойно поплавать, и если понял, что хочешь двигаться дальше — то за красивым пляжем есть огромная впадина, по глубине сопоставимая с С и Java».

«Асинхронное программирование в Python — это мозгодробительная штука», вспоминает Артем. «Мы проходили это как-то поверхностно, и потом даже на собеседованиях, когда по нему спрашивали, я чувствовал, что плыл.

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

Данила же вспоминает модуль select как самое трудное: «Все три потока помнят мою боль с селектами. Есть такой модуль, и он мне прямо очень не давался в свое время. Сейчас-то он для меня простой — я теперь не понимаю, как его можно не понять».

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

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

Чтобы в будущем работать в команде и показывать код кому-то еще, надо знать общепринятые стандарты стиля. В Python они называются «Пепы» (Peps). Я бы советовал читать Pep8 параллельно с изучением синтаксиса. Это соглашение программистов, которые пишут на Пайтоне. Оно рекомендует как правильно писать, а как неправильно.

Несколько лет назад в Python произошло разделение. Был Python 2.7, а потом вышла версия 3. Вторая версия все еще используется, но только в старых фирмах для поддержания легаси-кода. Если устроиться в такую фирму, то изучать Python 2 придется, но я бы рекомендовал учить третью версию. Все современные проекты и сторонние библиотеки пишутся под нее».

Как выдержать первые собеседования

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

«Проект назвался GoLiving. Это что-то вроде AirBnb, только задумка такая: в Америке есть люди, которые часто ездят работать в разные города на непродолжительный период. И они могут между собой меняться жильем с гарантированной страховкой, чтобы точно быть уверенным, что не вернешься в разгромленную квартиру. Сейчас я не знаю, насколько далеко пошел этот ресурс, кажется финансирование приостановили. Но тогда у нас даже были инвесторы».

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

«Под новый год я написал в компанию, которая просто находилась рядом с моим домом. Зашел к ним на сайт, увидел вакансию бэкенд-разработчика и написал им письмо. Говорю, хотел бы у вас поработать, хоть и учился, но знаю немного. Очень интересуюсь и буду развиваться. И меня позвали на собеседование».

«Мой опыт в Geekbrains показывает, что некоторые студенты находят работу, до того как они заканчивают годовой курс обучения», говорит Алексей. «Работодатель хочет видеть у серверного разработчика элементарное умение работать с синтаксисом, знание как работают сайты, как устроен бэкенд, тот же самый набирающий популярность Django. Я бы сюда ещё добавил работу в команде и знания баз данных, потому что любой бэкенд любого сайта неразрывно связан с хранением информации. Требования к python разработчику растут с каждым годом.

Ежемесячно на «Моём круге» открывается порядка 200 вакансий python-разработчиков, вы можете посмотреть самые свежие и подписаться на рассылку о новых вакансиях.

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

И главное не отчаиваться, если первое собеседование оказалось неудачным. Сходя на два-три собеседования заметишь, что вопросы начинают повторяться. И тогда уже сам будешь выбирать, куда устроиться, потому что однажды из трех собеседований пройдешь сразу везде».

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

Алексей же считает, что с такими компаниями стоить быть внимательнее. «Кроме общих вопросов должны быть задачи на написание кода. Даже если на бумаге карандашом — это нормально. Но если ты пришел на собеседование программиста и не получил ни одного вопроса о программировании, то тебя либо собеседовал некомпетентный человек, либо ты будешь заниматься вообще чем-то непрограммистским. Программистов надо проверять на программирование».

«Я считаю, не спрашивать технические вещи — это правильный подход», говорит Данила. «Очень известный в Python-сообществе Григорий Петров тоже говорит, что скилы по программированию (хард скилы) подтянуть всегда можно. Главное сойтись во взглядах на жизнь, чтобы было комфортно вместе работать. Я с ним согласен.

Конечно, навыки программирования важны. Но сейчас я работаю с такими вещами, которых на курсах не преподают. Мне их показали уже на работе, и дальше я разбираюсь сам, читаю документацию, статьи, смотрю примеры — требования ко мне, как к python разработчику постоянно растут. Меня больше настораживают компании, которые дают «нормальные» тестовые задания. Ты смотришь и думаешь — а это правда тестовое или я сейчас бесплатный фрилансер?»

«Собеседование, которое проходил я, расплавило мне мозг еще как», вспоминает Артем. «Когда я вышел, состояние было, как будто иду на автопилоте — так сильно продолжали жужжать мысли».

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


Сначала пошли житейские вопросы, все эти «как себя видишь, как себя чувствуешь». Потом за меня принялся фулстек, погонял меня по Python, по Django. Он прямо на бумаге накидывал примеры и спрашивал по ним. Не сложные, но с подковырками.

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

Честно, даже не ожидал, что мне перезвонят. Тем не менее — получил оффер. Через несколько дней будет первый рабочий день».

Велика ли зарплата Python программиста

Люди идут в ИТ не только по зову души. Это индустрия с одними из самых быстро растущих зарплат в России. И иногда кажется, что зарплаты программистов Python по сравнению со среднестатистическими профессиями отличаются как зарплаты в Москве и в регионах. Тем не менее, ни Артем, ни Данила не шли в эту профессию за богатством. Больше того — они его пока так и не нашли.

«Даже в Москве на начальных позициях программистам предлагают 40-50 тысяч, может даже меньше. В регионах 20 тысяч для джуниора тоже не редкость. Это не такая уж высокооплачиваемая работа, как все утверждают. Да, когда достигаешь уровня синьора, зарплаты python программиста могут переваливать за 200-300 тысяч. Но где таких зарплат нет? Недавно одна такси-компания показала доходы таксистов, которые больше всех заработали. Там 230, 240 тысяч.

На диаграмме зарплат python-разработчиков с разбивкой по квалификациям видно, что медиана для джуна составляет почти 60 000 рублей, тогда как мидл получает уже в среднем чуть больше 100 000 рублей. Зато разница между показателями медиан для сеньора и лида совсем небольшая — 151 000 рублей и 167 000 рублей соответственно.
При построении диаграммы были использованы данные зарплатного калькулятора «Моего круга».

Возможно, в программировании проще дойти до уровня выше среднего, чем во многих других сферах. Но для меня это вообще не было главным. Мне было интересно создавать программы».

«Зарплаты зависят от региона», говорит Алексей, «Кто-то устроится за 40 тысяч как начинающий, кто-то может и сразу на 100 тысяч. Смотря как себя проявить. Если покажешь, что можешь писать не только код, но и разбираешься в архитектуре, можешь набросать схему проекта целиком, всех модулей, сервисов, связей между ними».

Артем же вообще ушел в разработку на меньшую зарплату, чем имел будучи инженером. «В электрике у меня была должность главного инженера, и зарплата была очень хорошая. Я ушел, потому что хочу развития. А в программировании можно развиваться до бесконечности».

Несмотря на то, что в программировании одна из самых четких и понятных градаций по уровню мастерства (джуниор, мидл, синьор) — она все равно остается относительной и постоянно разжигает споры размытостью своих критериев. Споры в духе «ты в компании Х синьор, а в компании Y и джуниором не возьмут» или «пока десять лет не работал — не синьор».

«До уровня мидла можно прокачаться в течение года обучения. Например, в Geekbrains есть обязательные курсы и дополнительное. Все их надо пройти полностью чтобы честно сказать — я прокачался до уровня мидла. То есть, получается год основной программы и ещё полгода параллельных курсов», — считает Алексей, — «А синьор — это человек, у которого есть богатый опыт. Это тот, кто разбирается в разных фреймворках, способен масштабировать задачи, понимать каких ресурсов они требуют. Человек, который не изобретает велосипеды. Кто на собственном опыте разобрался во всех аспектах и нюансах работы.

Если человек через три года работы называет себя синьором — почему бы и нет. Все зависит от фирмы, стремления и навыков. Если человек одаренный и целеустремленный, то я в это поверю. Если он скажет, что знает «Питон», а не «Пайтон», то наверное он все-таки прокололся».

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

Мы запускаем цикл статей в которых подробно расскажем о каждой профессии через опыт людей. В первом выпуске обсуждаем Python-разработчиков. Свои истории рассказали Артем Сухаренко и Данила Лобанов. Они пришли в профессию совсем недавно, но успели набраться опыта в других сферах. А экспертом выступил Алексей Петренко — декан факультета Python в Geekbrains.

Мы поговорили о том, что нужно знать перед обучением, чем хорош и плох язык, что трудного ждет в обучении и на чем стоит сосредоточиться; какие профессии и какая зарплата python-программиста, как готовиться к первым собеседованиям и многое другое.

Для чего учить Python

Артем Сухаренко учился в СибГИУ на кафедре автоматики и информатики. Его специальность была инженерной, но не связанной с программированием. После выпуска Артем устроился работать на завод ЗСМК — один из самых крупных металлургических комбинатов в России

«Я обалдел, насколько там все ужасно», — говорит он, — «Полуразвалившийся советский электропривод, никакой модернизации, специалисты особо не нужны». Долго на заводе он не задержался, но продолжил работать с электрикой дальше. Вырос до ведущего инженера в Сибирьтелекоме, затем переехал из Сибири в Москву и устроился в коммерческий ЦОД, где отвечал за инфраструктуру.

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

«Может быть, я не туда совался, но развития для себя не нашел. Пять лет вуза — просто чтобы крутить провода. Это было так обидно».

Однажды коллега подал Артему идею изучать программирование не для электрики, а чтобы стать Python-разработчиком. Он стал читать книги, пробовать разные задачи, но не решался сменить профессию. «Желание у меня назревало долго. Сначала не давали сменить профессию ипотека, финансовые вопросы, личный страх».

В 36 лет Артем пошел на курсы GeekBrains «Python-разработчик».

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

«Зная Пайтон можно делать много всего — от простейших скриптов до анализа данных и построения нейронных сетей. Но конкретно разработка на Пайтон — это бэкенд для веб-серверов, разработка скрытой части интернета — той, которую не видят обычные пользователи. Сервер, его логику, взаимодействие с базами данных». Все это мы расскажем на наших курсах и ответим на ваш вопрос — «Как стать программистом Python?», говорит Алексей Петренко, декан факультета Python в Geekbrains.

«Думаю, это хороший выбор в качестве первого языка. У него простой синтаксис. Он прощает мелкие ошибки разработчика. У Пайтона низкий порог вхождения, на нем очень легко освоить азы программирования. У него очень большая аудитория и обширная библиотека, плюс много внешних библиотек, которые делают разработчики со всего мира. За счет этого он становится языком, который подойдет для чего угодно».

«Хоть Python и пропагандируется как язык для всего, по факту у него только две сферы применения: всякие data science, ML и прочая математика — и веб-разработка. В этом он меня немного разочаровал», — говорит Данила Лобанов, бывший сисадмин, который недавно стал Python-разработчиком.

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

Данила тесно познакомился с компьютером относительно поздно, примерно в 18 лет. От высшего образования он отказался и почти сразу пошел работать сисадмином. Начинал с самых элементарных задач, потом приступил к изучению Linux и программирования.

«Я попытался изучать С, PHP, Java еще какие-то языки, но не заходило — начинал и бросал. Не мог писать даже простейшие скрипты. Когда я ходил на курсы по С, у меня получалось читать код, но не получалось его писать. Мне давали задачу, я смотрел на нее и не представлял, как делать. Преподаватель садился рядом, писал построчно, объяснял, и я понимал, что именно так и надо было делать. Но мне давали аналогичную задачу, и я снова был в ступоре».

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

«Новичку лучше первым делом разобраться в синтаксисе», — считает Алексей Петренко, — «Только потом стоит думать, куда хочется идти дальше. Чем больше ты учишься, тем больше уходишь от синтаксиса к библиотекам, паттернам проектирования, отдельным шаблонам».

Данила все-таки выбрал Python потому, что язык считался легким. «Синтаксис реально оказался простым», — говорит он, — «Как писать текст на английском языке. Сначала я изучал его самостоятельно по видеоматериалам на Ютубе, по статьям, решал задачи на pythontutor.ru. Но потом понял, что ресурсы в интернете — это только основы и азы. Они доступны всем и везде, и не помогут научиться программированию основательно. Я понял, что надо искать курсы, которые дадут все то же самое, только систематизировано, а потом поведут меня дальше».

Что надо знать перед началом обучения

Перед тем, как серьезно погружаться в изучение языка, Алексей Петренко рекомендует выяснить заранее — а нравится ли программировать вообще. «Я бы советовал попробовать написать несколько программ, пройти бесплатные уроки. Перед началом обучения лучше уже понимать, что такое переменная и как две переменные сложить.

Чтобы курсы не стали бесполезными, поможет только одно — практика. Если только смотреть и слушать, ничего не получится. Для новичка практикой будет даже переписать код, который преподаватель показывает на экране. Переписывать и думать, как он работает.

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

Начать может быть легко, но впереди ждут трудности

Артем продолжал работать электриком днем, а вечерами начал учиться на курсах, несмотря на усталость. «Как и у всех наивных людей, у меня было ожидание магии от курсов. Я пришел не совсем нулевым. Я не мог даже ответить на вопросы: «Python developer — что это?», «Что должен знать программист Python?». В багаже было несколько книг и даже простых сайтиков, в том числе на PHP (грешен, признаю). Я ждал, что на курсах надмозги меня выдрессируют, и я стану волшебником. Реалии оказались другими — там такие же люди, которые просто знают чуть больше».

Артему нравилось на курсах, но не все шло гладко. Программа на тот момент была новая, мало обкатанная и по его впечатлениям сумбурная. О спорных моментах ученики высказывались, давали обратную связь, и недостатки исправлялись на ходу. Один из преподавателей оказался настолько слабым, что его попросили убрать. Но остальные, как вспоминает Артем, были очень сильны.

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

Мастер Йода рекомендует:  Ч1. Как получить максимальный результат от регистрации в каталогах

«Все признавали, в том числе сотрудники Geekbrains, что уровни 2 и 3 в программе по Python были одними из самых сложных курсов в университете. Очень много информации в слишком сжатые сроки, очень большие домашние задания. Многие усваивали только часть материала. Я лично два раза переводился в следующий поток. Мы просили облегчить программу, нас спрашивали как, и я предлагал разбить два курса на три. Что-то из этого приняли во внимание и сейчас реализовали».

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

«Преподавать программирование тоже очень сложно. Всем кажется, что раз человек может писать программы, значит может и научить. Это не так. Когда мышление перестроено, и знаешь много всего — уже не можешь вспомнить, каково это — не понимать».

Алексей предупреждает, что Python легкий только в начале. А после легкой базы придется приложить усилия, чтобы освоить более серьезные аспекты — библиотеки и фреймворки. «Если сравнить язык программирования с водоемом, то, например, язык С — это океан. Ты ныряешь с обрыва на огромную глубину, и либо плывешь, либо тонешь. Язык Пайтон — это пляж с чистым песком, где ты можешь далеко зайти, спокойно поплавать, и если понял, что хочешь двигаться дальше — то за красивым пляжем есть огромная впадина, по глубине сопоставимая с С и Java».

«Асинхронное программирование в Python — это мозгодробительная штука», вспоминает Артем. «Мы проходили это как-то поверхностно, и потом даже на собеседованиях, когда по нему спрашивали, я чувствовал, что плыл.

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

Данила же вспоминает модуль select как самое трудное: «Все три потока помнят мою боль с селектами. Есть такой модуль, и он мне прямо очень не давался в свое время. Сейчас-то он для меня простой — я теперь не понимаю, как его можно не понять».

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

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

Чтобы в будущем работать в команде и показывать код кому-то еще, надо знать общепринятые стандарты стиля. В Python они называются «Пепы» (Peps). Я бы советовал читать Pep8 параллельно с изучением синтаксиса. Это соглашение программистов, которые пишут на Пайтоне. Оно рекомендует как правильно писать, а как неправильно.

Несколько лет назад в Python произошло разделение. Был Python 2.7, а потом вышла версия 3. Вторая версия все еще используется, но только в старых фирмах для поддержания легаси-кода. Если устроиться в такую фирму, то изучать Python 2 придется, но я бы рекомендовал учить третью версию. Все современные проекты и сторонние библиотеки пишутся под нее».

Как выдержать первые собеседования

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

«Проект назвался GoLiving. Это что-то вроде AirBnb, только задумка такая: в Америке есть люди, которые часто ездят работать в разные города на непродолжительный период. И они могут между собой меняться жильем с гарантированной страховкой, чтобы точно быть уверенным, что не вернешься в разгромленную квартиру. Сейчас я не знаю, насколько далеко пошел этот ресурс, кажется финансирование приостановили. Но тогда у нас даже были инвесторы».

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

«Под новый год я написал в компанию, которая просто находилась рядом с моим домом. Зашел к ним на сайт, увидел вакансию бэкенд-разработчика и написал им письмо. Говорю, хотел бы у вас поработать, хоть и учился, но знаю немного. Очень интересуюсь и буду развиваться. И меня позвали на собеседование».

«Мой опыт в Geekbrains показывает, что некоторые студенты находят работу, до того как они заканчивают годовой курс обучения», говорит Алексей. «Работодатель хочет видеть у серверного разработчика элементарное умение работать с синтаксисом, знание как работают сайты, как устроен бэкенд, тот же самый набирающий популярность Django. Я бы сюда ещё добавил работу в команде и знания баз данных, потому что любой бэкенд любого сайта неразрывно связан с хранением информации. Требования к python разработчику растут с каждым годом.

Ежемесячно на «Моём круге» открывается порядка 200 вакансий python-разработчиков, вы можете посмотреть самые свежие и подписаться на рассылку о новых вакансиях.

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

И главное не отчаиваться, если первое собеседование оказалось неудачным. Сходя на два-три собеседования заметишь, что вопросы начинают повторяться. И тогда уже сам будешь выбирать, куда устроиться, потому что однажды из трех собеседований пройдешь сразу везде».

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

Алексей же считает, что с такими компаниями стоить быть внимательнее. «Кроме общих вопросов должны быть задачи на написание кода. Даже если на бумаге карандашом — это нормально. Но если ты пришел на собеседование программиста и не получил ни одного вопроса о программировании, то тебя либо собеседовал некомпетентный человек, либо ты будешь заниматься вообще чем-то непрограммистским. Программистов надо проверять на программирование».

«Я считаю, не спрашивать технические вещи — это правильный подход», говорит Данила. «Очень известный в Python-сообществе Григорий Петров тоже говорит, что скилы по программированию (хард скилы) подтянуть всегда можно. Главное сойтись во взглядах на жизнь, чтобы было комфортно вместе работать. Я с ним согласен.

Конечно, навыки программирования важны. Но сейчас я работаю с такими вещами, которых на курсах не преподают. Мне их показали уже на работе, и дальше я разбираюсь сам, читаю документацию, статьи, смотрю примеры — требования ко мне, как к python разработчику постоянно растут. Меня больше настораживают компании, которые дают «нормальные» тестовые задания. Ты смотришь и думаешь — а это правда тестовое или я сейчас бесплатный фрилансер?»

«Собеседование, которое проходил я, расплавило мне мозг еще как», вспоминает Артем. «Когда я вышел, состояние было, как будто иду на автопилоте — так сильно продолжали жужжать мысли».

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

Сначала пошли житейские вопросы, все эти «как себя видишь, как себя чувствуешь». Потом за меня принялся фулстек, погонял меня по Python, по Django. Он прямо на бумаге накидывал примеры и спрашивал по ним. Не сложные, но с подковырками.

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

Честно, даже не ожидал, что мне перезвонят. Тем не менее — получил оффер. Через несколько дней будет первый рабочий день».

Велика ли зарплата Python программиста

Люди идут в ИТ не только по зову души. Это индустрия с одними из самых быстро растущих зарплат в России. И иногда кажется, что зарплаты программистов Python по сравнению со среднестатистическими профессиями отличаются как зарплаты в Москве и в регионах. Тем не менее, ни Артем, ни Данила не шли в эту профессию за богатством. Больше того — они его пока так и не нашли.

«Даже в Москве на начальных позициях программистам предлагают 40-50 тысяч, может даже меньше. В регионах 20 тысяч для джуниора тоже не редкость. Это не такая уж высокооплачиваемая работа, как все утверждают. Да, когда достигаешь уровня синьора, зарплаты python программиста могут переваливать за 200-300 тысяч. Но где таких зарплат нет? Недавно одна такси-компания показала доходы таксистов, которые больше всех заработали. Там 230, 240 тысяч.

На диаграмме зарплат python-разработчиков с разбивкой по квалификациям видно, что медиана для джуна составляет почти 60 000 рублей, тогда как мидл получает уже в среднем чуть больше 100 000 рублей. Зато разница между показателями медиан для сеньора и лида совсем небольшая — 151 000 рублей и 167 000 рублей соответственно.
При построении диаграммы были использованы данные зарплатного калькулятора «Моего круга».

Возможно, в программировании проще дойти до уровня выше среднего, чем во многих других сферах. Но для меня это вообще не было главным. Мне было интересно создавать программы».

«Зарплаты зависят от региона», говорит Алексей, «Кто-то устроится за 40 тысяч как начинающий, кто-то может и сразу на 100 тысяч. Смотря как себя проявить. Если покажешь, что можешь писать не только код, но и разбираешься в архитектуре, можешь набросать схему проекта целиком, всех модулей, сервисов, связей между ними».

Артем же вообще ушел в разработку на меньшую зарплату, чем имел будучи инженером. «В электрике у меня была должность главного инженера, и зарплата была очень хорошая. Я ушел, потому что хочу развития. А в программировании можно развиваться до бесконечности».

Несмотря на то, что в программировании одна из самых четких и понятных градаций по уровню мастерства (джуниор, мидл, синьор) — она все равно остается относительной и постоянно разжигает споры размытостью своих критериев. Споры в духе «ты в компании Х синьор, а в компании Y и джуниором не возьмут» или «пока десять лет не работал — не синьор».

«До уровня мидла можно прокачаться в течение года обучения. Например, в Geekbrains есть обязательные курсы и дополнительное. Все их надо пройти полностью чтобы честно сказать — я прокачался до уровня мидла. То есть, получается год основной программы и ещё полгода параллельных курсов», — считает Алексей, — «А синьор — это человек, у которого есть богатый опыт. Это тот, кто разбирается в разных фреймворках, способен масштабировать задачи, понимать каких ресурсов они требуют. Человек, который не изобретает велосипеды. Кто на собственном опыте разобрался во всех аспектах и нюансах работы.

Если человек через три года работы называет себя синьором — почему бы и нет. Все зависит от фирмы, стремления и навыков. Если человек одаренный и целеустремленный, то я в это поверю. Если он скажет, что знает «Питон», а не «Пайтон», то наверное он все-таки прокололся».

Публичное собеседование: Junior Python-программист

Сегодня в 19:00 по МСК на youtube-канале Хекслет начнётся публичное собеседование на позицию Python-программиста.

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

Собеседующий — Алексей Пирогов, преподаватель Хекслет.

Публичное собеседование — это формат учебного собеседования в прямом эфире. Кандидат рассказывает о себе, а собеседующий задаёт наводящие вопросы с целью раскрыть навыки кандидата, его hard и soft скиллы, которые понадобятся при приёме на работу.

Примеры других публичных собеседований:

Слушатели собеседования могут задавать вопросы в ходе интервью. Вопросы принимаются в slack-коммьюнити Хекслет на канале #general.

Стать Python Junior

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

На данный момент собран некоторый перечень знаний, который необходим для данной должности. Основной критерий достижение цели — не браться за все сразу.

Git — контроль версий

SSH — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов)

HTTP — протокол прикладного уровня передачи данных

Базовые навыки пользования терминалом

Алгоритмы и структуры данных — основа основ

SQL, базы данных

nginx — веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах

создайте свой профиль

изучайте интересные вам проекты, учитесь читать чужой код, выработайте привычку разбираться в том, как он работает

создайте свой проект с открытым кодом или присоединитесь к уже существующему

основные принципы ООП

императивный и декларативный стили

замыкания и интроспекция

асинхронная концепция программирования

стек протоколов TCP/IP

Python2 vs Python3 — различия синтаксиса

Дескрипторы — очень мощный инструмент в Python. Дескрипторы — это классы, в которых определены методы __get__, __set__ и __delete__

GIL — способ синхронизации потоков

WSGI — стандарт взаимодействия между Python-программой, выполняющейся на стороне сервера, и самим веб-сервером

Программирование на Python: от новичка до профессионала

Пошаговую инструкцию для всех, кто хочет изучить программирование на Python (или программирование вообще), но не знает, как сделать первый шаг, представил сайт proglib.io.

Что делать?

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

  1. Первым делом изучите основы. Узнайте, что такое переменные, управляющие структуры, структуры данных. Эти знания необходимы без привязки к конкретному языку.
  2. Займитесь изучением литературы. Начните с классики – Dive into Python. Эта книга вообще может стать настольной. Еще можно почитать Майкла Доусона «Программируем на Python» и Алексея Васильева «Python на примерах. Практический курс по программированию». Доусон – опытный программист и преподаватель, а в книге учит программировать, создавая простые игры. В книге Васильева, напротив, больше внимания уделяется основам и теории.
  3. Практикуйтесь. Можно (и нужно) делать это параллельно с изучением теории. Пройдите курс Learn Python на Codecademy: вся необходимая для выполнения заданий теория подается прямо во время заданий. Как вариант, можно посетить Питонтьютор – бесплатный интерактивный курс по Python на русском.
    Также есть хорошие курсы на Stepik: Программирование на Python, Python: основы и применение.
  4. Пройдите курс «Введение в компьютерные технологии и программирование на языке Python» от MIT.
  5. Узнайте, какие библиотеки и инструменты и для каких целей используют другие питонисты. Найдите что-то интересное для себя.
  6. Если вас интересуют веб-технологии, обратите внимание на фреймворки Flask и Django. Узнайте, для каких целей какой из них лучше подходит, начните изучать тот, что подходит вам.
  7. Узнайте, как получать и анализировать массивы данных с отдельных сайтов, со всего Интернета и вообще откуда угодно – только старайтесь держаться в рамках закона.
  8. Ищите информацию о методах машинного обучения.
  9. Оптимизируйте работу с инструментами, автоматизируйте рутину и все, что еще не автоматизировано.

Куда сходить?

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

Полезные ресурсы

Python Tutor

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

Bucky Roberts на YouTube

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

Derek Banas про Python на YouTube

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

Corey Schafer на YouTube

У Кори хорошие видео на тему форматирования строк, генераторов, программистских терминов (комбинации и перестановки, DRY, замыкания) и многого другого, что поможет понять основные концепции.

Django Getting Started

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

Введение во Flask

Видеокурс на YouTube для желающих ознакомиться с Flask, понять некоторые его тонкости и узнать, зачем он вообще нужен.

Junior, m >

  • Ответы экспертов, 4 августа 2020 в 11:43
  • Анастасия Витвицкая

Нам пришел вопрос от подписчика Tproger, которым мы хотим поделиться с вами:

«Чем отличаются junior, middle и senior разработчики? Как происходит переход между этими уровнями?»

Мы обратились за разъяснением к нашим экспертам, а полученные ответы предоставляем вашему вниманию.

Ольга Чечельницкая , руководитель отдела управления персоналом ISPsystem

Упрощенно различие между уровнями разработчиков можно описать так: Junior — совсем новичок, может мало и часто с чужой помощью; Middle может многое и сам; Senior помогает всем, руководит или является гуру в одной из сфер. Кроме способности решать задачи, в разработчике для нас важны знания и вовлеченность в жизнь команды и продукта.

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

Junior разработчик — вчерашний студент или даже школьник, имеющий случайный набор начальных навыков, который мы сочли достаточным, чтобы дать человеку шанс. Готов выслушивать критику и много учиться.

Middle разработчик — вчерашний Junior, успешно освоивший весь стек технологий, используемый командой. Его уже не пугает командная строка и Git. Он уверенно, самостоятельно и в срок решает небольшие задачи/баги. Высказывает полезные замечания при просмотре чужого кода.

Senior разработчик — ментор, евангелист. Ему можно поручить новый продукт или направление. Он уже руководит подразделением (teamlead) или является очень крутым разработчиком (techlead). Партнер компании. Он понимает, для кого делается тот или иной продукт. Кто, что и как должен делать.

Внутри этих понятий тоже есть разделение. Кроме Junior, есть Junior+ и Junior++. Аналогично с Middle, а с Senior — нет. Senior он есть, и все. «Он крут! Сам все решает и делает. Имеет авторитет в команде и вне» — так закреплено у нас. Мы ориентируемся на эти уровни при поиске новых программистов и для работы с теми, кто уже в команде. Глядя на требования — а они зафиксированы и открыты, — сотрудники понимают, в какую сторону «копать», чтобы вырасти. Это что-то вроде OKR (Objectives and Key Results).

Как происходит переход между уровнями? Первая оценка идет на собеседовании, далее — каждые полгода. Разработчик и его тимлид (или ментор) встречаются и определяют цели (те самые OKR), которые сотрудник должен достичь для повышения (или смотрят, достиг ли он поставленных ранее целей). Вырос Junior или нет, решает ментор и тимлид. Решение о переходе с уровня Middle на Senior принимает СТО. Предусмотрено также, что в этом могут участвовать и другие разработчики уровня Senior: один из них выдвигает коллегу, а окончательное решение принимают расширенным составом

Саттар Гюльмамедов , руководитель отдела разработки новых программных продуктов IT-компании NEIRIKA

Первое, что приходит на ум при обдумывании ответов на вопросы, – модель приобретения навыков Дрейфуса и матрица компетенций Джозефа Сиджина (Joseph Sijin). Но первая из них слишком общая, а вторая в чем-то чересчур подробная, в другом же – зияет лакунами. Поэтому мы постараемся дать оригинальный ответ, не изобретая вместе с тем велосипеда.

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

На мой взгляд, при оценке уровня разработчика необходимо учитывать следующие навыки, знания и характеристики:
1. Вычислительные технологии (Computer Science): структуры данных, алгоритмы, системное программирование;
2. Программная инженерия (Software Engineering): VCS, IDE, CASE, CI/CD, middleware, процессы, метрики;
3. Программирование: языки программирования, библиотеки, каркасы, организация кода, организация собственной работы;
4. Коммуникативные навыки;
5. Когнитивные навыки;
6. Знание предметной области;
7. Опыт.

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

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

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

Евгений Федореев , руководитель направления по разработке новых проектов, Банки.ру

Junior – разработчик, который только начал свой путь в программировании. Человек освоил синтаксис языка и может писать простейшие программы/скрипты. В коммерческой разработке это означает, что человек может решать простейшие задачи, более сложные задачи он может выполнять с помощью и под контролем опытного коллеги. Давать такому разработчику сложные задачи и ждать от него разумного исполнения (как по качеству, так и по срокам) нельзя. Код junior-разработчика нуждается в постоянном ревью.

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

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

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

Для развития своих навыков необходимо: изучать новые языки и подходы программирования (ООП, функциональное программирование), читать исходный код популярных проектов (находить плюсы и минусы представленных решений), изучать разные СУБД, NOSql решения, механизмы кеширования, очереди и тд.

Андрей Кузьмичев , заместитель генерального директора RU-CENTER

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

Что касается перехода между уровнями – момент довольно субъективный. Есть случаи, когда сама компания не дает вырасти специалисту, например, простые задачи и плохое качество кода считается нормой. И даже если разработчик перешел на middle-уровень, это совсем не значит, что он действительно стал специалистом на уровень выше. Переход между уровнями должен сопровождаться качественным ростом навыков разработчика, навыков написания кода и, повторимся, самостоятельностью в принятии решений.

Дмитрий Рогов , директор по технологическому развитию ИТ-компании «АйДи – Технологии управления»

Junior, middle и senior разработчики – градация, которую чаще всего используют на ИТ-рынке, но далеко не всегда понимают, как именно она строится. Обычно junior-разработчика определяют как новичка с реальным опытом работы до 1-1,5 лет, middle-программиста – как все еще обучающегося специалиста с опытом 1-3 года, а senior – как профессионала, проработавшего в компании добрых 5-6 лет.

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

Так, junior – это обычно человек с маленьким опытом разработки или вообще без него. Конечно, он обладает теоретическими знаниями и, вполне вероятно, профессиональным образованием или, как минимум, освоенной программой курсов по программированию. Часто – понимает основы алгоритмизации и основные структуры данных, возможности выбранного языка программирования и выбранного 1-2 фреймворков. Однако эти знания, как правило, не систематизированы, обрывочны и не подкреплены практическим применением. Поэтому работать ему приходится под присмотром руководителей или старших товарищей: код, который он пишет, нуждается в проверке со стороны более опытных специалистов.

Middle-разработчик обычно обладает практическим опытом разработки. Как правило, при этом он знает несколько языков программирования/фреймворков. И благодаря тому, что его знания систематизированы, такой специалист способен самостоятельно решать задачи – за ним почти не приходится переписывать код – и даже может передавать свои знания junior-разработчикам.

Наконец, senior – уже эксперт в своей области. Он имеет большой практический опыт разработки, способен видеть и связывать воедино явления на разных уровнях абстракции благодаря глубокому пониманию архитектуры системы. Он может оценить области применимости разных фреймворков. Это тот человек, который способен самостоятельно заметить и исправить ошибку в коде, найти несколько уникальных способов решения одной и той же задачи. Благодаря этому ему доверяет команда – и он способен довольно легко организовать процесс взаимодействия ее участников.

Конечно, это далеко не вся иерархия программистов. Над указанными позициями, к примеру, стоят архитекторы – люди с глубоким пониманием процессов в ИТ, которые могут работать с передовыми технологиями на рынке и способны принимать глобальны решения по конкретным проектам.

Чтобы развиваться в ИТ, нужно понимать, что придется постоянно держать руку на пульсе – технологии развиваются настолько стремительно, что даже профессионалы своего дела вынуждены постоянно заниматься самообразованием: читать новые статьи и исследования по теме, тестировать новые продукты и технологии. Любые знания в этой сфере полностью устаревают уже через 3-5 лет, и если нет постоянного роста, можно из senior снова «скатиться» на позицию middle.

Александр Дроздов , директор по инновациям компании «Иннодата»

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

Junior разработчик – обычно это стажеры или сотрудники с отсутствующей квалификацией по определенной технологии. Обычно берут в команду к более сильным коллегам, которые помогают им не только с постановкой задачи, но и с выбором инструментов для ее решения. Младшим доверяют простые, некритичные для проекта задачи, на которых они скорее учатся, чем доставляют конкретный результат. В среднем через 1-1,5 года в меру способный junior developer уже готов к переходу в категорию «среднячков».

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

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

Александр Карабасов , директор по развитию бизнеса SoftMediaLab

Путь к уровню Junior разработчика начинается, когда в компанию приходит вчерашний студент с опытом решения некоммерческих задач и так называемых pet projects – небольших проектов, реализованных рамках обучения. Когда он попадает в команду, на него обрушивается множество новой информации, но самое важное он получает наставника. В этот момент человек должен демонстрировать быструю обучаемость, не задавать два раза одни и те же вопросы и постараться максимум времени уделить обучению и задачам. Обычно компании берут человека, если до уровня junior ему осталось не более 6 месяцев. Так происходит, потому что простых задач в разработке не так уж и много. Часто их приходится специально искать под джуна, чтобы он мог на чем-то учиться. В результате компания тратит больше, чем получает.

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

Middle разработчик– это человек который уже набрал определенный опыт. Он понимает процессы в команде, архитектуру продукта, продуктовый контекст и почему все так, а не иначе. Он уже не боится задач длиной в неделю и более. Может декомпозировать эту задачу, в том числе на задачи в единицы дней, которые можно отдать джуну. Маркеры того, что человек перешел в разряд middle: наставничество, предложения по архитектуре и процессу, конструктивное обсуждение плана спринта, идентификация плохих задач и, самое главное, успешное решение задач средней сложности длиной в неделю и более. Middle – это человек, компетенции которого признала команда. Такой человек может справиться с добавлением новой бизнес-логики в существующий сервис, добавлением новых страниц интерфейса, добавлением новых функций API. В среднем путь от Junior до Middle занимает от 1 до 3 лет.

Senior разработчик – это человек, который решил, кем он хочет быть: тимлидом (руководить командой) или техлидом (заниматься техническими историями). Он перестает оперировать задачами, на вход он получает зону ответственности: продукт, отдельный бизнес-сервис, команду. Он сам понимает, что нужно делать, чтобы сделать хорошо. Senior, в отличие от Junior и Middle обучается сам, никто не говорит, что конкретно ему надо изучить. Senior часто выходит за пределы команды, начинает влиять на соседние команды и на жизнь компании в целом. Главный маркер Senior – он уже обладает серией успешно запущенных продуктов, у него есть ряд историй успеха. Еще один маркер – точность в оценках. За счет опыта решения различных задач senior может выбрать наиболее оптимальное решение и реализовать его самостоятельно или силами команды, при этом довольно точно попав в оценки по времени. Путь от middle до senior может занимать разное время. Кто-то достигает этого уровня за год, кто-то за 5-10 лет, а у кого-то этот переход так и не происходит

Григорий Шварц , директор по производству компании РДТЕХ

Исторически сложилось, что разница между уровнями junior, middle и senior определяется длительностью работы сотрудника на позиции разработчика: junior работает год-полтора, middle – два-пять, опыт senior’а составляет больше пяти лет.

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

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

Сергей Попов , генеральный директор Лига А.

Многие считают, что у такого разделения есть чёткие границы в рамках всей отрасли, которые можно измерить и вывести в единую систему, по которой определять, к какому типу относится каждый специалист. Моё мнение — это ошибка. Уровень каждого конкретного специалиста необходимо считать по команде или компании, в которой он работает. Приведу пример: разработчик из небольшой студии, которая занимается потоковой разработкой однотипных проектов, может занимать в такой студии должность старшего разработчика(senior), но при этом если он пойдёт в крупную высокотехнологичную компанию, его уровень могут оценить как junior. Таким образом мы получаем человека, который для одной компании слишком силён, а в другую компанию его вообще не возьмут работать.

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

Сергей Дьяченко , заместитель директора по разработке программного обеспечения компании «Аэроклуб ИТ»

Прежде всего, хочу сразу сказать – для нас данные уровни означают не только технические навыки (hard skills), но и навыки общения с людьми, работы в команде, готовность отвечать за свои решения (soft skills).

Чем выше уровень разработчика, тем выше требования к нему в части soft-skills. Технические навыки обычно разработчикам развить легче, чем навыки общения и командной работы, но именно навыки работы с людьми становятся очень важны для middle- и, тем более, для senior-разработчиков. Я не думаю, что возможна успешная работа команды из разработчиков, которые прекрасные «технари», но не желают или не умеют общаться между собой и работать для достижения единой цели.

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

Middle-разработчики уже обычно имеют некоторый опыт, достаточный для решения типичных задач, могут аргументировать и объяснить свои решения, это командные «игроки».

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

Андрей Лоскутов , ведущий разработчик торговой площадки для бизнеса Supl.biz

Нельзя сказать, что между junior/middle и middle/senior есть какая-то очень четкая грань, на основе которой человека однозначно можно было бы отнести к той или иной категории. На мой взгляд, junior – это человек, который знает основы программирования, теорию, свободно владеет каким-либо языком программирования в степени, достаточной для выполнения типовых рабочих задач, когда не требуется нетривиальных решений. Забегая вперед, можно сказать, что возникающие трудности у junior могут разрешиться простой консультацией с middle, для которого такие задачи и вопросы – это пройденный этап. В большинстве случаев, обладая совсем небольшими знаниями и опытом, junior-ам часто кажется, что они уже многое освоили, что они могут самостоятельно решать трудные задачи, что им пора уже становиться middle-ом. Junior-ы часто не заботятся о последствиях, не обращают внимание на такие мелочи и тонкости, которые могут, например, положить продакшн или существенно замедлить выполнение программы. И причина этому – опыт, точнее его отсутствие. Junior-ы часто пишут нечитаемый код, потому что для них важно здесь и сейчас выполнить поставленную задачу, потому что им еще не приходилось часами разбираться в чужом устаревшем запутанном коде.

Middle – это, как минимум, junior без перечисленных выше недостатков. Middle уже осторожен, он аккуратнее пишет код, старается предугадать возможные ошибки, следит за тем, чтобы его код был как можно более простым и эффективным. Middle способен решать нетривиальные задачи, которые могут длиться от двух часов и до двух недель, способен проводить исследования и обосновывать свой выбор конкретного решения, способен рассуждать о его плюсах и минусах. Считаю, что middle должен уметь заниматься грамотными оптимизацией, рефакторингом и обзором кода (review), он должен на продвинутом уровне свободно владеть языками и технологиями, которые необходимы в работе. Middle должен интуитивно понимать, что та или иная задача – типовая, и что с большой долей вероятности кто-то ее уже решил, и решение можно просто найти и использовать у себя. Как мне кажется, дополнительно к данному уровню можно отнести грамотный выбор решения и то, какую стратегию нужно выбрать именно сейчас, именно в данный момент: сделать максимально качественно, но долго, либо чуть более небрежно, но быстро. Небрежность – это всегда плохо, но часто бывают ситуации, когда быстрая реализация приносит намного больше пользы. Конечно же, такие решения тоже нужно уметь обосновывать. Последнее, на чем бы хотелось сделать акцент – в отличие от junior-а, middle уже может адекватно оценивать задачи по времени, и придерживаться намеченной оценки.

С Senior-ом выделить конкретные критерии сложнее. Наверное, главные качества senior-а – это его опыт и способность анализировать и предвидеть. Senior-у можно давать самые сложные задачи и быть уверенным, что задачи либо будут выполнены, либо будет доказано, что задачу в поставленном контексте выполнить невозможно. Senior способен проектировать архитектуру программы, задавать вектор развития программного продукта. Senior-у, зачастую, не интересно заниматься простыми задачами, которыми занимаются Junior-ы или middle-ы, ведь он знает, что даже, пускай он еще не занимался такими задачами, но точно знает, что решит задачу за указанное время. Наверное, можно сказать, что Senior-ы работают на более высоком, абстрактном уровне.

На мой взгляд, переходы между рассматриваемыми уровнями установить очень трудно, особенно если рассматривать переход middle-senior. Увидеть, что junior окреп до уровня middle не так сложно, как сказать, что middle теперь полноценный senior. Также убежден, что если senior может самостоятельно принять решение о том, что junior теперь middle, то переводить middle-a в senior-а должен не один человек, а целая экспертная группа. И у каждого из экспертной группы доводы могут быть свои.

К тому же считаю, что между переходами от уровня к уровню должно пройти время. Это говорит о том, что навряд ли junior поднимется до уровня senior за полгода. Для этого должно пройти укрепление личности и мировоззрения самого человека. Со временем меняется картина того, что происходит вокруг, меняются взгляды, приходит мудрость. Нужно действительно созреть для того, чтобы стать высокопрофессиональными middle или senior. И у каждого это время свое. Поэтому я не привержен к тому подходу, когда в компаниях человека из грейда в грейд переводят исключительно на основе тестов по проверке его теоретических знаний, здесь также очень важна психологическая составляющая, нужно понимать, способен ли человек брать на себя больше ответственности, сможет ли он психологически справиться с возрастающей нагрузкой. Ведь не обязательно всегда заставлять middle-а становиться senior-ом, потому что человеку может быть уже комфортно в его текущем положении, он научился тому, чему хотел, и теперь ответственно и качественно выполняет поставленные перед ним задачи.

Роман Друзягин , технический директор компании 404 Group

Деления разработчиков на junior, middle и senior весьмы условны, они часто зависят от особенностей работы компании. Один и тот же специалист может где-то считаться как Junior+, а кто-то его определит как крепкого Middle. Не существует единых стандартов перехода от одного грейда к следующему. В некоторых компаниях есть прописанные уровни с указанием того, что должен знать сотрудник, занимая ту или иную позицию. Но этот уровень часто не совпадает у разных работодателей.

Что должны уметь junior, middle и senior разработчики? На практике junior не знает как программировать на языке и испытывает трудности с пониманием нюансов бизнес-логики. Middle уже научился программировать, он понимает продвинутые аспекты языка, ориентируется в коде, знает, где найти ответы. При этот он еще не достиг нужного уровня опыта, чтобы оценивать большой объем кода, быстро в нем разбираться и понимать, что код делает. Специалиста уровня senior не нужно учить программировать, он сам разберется в деталях проекта и найдет наиболее эффективный способ решить поставленную задачу.

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

Кто им в этом поможет? Если спустя несколько месяцев плотной работы в компании, Junior все меньше и меньше задает глупых вопросов, перестает повторять простые ошибки, а цикл доработок после проверки разработанной им функциональности на ревью кода или командой QA сокращается, значит, человек растет. Понимать и видеть прогресс подчиненного – задача руководителя. Если он замечает тенденции к улучшению, то может стимулировать сотрудника интересными задачами, решение которых приведет к дальнейшему росту – профессиональному, финансовому и др.

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

Михаил Кауфман , директор флагманского проекта Galenos компании «ТехЛАБ»

В разных компаниях названия должностей программистов могут различаться – все зависит от принятых корпоративных стандартов. Не принципиально, каким словом принято пользоваться – специалист, инженер, разработчик, или каким-то другим. Для учета ранга сотрудникам чаще всего применяют трехступенчатую систему в виде привычных нашему уху «младший специалист, специалист, старший специалист» или идентичных по смыслу интернациональных «junior, middle, senior developer».

К примеру, разработчик, проработавший более года-двух и уже ответственный за разработку каких-то спецификаций ИТ-систем, может называться в одних организациях middle-разработчиком, а в других – инженером-программистом.

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

Только когда юниор набирается опыта и готов проявить самостоятельность в решении задач, он переходит в разряд middle-разработчик. Обычно такие разработчики не требуют сильного контроля со стороны старших и способны сами определять направление и метод реализации задач, которые им ставит руководитель. На этом этапе программист своими силами пишет и тестирует порученные ему компоненты системы, а также – нередко, но не всегда – отвечает за юниоров. Причем не так важно, сколько времени прошло с прихода человека в компанию – переход к middle-позиции обычно связан, прежде всего, с качеством и скоростью выполнения задач. Главное – избежать здесь «звездной болезни» и не прерывать процесс образования и самообразования: участвовать в профильных семинарах, вебинарах, проходить квалификационные курсы и экзамены.

Пожалуй, переход от middle к senior-разработчику – самый сложный. Ведущий разработчик должен не только уметь проектировать продукт «с нуля» и решать любые возникающие на проекте задачи с применением различных способов, но и быть способным взять на себя ответственность за итоговый продукт. Только заработав авторитет в компании, доверие младших сотрудников и руководства, а также доказав, что он готов день за днем показывать одинаково качественный результат работы, программист может ставить задачи другим сотрудникам.

Тимур Нозадзе , руководитель отдела разработки REG.RU

Есть разные подходы к определению уровней junior/middle/senior. HR часто привязывают эту градацию к количеству лет опыта — это самый простой, понятный и неправильный способ. В некоторых компаниях, особенно больших или имеющих сложную предметную область, к этим уровням привязываются большие списки конкретных технических компетенций, но они для каждой компании свои. Мы в REG.RU на первое место ставим уровень самостоятельности и задач, которые разработчик может выполнять.

Junior-разработчик задачи может решать только небольшие, несложные и чётко поставленные. С самостоятельностью тоже всё не очень — мало знаний, много вопросов, важна постоянная работа с наставником или в хорошей команде. Если наставник есть и задачи позволяют — можно за год-другой пройти этот этап, но можно и лет на 10-15 на нём зависнуть, если не шевелиться — к сожалению, такие примеры мы нередко видим на собеседованиях.

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

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

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

Добавить комментарий