Что должен знать junior Python-разработчик, чтобы найти работу
Что сейчас происходит на рынке труда Python-разработчиков
Согласно индексу TIOBE и PYPL , в июне 2023 года Python занимает первое место в списке самых популярных языков программирования. Его используют в очень многих сферах: веб-разработка, машинное обучение, DevOps, тестирование, разработка десктопных приложений, геймдев. И также Python отличается простым синтаксисом.
По данным калькулятора зарплат Хабр Карьеры, заработная плата джуниор Python- разработчика не изменилась в разрезе первого и второго полугодия 2022 года и составила в среднем 70 000 рублей.

Во многом из-за всех перечисленных достоинств Python считается одним из самых перспективных языков для изучения, и мы на Хекслете тоже можем подтвердить высокий интерес к нему.
Однако у такой популярности есть и минусы — сегодня все больше программистов ищут работу именно на Python. Рынок перестал быть «рынком кандидата»: теперь работодатели диктуют правила игры, выбирая лучших, подготовленных специалистов. На одну вакансию джуниор Python-разработчика приходит от 200 до 400 откликов. Такая конкуренция вынуждает кандидатов активно бороться за то, чтобы быть замеченным.
Все эти изменения требуют развития новых компетенций и гибких навыков у кандидатов. В статье расскажем, как Хекслет помогает программистам правильно позиционировать себя на рынке, у каких разработчиков есть более высокие шансы найти работу и как питонистам соответствовать требованиям работодателей.
Получите профессию «Python-разработчик» за 10 месяцев! Python-разработчик занимается разработкой серверной части сайта, которая отвечает за логику и базы данных. Погрузитесь в практику с первого дня на Хекслете. Вы получите готовое портфолио на GitHub к концу обучения, поддержку наставников на протяжении всего курса и помощь в трудоустройстве.
Как Хекслет помогает джуниор-разработчикам повысить шансы на оффер
Еще пару-тройку лет назад от джуна требовали самый минимум — нужно было только знание языка программирования, а также готовность к работе в команде. Сейчас же требования ужесточились, и чтобы им соответствовать, необходимо прокачиваться более серьезно.
Мы на Хекслете даем несколько рекомендаций студентам, которые проходят наши профессии и курсы. Чтобы повысить свои шансы на оффер, им необходимо выполнить следующие шаги:
Получить необходимые хард скиллы, пройдя всю профессию на Хекслете
Разработчики с хорошей технической базой знаний ценились всегда, и особенно — сейчас. Понимая это, наши инженеры-программисты постоянно обновляют и улучшают учебные программы под запросы работодателей.
Поучаствовать в опенсорсе для получения первого продакшен-опыта
Продакшен-опыт — это опыт работы над реальным проектом, которым пользуются люди. Раньше джуниору было легко устроиться на работу без такого опыта, но сейчас он необходим, чтобы заинтересовать работодателя.

Опенсорс — это проекты с открытым исходным кодом, в разработке и развитии которых может принять участие все желающие: как самые начинающие разработчики, так и программисты с опытом. У Хекслета есть множество опенсорс-проектов — полный список мы раскрываем в нашем гайде «Как участвовать в жизни Хекслета».
Пройти программу Карьерного трека
Карьерный трек — это программа, на которой Хекслет помогает написать хорошее сопроводительное письмо, правильно подать свой опыт в резюме. Мы также проводим тестовые интервью с наставниками, чтобы, опять же, студенты могли избавиться от волнений и стресса перед реальными собеседованиями. Кроме того, они получают обратную связь от интервьюера, узнают свои сильные стороны и прорабатывают слабые.
Прорешать как можно больше тестовых заданий
У нас в открытом доступе есть репозиторий с тестовыми от разных компаний, который мы наполняем уже 11 лет. Прорешивание заданий оттуда помогает набить руку и снимает стресс при прохождении реальных тестов на собеседованиях.
Читайте также: Из инженера-электрика и альпиниста — в бэкенд-разработчики. Мой путь в программирование
Ошибки джунов, которые мешают им трудоустроиться
Многие джуниоры сейчас боятся, что их поиск работы затянется надолго или вовсе ни к чему не приведет. К сожалению, такое действительно может произойти. Но только в следующих случаях.
Разработчик не прокачивает хард скиллы после обучения
Первая ошибка кандидатов — окончить профессию и думать, что на этом можно забыть об обучении. На самом деле получать новые навыки нужно каждый день, особенно с учетом текущей ситуации на рынке. IT — это та профессия, в которой никак нельзя переставать учиться. Все меняется, появляются новые технологии, библиотеки, поэтому нужно оставаться в тренде.
Важно также самому мониторить вакансии, следить за требованиями работодателей и быть готовым к непрерывному совершенствованию своих знаний.
У кандидата нет четкого представления, как искать работу
Залог успешного трудоустройства — это целеполагание и мотивация. Сейчас особенно легко потерять нужный настрой на поиск работы. Но важно уметь собраться и сконцентрироваться на том, что поиск работы — это своеобразный проект, который нужно выполнить. Поставить себе цель: найти работу, неважно за один или три месяца, используя все свои профессиональные знания.
Мы на Карьерном треке не только готовим к трудоустройству, но и помогаем ставить цели. Подсказываем, как разбить на этапы проект под названием «Получение своей первой работы в IT». Студенты учатся прокачивать свои хард и софт скиллы и выстраивать стратегию по поиску работы, что в современных реалиях является очень ценным и нужным навыком.
Мы помогаем джуниорам выработать нужный настрой. Предупреждаем, что получить работу сейчас нелегко, но даем для этого все необходимые инструменты — консультации по составлению сопроводительного письма, резюме и портфолио. Помогаем не отступать от своей основной цели — найти работу.
Разработчик бездумно откликается на все вакансии подряд
Как правило, тяжелее всего трудоустроиться кандидатам, которые откликаются на все вакансии подряд, не пишут сопроводительные письма и думают, что возьмут количеством. Это не всегда работает, учитывая нынешнюю ситуацию на рынке: поиск работы таким способом может затянуться, а разработчик, скорее всего, выгорит и опустит руки.
Гораздо успешнее трудоустраиваются люди, которые вчитываются в требования вакансий, выбирают компании и команды своей мечты и анализируют причины отказов. Поэтому важно четко понимать, на какие вакансии стоит и не стоит откликаться, а также как грамотно подать себя при отклике.
Кандидат сам тормозит поиск работы или не выполняет рекомендации по трудоустройству
Поиск работы — это тоже работа. Если человек захотел получить сложный технический навык или профессию, то он должен быть готов к тому, чтобы активно заниматься новым делом. В том числе — и искать работу. Этот процесс должен быть системой, а не стихийными и бездумными откликами на вакансии.
Вся наша работа на Хекслете направлена на то, чтобы человек нашел работу: мы даем все необходимые инструменты для этого. Например, учим писать грамотное и интересное сопроводительное письмо, помогаем создать сильное резюме, даем советы по оформлению профиля на GitHub, LinkedIn, Хабр Карьере. Также мы рекомендуем студентов на стажировки и открытые вакансии в компании-партнеры.
Но несмотря на все это, сам кандидат не должен забывать, что поиск работы — труд обоюдный. Студенту нужно самостоятельно обрабатывать наши рекомендации по резюме и портфолио, искать компании, в которых хочется работать. И только тогда можно будет прийти к своей цели — найти работу.
Несколько советов джуниорам по трудоустройству от Python-разработчика

Сейчас сложность вопросов на собеседованиях, которые задаются джунам, можно приравнять к сложности вопросов мидлам два-три года назад. Работодатели заинтересованы в том, чтобы проводить серьезные отборы и выбирать более квалифицированных сотрудников.
Чтобы противостоять огромной конкуренции, я советую проделать следующие шаги:
- Решайте задачи на логику — они помогут выработать программистское мышление. А еще хорошо проговаривать решение задач вслух — на собеседовании это только в плюс, работодатель проследит за ходом вашей мысли.
- Пишите свои проекты. Даже если они не полностью рабочие, с неполноценной архитектурой — ничего страшного. Главное — показать, что вы работали с тем стеком, который от вас требуют, и что у вас есть тому подтверждение на GitHub.
- Не отказывайтесь от стажировок, даже от неоплачиваемых. Стажировки — это ваш шанс показать свой уровень, запомниться коллегам и произвести хорошее впечатление на работодателя. Недавно один из моих студентов как раз прошел двухнедельную практику, показал на ней хорошие результаты. И в итоге его взяли программистом в штат.
Да, на рынке труда сейчас много кандидатов, которые составляют большую конкуренцию. Придется принять факт, что сейчас нужно делать больше усилий, чем другие. Поиск работы — это обыкновенный конкурс, где ты показываешь, насколько хорош.
Один из моих советов, который я обычно даю студентам — не думайте о том, что как только вы выучите Python, сразу поедете работать у моря на Бали. Помните, что вы должны, а точнее обязаны ежедневно заниматься разработкой, даже если у вас есть отвращение к этому. Чем больше вы будете набивать руку на задачках, тем быстрее вы дойдете до той точки, когда скажете: «Ого, а у меня недурно получается, — или, — Я уже стал намного лучше писать код».
Итог
Вакансии теперь более челленджовые, но главное, что меньше их не становится. Поэтому самое важное сейчас — не опускать руки, набираться продакшен-опыта, изучать рынок и грамотно подавать себя.
Как бы банально это ни звучало — верьте в себя и свои силы. Когда на собеседование приходит уставший человек с потухшими глазами, продать себя ему гораздо сложнее. Если вы получили профессию Python-раработчика, значит вы прошли долгий путь, развили сложный технический навык, наработали портфолио и резюме, где отражен весь ваш труд — гордитесь собой.
Не забывайте про свою цель — оффер. Теперь вы знаете, как именно этот оффер можно получить.
Получите профессию «Python-разработчик» за 10 месяцев! Python-разработчик занимается разработкой серверной части сайта, которая отвечает за логику и базы данных. Погрузитесь в практику с первого дня на Хекслете. Вы получите готовое портфолио на GitHub к концу обучения, поддержку наставников на протяжении всего курса и помощь в трудоустройстве.
100+ вопросов по Python для Junior, Middle и Senior

![]()
18.11.2020
![]()
102167
Рейтинг: 5 . Проголосовало: 6
Вы проголосовали:
Для голосования нужно авторизироваться

Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 30 сентября 2020 года. Оригинальная версия на украинском языке доступна по ссылке.
Редакция DOU пообщалась с разработчиками, которые проводят технические собеседования Python-специалистов для различных уровней, и собрала примерный список вопросов к кандидатам. Конечно, он не является исчерпывающим, однако содержит типичные вопросы.
Вопросы для Junior
От джуниоров требуют знать и уметь применять базовые структуры данных и модули, простейшие запросы к базам данных, знать простейшие команды системы контроля версий и тому подобное.
Общее по Computer Science и Web Development:
1. Что такое инженерия и процесс разработки в целом?
2. Какие знаете принципы программирования?
3. Чем отличаются процедурная и объектов-ориентированная парадигмы программирования?
4. Какие основные принципы ООП (наследование, инкапсуляция, полиморфизм)?
5. Что такое множественное наследование?
6. Какие есть шесть этапов разработки продукта в Software Development lifecycle и какая разница между Agile и Kanban?
7. Какие есть методы HTTP-запросов и какая между ними разница?
8. Как выглядят HTTP-request / response?
9. Что такое авторизация и как она работает?
10. Что такое cookies?
11. Что такое веб уязвимость?
12. Какие знаете классические базы данных?
13. Как читать спецификацию в конкретном языке (например, PEP8 в Python)?

14. Как происходит взаимодействие клиента и сервера?
15. Какие есть подходы к проектированию API?
16. Как использовать паттерны программирования?
17. Что такое Acceptance Testing и зачем его используют?
18. Что такое модульные и интеграционные тесты, API-тесты?
19. Как писать unit-тесты?
20. Какие есть best practices в написании автотестов?
21. Какие базовые команды системы контроля версий?
22. Как использовать Git?
23. В чем разница между хешированием и шифрованием?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Python Базовый, Python Углублённый, Основы работы с Git.
Python:
24. Python — интерпретируемый язык или компилируемый?
25. Какие есть меняющиеся и постоянные типы данных?
26. Что такое область видимости переменных?
27. Что такое introspection?
28. Разница между is и ==?
29. Разница между __init __ () и __new __ ()?
30. В чем разница между потоками и процессами?
31. Какие есть виды импорта?
32. Что такое класс, итератор, генератор?
33. Что такое метакласс, переменная цикла?
34. В чем разница между итераторами и генераторами?
35. В чем разница между staticmethod и classmethod?
36. Как работают декораторы, контекстные менеджеры?
37. Как работают dict comprehension, list comprehension и set comprehension?
38. Можно ли использовать несколько декораторов для одной функции?
39. Можно ли создать декоратор из класса?
40. Какие есть основные популярные пакеты (requests, pytest, etc)?
41. Что такое lambda-функции?
42. Что означает *args, **kwargs и как они используются?
43. Что такое exceptions, ?
44. Что такое PEP (Python Enhancement Proposal), какие из них знаете (PEP 8, PEP 484)?
45. Напишите hello-world сервис, используя один из фреймворков.
46. Какие есть типы данных и какая разница между list и tuple, зачем они?
47. Как использовать встроенные коллекции (list, set, dictionary)?
48. В чем заключается сложность доступа к элементам dict?
49. Как создается объект в Python, для чего __new__, зачем __init__?
Тема связана со специальностями:
50. Что знаете из модуля collections, какими еще built-in модулями пользовались?
51. Что такое шаблонизатор и как в нем выполнять базовые операции (объединять участки шаблона, выводить дату, выводить данные с серверной стороны)?
52. Как Python работает с HTTP-сервером?
53. Что происходит, когда создается виртуальная среда?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Python Стартовый (урок 2, урок 4-8), Python Базовый (урок 1, урок 6, урок 7, урок 9), Python Углублённый (урок 1, урок 4).
Базы данных:
54. Какие есть базовые методы работы с SQL- базой данных в Python?
55. Что такое SQL-транзакция?
56. Как сделать выборку из SQL-базы с простой агрегацией?
57. Как выглядит запрос, который выполняет JOIN между таблицами и к самим себе?
58. Как отправлять запросы в SQL-базу данных без ORM?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе SQL Базовый.
Алгоритмы:
59. Что такое алгоритмы (например, Big-O notation)?
60. Какие есть базовые алгоритмы сортировки?
61. Что такое Bubble Sort и как это работает?
62. Что такое линейная сложность сортировки?
Вопросы для Middle
Если джуниору все надо подсказывать и помогать, то мидл может самостоятельно взять что-то новое и быстро его изучить и понять. У него накоплено достаточно знаний и опыта, чтобы быстро овладевать новым. Он может прийти и обсудить с опытным разработчиком, проконсультироваться, но окончательных решений не принимает.
Обычно у мидлов спрашивают:
63. Ориентируетесь ли в *nix, можете ли написать скрипты/автоматизацию для себя и коллег?
64. Что такое многопоточность?
65. Что такое архитектура веб сервисов?
66. Как работает современное нагруженное веб приложение (нарисовать и обсудить примерную архитектуру, например, Twitter или Instagram)?
67. Что нужно для сайта / сервиса среднего размера (redis \ celery \ кэш \ логирование \ метрики)?
68. Как написать, задеплоить и поддерживать (микро) сервис?
69. Как масштабировать API?
70. Як проводить Code review?
71. Что такое абстрактная фабрика, как ее реализовать и зачем ее применяют?
72. Что такое цикломатическая сложность?
Python:
73. Async Python: как работает, зачем, что под капотом?
74. Сравнить асинхронные web-фреймворки.
75. Что такое модель памяти Python?
76. Что такое SQLAlchemy (Core и ORM частей) и какие есть альтернативы?
77. Принципы работы и механизм Garbage collection, reference counting?
78. Как работает thread locals?
79. Что такое _slots_?
80. Как передаются аргументы функций в Python (by value or reference)?
81. Что такое type annotation?
82. Для чего используют нижние подчеркивания в именах классов?
83. Статические анализаторы: Flake8, Pylint, Radon.
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Python Углублённый (урок 3).
Базы данных:
84. Разница между SQL и NoSQL?
85. Как оптимизировать SQL-запросы?
86. Какие есть уровни изоляции транзакций?
87. Какие есть виды индексов?
88. Точечные вопросы по выбору БД, движков БД?
89. Front-end: есть ли опыт работы с «современным» JS (Babel, Webpack, TS, ES)?
90. DevOps: работали ли с Docker-контейнерами, объяснить основные термины K8s (кластер, pod, node, deployment, service), что такое Kibana?
91. Алгоритмы: что такое временная сложность алгоритма (time complexity)?
92. Углубленные знания Linux: как зайти на внешний сервер, работать с пакетами, настроить среду и выполнять операции?
93. Специфично для Data Science: как работать с пакетами для обработки и визуализации данных (NumPy, Pandas и другие)?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе SQL Базовый.
Вопросы для Senior
На собеседованиях с Senior`ами обычно мало говорят о теоретической стороне технологии, больше обсуждают конкретный опыт разработчика. Поэтому формализованных вопросов здесь нет. Однако, примером могут быть:
94. Что такое @property?
95. Каким образом можно запустить код на Python параллельно?
96. Как работать с stdlib?
97. Какие задачи решали с помощью метаклассов?
98. Что такое дескрипторы?
99. Знания других языков, кроме Python (опыт).
Видео курсы по схожей тематике:

Python 3.8.6 Стартовый


100. Какие технологические особенности реализации распределенных систем?
101. Какие есть низкоуровневые особенности языков и фреймворков?
102. Способы и методы управления памятью.
Бонус. Практические задания
1. Спроектировать клон Instagram. Это сервис, который понятен практически любому кандидату, даже если у него нет аккаунта. На высоком уровне он очень прост: картинки, описания, комментарии. Поэтому что-то минимальное сможет описать и джуниор. Если кандидат претендует на высшие позиции, можно бесконечно копать вглубь, касаясь API, тротлинга запросов, защиты от фрода, построения фидов пользователя и тому подобное.
2. Дано рекурсивное определение чисел Фибоначчи, надо написать функцию, которая реализует это определение.
3. Есть база данных из трех таблиц — стандартная many-to-many схема. Нужно написать запрос, который объединяет три таблицы и возвращает определенный результат.
4. Даем ТЗ какого-то полезного микросервиса (сокращалка url-ов, поиск дубликатов картинок, поиск тегов в текстах) или функции (rate limiter). Просим кандидата рассказать, как бы он его реализовал. Это дает возможность узнать, что привык использовать специалист, насколько глубоко он знает и понимает различные технологии.
5. Написать какой-то несложный декоратор (выводит аргументы функции на экран или, например, измеряет сколько времени выполнялась функция).
6. Junior`у можно предложить реализовать задачу FizzBuzz test.
7. Для Middle+ я люблю давать несложные задачки на рекурсию. Например, есть вложенный список чисел и нужно что-то на нем посчитать (скажем, найти максимум). Также, можно предложить написать аналог deepcopy для конкретной структуры данных (tree, graph).
8. Для Senior — игра «спроектировать за 5 минут. ». Это может быть Google, FB, Twitter, высоконагруженный интернет-магазин, сервис поиска, продажи и бронирования билетов, сайт новостей и тому подобное. Такая задача помогает понять, как кандидат решает проблемы, ход его мыслей, умеет ли он отделять главное от второстепенного, понять, какого он типа ( «в глубину» или «в ширину»).
9. Игра «у юзера что-то не работает». На примере спроектированной системы собеседователь придумывает ошибку с «дикими симптомами», которую очень сложно понять, воспроизвести. Но нужно быстро решить проблему.
10. Задание, которое демонстрирует знание и понимание list и dict comprehensions.
Looking at the below code, write down the final values of A0, A1, . An.
A0 = dict(zip((‘a’,’b’,’c’,’d’,’e’),(1,2,3,4,5)))
A1 = range(10)
A2 = sorted([i for i in A1 if i in A0])
A3 = sorted([A0[s] for s in A0])
A4 = [i for i in A1 if i in A3]
A5 =
A6 = [[i,i*i] for i in A1]
A7 = [i if i%2 else 0 for i in A1 if 2 < i < 8]
‘,’.join(str(j**2) for j in range(10)) – what is this object ?
11. Задача, в которой есть три функции, в них выполняются базовые операции (сортировка, фильтрация, поднесение массива к квадрату). Нужно упорядочить эти три функции в порядке возрастания времени, которое уходит на их выполнение.
Place the following functions below in order of their efficiency. They all take in a list of numbers between 0 and 1. The list can be quite long. An example input list would be [random.random () for i in range (100000)]. How would you prove that your answer is correct? — profiling?
def f1 (lIn):
l1 = sorted (lIn)
l2 = [i for i in l1 if i return [i * i for i in l2]
def f2 (lIn):
l1 = [i for i in lIn if i l2 = sorted (l1)
return [i * i for i in l2]
def f3 (lIn):
l1 = [i * i for i in lIn]
l2 = sorted (l1)
return [i for i in l1 if i <(0.5 * 0.5)]
Бесплатные вебинары по схожей тематике:

Переводим проект на Python 3.5 и Django 3+.

Создание игры-платформера “Марио” на Python с нуля

Чек-лист успешной адаптации или как пройти испытательный срок в компании?
То есть, на входе все функции имеют одинаковые данные, на выходе выдают одинаковый результат. Но из-за того, что внутри операции выполняются в разном порядке, время выполнения будет отличаться. Здесь нужно разбираться в алгоритмах и понимать, что происходит с твоими данными в процессе. Эту задачу может решить Junior, а может не решить и Middle. Казалось бы, такая мелочь, но когда мы работаем с большим количеством данных, важно, чтобы код был оптимизирован и программа выполнялась максимально быстро.
12. Простые задачи на статистику или логику. Например, определить угол между стрелками часов, которые показывают 8:40.
За подготовку материала редакция DOU выражает благодарность Михаилу Кашкину (Founder в Okumy и курсов по Python), Руслану Скире (Python Developer в CodeIT LLC), Бориславу Ларину (Python Developer в Prom.ua), Владимиру Обризану (Director в Design and Test Lab), Виктору Свирскому (Senior Developer в DataArt), Николаю Зорину (CTO в Jiji, проект Genesis), Владимиру Селюху (Team Lead в Prom.ua), Сергею Галабурде (Software Engineer в N-iX), Алексею Чуприкову (Lead Python Engineer в EPAM), Ивану Лучку (TL Data Science Specialist в Boosta), Олегу Новикову, Владимиру Щербинину, Роману Могилатову (Technical Leader в SoftServe), Вадиму Рудю, Натальи Кушнир, Андрею Лейцюсю, Роману Луцю и другим.
Перевел на русский язык Владислав Сверчков
17 вопросов джуну: что должен знать Junior-разработчик
Что должен знать Junior-разработчик и не завышены ли требования? Разобрали популярные вопросы с собеседований, разделив их на hard и soft skills.
Что должен знать Junior-разработчик, чтобы получить должность или удержаться на уже «завоёванной» позиции?
Джун — это уже пусть и младший, но специалист. Подразумевается, что он самостоятельно умеет писать код, может справиться с простыми задачами сам, а со средними по сложности задачами — под присмотром ментора.
Кто-то говорит, что требования завышены, и в 2020 году младший программист должен знать то, что знал Middle в нулевых. Кто-то парирует аргументами о росте конкуренции, сложности задач и, соответственно, требований.
Что касается технических требований к джунам, то в последние годы они действительно выросли. Профессия программиста стала доступнее из-за курсов, и рынок переполнился начинающими разработчиками. Поэтому компании начали выставлять определённые требования, чтобы найти из общей массы тех, кто лучше других.Например, теперь на позицию начинающего front-end разработчика недостаточно просто знать JavaScript, HTML5/CSS3: нужны базовые знания одного из популярных фреймворков (React, Vue, Angular). Кажется, что со временем требования будут расти ещё сильнее.
Мы разобрались, что должен знать Junior-программист в 2020 году, и собрали общие вопросы с собеседований, по которым работодатели определяют, дотягивает кандидат до нужной планки или нет.
Hard skills
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
Soft skills
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.
Что должен знать Junior-разработчик? Отвечают эксперты
Олег Власенко
заместитель генерального директора SimbirSoft
Говоря о необходимых навыках, сразу важно прочертить границу между джуном и стажёром, поскольку эти роли достаточно часто путают.
Стажёр — человек, который только учится, часто он не имеет опыта разработки. Со стажёрами мы в компании чаще всего имеем дело на наших стажировках, которые мы в разных форматах организовываем с 2012 года. Как правило, значительная часть их аудитории — это студенты без опыта работы. Конечно, если стажёр хорошо себя показывает, мы можем пригласить его на собеседование, а по итогам собеседования даже взять его в компанию, если есть надежда, что он за пару месяцев выйдет на уровень джуна. Но далеко не все стажёры так быстро дорастают до этого.
Тем временем джун — это уже пусть и младший, но специалист. Подразумевается, что он самостоятельно умеет писать код, может справиться с простыми задачами сам, а со средними по сложности задачами — под присмотром ментора. Соответственно, такой специалист обязан обладать уверенными знаниями как минимум одного языка и фреймворка. Да, его знания, скорее всего, не будут глубокими, но он должен знать основы. Значительная часть сил джуна уходит на освоение нового. Ведь чтобы стать мидлом и выйти на новый уровень оплаты своего труда, джуну придётся освоить несколько фреймворков пусть и поверхностно, глубоко изучить как минимум один фреймворк, возможно, подготовиться и сдать экзамен по сертификации, получить опыт в разных проектах. Соответственно, важнейшими soft skills для джуна (да и для любого ИТ-специалиста вообще) будут навыки самообучения, навыки и опыт решения любых проблем, самодисциплина и мотивация к обучению.
Если рассматривать hard skills, то, наверное, нужно упомянуть такие профессиональные навыки, как умение искать информацию в поисковых системах, знание средств коллективной разработки (Git и другие), знание IDE, языка и фреймворка.
Завышены ли требования к джунам? Уверен, нет. Всё проясняется, если разделить понятия стажёр и джун и рассматривать джунов, как младших специалистов, а не просто тех, кто начал учиться.
София Техажева
руководитель программ «Python-разработчик» и «Алгоритмы для разработчиков» в Яндекс.Практикуме
Junior-разработчику, как в принципе и любому специалисту в сфере ИТ, важны такие качества, как ответственность, стремление к профессиональному росту, умение управлять рабочим временем и работать в команде. Кроме того, от начинающих разработчиков дополнительно ждут умения быстро осваивать новый материал и вникать в суть задач.
Требования к hard skills будут зависеть от направления. Например, мы уже подробно рассказывали, что работодатели ждут от Junior-Python-разработчика. Для таких специалистов это чаще всего знание языка программирования Python, алгоритмов и структур данных, опыт работы с базами данных и фреймворками.
Современные требования к Junior-разработчикам не кажутся мне завышенными. Во-первых, требования очень отличаются от компании к компании. Нужно также иметь в виду, что в описании вакансий обычно пишут портрет идеального соискателя, на деле же готовы брать кандидатов не со всеми перечисленными навыками. Во-вторых, большинство работодателей понимают, что любого джуниор-специалиста придётся учить, поэтому хотят от кандидатов в первую очередь бойкости и заинтересованности.
В технических навыках обычно требуется наличие какого-то (хотя бы учебного) опыта программирования, знакомство с основными инструментами, умение решать типовые задачи. Для получения даже этих навыков придётся постараться. Разработка имеет относительно высокий порог входа по сравнению с другими ИТ-профессиями, но планка по найму в последние годы, скорее, снижалась, чем наоборот.
Александр Махновский
руководитель отдела разработки Аванпост
По нашему опыту в последние годы требования к Junior-разработчикам у нетоповых компаний снизились. Связано это с кадровым голодом, вызванным, с одной стороны, ростом рынка, с другой, демографическим провалом девяностых–начала 2000-х.
В целом для джуна, планирующего работать в прикладной разработке, требования можно определить следующим образом:
- Знать синтаксис языка, на котором предстоит работать.
- Знать основу стандартной библиотеки языка и представлять её структуру в целом.
- Понимать принципы работы технологической платформы и среды исполнения (например jvm).
- Понимать принципы работы реляционных СУБД, иметь навыки работы с ними.
- Знать основы веб-разработки.
- Понимать, как в целом устроен мир: как работает сетевое взаимодействие, какая инфраструктура существует в интернет- и корпоративных сетях, понимать отличия парадигм программирования, скриптовых языков от компилируемых и т. д.
- Уметь решать простые прикладные задачи, т. е. применять знания, перечисленные выше, с пользой.
- Умение слушать, воспринимать постановку задач и пояснения, не упускать детали, но и не зацикливаться на них.
- Способность и желание обучаться в процессе работы.
- Умение задавать вопросы и в целом формулировать мысли.
- Любознательность и стремление к развитию.
- Ответственность.
Как правило, у всех ребят, приходящих к нам на собеседование, всё в порядке с основными хард-скиллами, учитывая, что они предварительно проверяются простейшим тестовым заданием.
Большинство же отклонений по результатам собеседования происходит по причине отсутствия практических навыков или критичных софт-скиллов, таких, как умение слушать.
Это не самые высокие требования: могу с уверенностью сказать, что 10-15 лет назад требования были значительно серьезней. Отрасль была менее лояльной к новичкам, готовность брать на работу, платить не самую низкую зарплату и учить была у единиц компаний. Сейчас же все, даже самые небольшие софтверные и не только компании, готовы вкладываться в обучение вчерашних студентов, несмотря на все сопутствующие риски. Всё, что нужно джуну сегодня, — общая адекватность и минимальные знания технологий.
Выводы
Мнения насчёт того, завышены требования к джунам или нет, очень разнятся. Но практически все эксперты сходятся в том, что Junior-разработчик должен знать о преимуществах и сферах применения выбранного языка или технологии, уметь работать с Git, знать основные алгоритмы, библиотеки и фреймворки в своей сфере, быть в курсе возможностей хотя бы одной IDE, знать английский не ниже уровня Intermediate и уметь работать в команде.
Что должен знать Junior Python разработчик для устройства на работу

Язык программирования Python входит в тройку самых популярных ЯП. Он подходит для решения самых разных задач, от небольших приложений до корпоративных систем. Python работает на разных платформах и поддерживает принципы объектно-ориентированного программирования. Поэтому спрос на разработчиков Python большой, давайте разберемся, что нужно знать Python Junior разработчику для успешного трудоустройства?
Многие начинающие программисты обдумывают, стоит ли браться за изучение этого языка. Кроме самого процесса обучения, их смущают многие нюансы: нужно ли высшее образование, какие hard и soft скиллы нужны, какие книги прочесть и о чем будут спрашивать на собеседовании. Попробуем ответить на эти вопросы.
Нужно ли разработчику Python высшее образование?
Наверное, это самый частый вопрос, который задают будущие разработчики. Стоит ли тратить несколько лет на ВУЗ, когда можно потратить полгода на изучение языка программирования и идти работать? На этот вопрос нет однозначного ответа. Поговорим о плюсах и минусах высшего образования для программистов.
Потраченные годы
Четыре года понадобится отучиться в вузе, чтобы получить степень бакалавра. Возможно, это время можно использовать эффективнее.
Устаревшая программа
На то, чтобы добавить новые знания в программу ВУЗа, уйдут месяцы, а то и годы. За это время знания устареют, особенно в IT.
Некомпетентные преподаватели
В идеальном мире в вузах преподают крутые специалисты, которые отлично владеют теорией и имеют практический опыт. В реальности опыт преподавателя может быть, скажем мягко, далеким от современных реалий.

Недавно на сайте DOU проводился опрос об образовании у IT- специалистов. Выяснилось, что примерно у трети нет высшего образования, и больше половины обладателей дипломов работает не по специальности.
Так что не делайте однозначных выводов. Работать программистом можно и без высшего образования, но нельзя сказать, что оно бесполезно.
Требования к техническим навыкам
Требования к техническим навыкам junior python разработчика постоянно растут. Парадокс: разработчиков не хватает, а входной порог повышается. Индустрия пытается защититься от недоучек, которые приносят больше проблем, чем пользы. Что нужно знать, чтобы одолеть входной порог?
- Python, синтаксис, библиотеки, алгоритмы, структуры данных, и так далее. Для позиции Python-разработчика это основной критерий. Обязательно также знать, где хранится документация.
- Фреймворки, например, Django или Flask. Начинающий разработчик не обязан владеть всеми фреймворками. Достаточно уметь работать с одним и знать названия других, а также то, где они применяются.
- Базовые знания HTML\CSS. Начинающий программист Python не обязан вникать в тонкости фронт-энд разработки, но общее представление необходимо.
- Реляционные базы данных. SQLAlchemy, SQL, PostgreSQL, MySQL.
- Общие принципы работы интернета. API, протоколы (http, https), JSON-RPC, Protocol Buffers, gRPC.
- Linux, а также одну или несколько IDE. Разработчику надо уметь настраивать рабочее окружение самостоятельно.
Кроме того, пригодятся следующие знания и умения:

- Agile\Scrum. Если даже вам не доводилось работать по этим методологиям, то хотя бы ознакомьтесь с общими принципами.
- Git. Умение работать с системами контроля версий будет требоваться постоянно.
- Микросервисы. Подробного знания микросервисов от новичка не будут требовать, но понимание их работы пригодится.
Еще одна базовая книга для начинающих разработчиков — «Программируем на Python» Майкла Доусона. Автор предлагает освоить основы языка, создавая простые игры. Опытным разработчикам эта книга не пригодится, а вот для начинающих вполне подойдет.
А вот книга Марка Саммерфилда «Python на практике» подойдет и для опытных программистов. Мы ее рекомендуем еще и потому, что в ней описываются паттерны проектирования и правила их использования для создания хорошего кода.
Заключение
Сейчас ситуация на рынке IT-кадров складывается в пользу соискателей. Миру нужно больше программистов, поэтому толковых ребят буквально отрывают с руками. Даже начинающий программист может легко найти работу, если приложит усилия.
Для junior python разработчика лучший путь — освоить основы языка Python, познакомиться с фреймворками и базами данных, прочесть несколько книг по специальности и поработать над развитием софт скиллов. После этого можно начинать поиски работы, и очень скоро поиск увенчается успехом.
Всегда ваш Сергей Немчинский

Расскажите, какие навыки вам потребовались при трудоустройстве на позицию junior python developer? Какие задачи приходилось решать на собеседовании?
