Путь python разработчика от первого кода до успешного проекта как сделать карьеру в it skillfactory

Обновлено: 07.07.2024

— Я около двух лет была разработчиком в Яндекс. Диске, а до этого занималась обработкой больших данных в Яндексе. Каждый день примерно на 2 Тб мы считали статистику использованиях фич. Например, как часто люди нажимали кнопку перехода на сайт, после того как им пришло письмо. Сейчас разрабатываю инструменты для международной логистики в Joom, например для отслеживания посылок и оптимизации стоимости перевозок.

Чем занимается Python-разработчик

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

Главная задача python-разработчика ― сделать так, чтобы сервисы понимали запрос, а сайты правильно реагировали на действия пользователей. Порядок работы над проектом может быть такой.

  1. Получить задачу и декомпозировать ее (то есть разбить на маленькие части). Важно услышать, что конкретно от вас хотят, и договориться, кто и что будет делать.
  2. Написать код.
  3. Покрыть код тестами и проверить, что все тесты проходят. Иногда этот пункт меняют местами со вторым, в такой ситуации сначала проверяют, что программа не работает.
  4. Закоммитить (зафиксировать изменения) и пройти код-ревью — получить комментарии от более опытного разработчика и внести его правки.
  5. Выкатить релиз или собрать образ на машине.
  6. Поддерживать код, пока он кем-то используется.

Как проходит типичный день Python-разработчика

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

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

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

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

Большую часть времени занимают:

  • чтение кода,
  • тесты,
  • исправление ошибок.

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

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

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


В работе я использую Slack (робот jenkins присылает мне информацию о том, как протестировался коммит на гитхаб), Github, почту, свободный интернет, PyCharm (среда разработки), Things 3 (тудушник), Iterm 2, так как часть действий удобнее проворачивать через командную строку.

Что надо знать Python-разработчику

Нужно базово знать язык программирования. В моем понимании к базовым знаниям относятся:

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

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

Веб-разработка

  • Фреймворки. Первый — Flask, с его помощью можно быстро запрограммировать что-то работающее. Но все дополнительные функции нужно подключать и скачивать отдельно, если они нужны, конечно.
  • Django. С ним надо познакомиться хотя бы чуть-чуть, потому что долгое время он был одним из самых популярных. Поэтому велика вероятность, что, придя разработчиком на Python в какую-нибудь компанию, вы застанете проект на Django, и его надо будет поддерживать. Основное отличие Django от Flask — всё, что вам может потребоваться, встроено в сам фреймворк.

На старте нужно знать хотя бы один из этих фреймворков. Остальной набор зависит от того, в каком направлении вы хотите развиваться и какие задачи ставит перед вами тимлид. Обычно третьим советуют изучить асинхронный фреймворк. Например, Async IO либо Fast API.

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

  • Устройство Unix-систем (хотя бы на базовом уровне). Перед собеседованием поработайте с Linux, поэкспериментируйте с командой стройкой и попробуйте какое-то время пользоваться только ей, без графического интерфейса. Вероятно, что когда вы придете на первую работу, единственным способом коммуникации с сервером, на котором запущено ваше приложение, будет командная строка. Этот навык осваивается очень быстро: день на то, чтобы прочитать документацию, и буквально неделя на то, чтобы закрепить знания.
  • SQL и базы данных. Начинающему разработчику не нужны глубокие знания в этой области, но нужно понимать, что такое база данных, и как в ней хранится информация. Будет здорово, если перед первым собеседованием вы развернете какую-нибудь базу данных и попробуете составить к ней несколько запросов.

Анализ данных

  • Математика. Перцентили, нормальное распределение, векторы и матрицы — всё это нужно понимать, чтобы знать, что вы считаете. Обычно сложные вычислительные операции можно реализовать с помощью готовых функций, но без понимания, что и зачем используется, высока вероятность получить на выходе что-то ненужное вместо полезных данных.
  • Pandas. Это библиотека Python, которая часто применяется в анализе данных. Ее используют в работе практически каждый день, поэтому нужно знать, как с ней работать.
  • Визуализация данных станет огромным плюсом для начинающего разработчика. Например, базовая библиотека — Matplotlib. Еще есть Seaborn, которая расширяет возможности первой и в основном служит для более простых данных, например, корреляции или анализа одномерного или двумерного массива.

Soft skills

Хорошие soft skills порой важнее hard skills. Самое важное — умение и готовность задавать вопросы. У меня есть алгоритм, которым я делюсь со своими студентами. Он поможет подготовиться к обсуждению проблемы со старшим коллегой и сэкономить его время. Для этого нужно ответить на четыре вопроса.

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

Где учиться на Python-разработчика

Высшее образование

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

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

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

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

Курсы

Есть много курсов на Coursera, Stepik, EdX. Поищите лекции на YouTube, а вопросы задавайте в комментариях. Еще можно читать Хабр. Правда, полезно там далеко не все. Но за неделю можно найти пару хороших статей, которые расширят кругозор и могут однажды пригодиться на собеседовании.

Где в 2020 году выучить Python с нуля? Топ онлайн-курсов и школ

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

Ментор

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

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

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

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

Мне нравится подход, когда платные курсы становятся бейзлайном — основной линией, по которой идет обучение. Но всегда будут темы, которые понятны не до конца или оставляют новые вопросы. Чтобы восполнить эти пробелы, можно найти материалы на YouTube, Хабр или в книге, попросить совета у наставника, почитать и дополнительно разобраться.

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

Как подготовиться к собеседованию

Когда я искала свою первую работаю, поступила просто: искала в интернете вопросы для junior Python-разработчика. Так вы понимаете, с чем придется столкнуться и оцениваете свой уровень. Например, на какие-то вопросы сможете ответить сразу, а какие-то — придется погуглить. Соответственно, продолжаете заниматься, через пару месяцев смотрите этот список и пытаетесь дать честный ответ, как ответили бы на собеседовании.

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

Хорошим показателем готовности к собеседованию будет наличие работающего проекта на GitHub, который вы можете использовать в своей жизни. Я уже писала в начале про бота, который помогает составить список покупок. Если есть такой или другой аналогичный по сложности проект, вы его написали и сами пользуетесь, выкладывайте на GitHub и рассылайте резюме с сопроводительными письмами. Это уже хороший старт.

Что почитать

Telegram-каналы

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

Книги

    . Автор пишет о своем опыте собеседований в крупнейшие ИТ-компании. В книге 189 задач и вопросов, которые помогут восполнить пробелы в знаниях и подготовиться к интервью. . Внутри много советов и рекомендаций, которые научат писать код лучше и чище, проектировать с максимальной продуктивностью, быстро находить в проекте проблемы и разрабатывать качественнее. . Книга про архитектуру и дизайн кода. Автор объясняет, что и почему нужно делать, чтобы стать успешным программистом. Много рассказывается про объектно-ориентированное программирование, но внутри используется Java.

Все программы обучения

Skillfactory School

Предложения о партнерстве

SkillFactory – это онлайн-школа, которая готовит специалистов по работе с данными и IT-продуктами.

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

Наши программы обучения составлены при участии ведущих специалистов из крупных российских и зарубежных компаний, таких как NVIDIA, Amazon, Яндекс, BON Games, Lamoda.

Направления обучения:
— Data Science
— Machine Learning
— Big Data
— анализ данных с применением Python
— веб-разработка
— геймдизайн
— управление IT-продуктами

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

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

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

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

Курс Python для анализа данных - онлайн школа SkillFactory (Россия, Москва) фото

Кстати, акция действует до 27 апреля, так что если вам интересна тема, то ещё успеете выбрать подходящий курс по выгодной цене.

Курс Python для анализа данных - онлайн школа SkillFactory (Россия, Москва) фото

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

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

Курс Python для анализа данных - онлайн школа SkillFactory (Россия, Москва) фото

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

По окончании выдают сертификат и обещают помощь в трудоустройстве.

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

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

Этот курс как и прочие я изначально нашла на сайте-агрегаторе онлайн курсов Каталог-курсов. ру

для тех, кто ищет курсы:

Войти в аккаунт

Чтобы воспользоваться всеми функциями сайта, вам необходимо зарегистрироваться/войти в свой аккаунт на сайте. Выберите вашу соцсеть для входа:

Если вы организация, проводящая курсы, то регистрация происходит по этой ссылке.

Профессия Python-разработчик: как им стать, что надо уметь, где учиться и начать карьеру

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


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

Возможности Python

Язык программирования также широко используется компаниями Netflix, Google, Facebook, Reddit, YouTube, Instagram и другими. Spotify использует Python во внутренних службах, собирая пользовательские данные для предоставления точных рекомендаций и списков воспроизведения. Dropbox юзает скрипты для запуска собственных приложений на каждой платформе (Windows, macOS, Linux, iOS, Android и т. д.).

Сферы деятельности разработчиков

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

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

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

Профессионал может занимать несколько должностей, в том числе Python Developer, Data Scientist и Machine Learning Engineer. Конкретная работа будет зависеть от отрасли, компании и объема должности, но по сути предстоит использовать код для сайтов и утилитов или работы с BD и ИИ.

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

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

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

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

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

Обучение

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

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

Читайте также: