Как стать программистом python
Перейти к содержимому

Как стать программистом python

  • автор:

 

Как стать python-разработчиком

Автор: Алина Онюшкина

Ежегодно Python оказывается в тройке лидеров наиболее востребованных языков программирования. По данным издания InformationWeek , в 2021 году он занял первое место в рейтинге.

Рассказываем, что должен уметь python-разработчик , как им стать и какие навыки нужны, чтобы попасть в профессию.

Кто такой python-разработчик и чем он занимается

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

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

Вот в каких сферах используют этот язык:

  • Машинное обучение. Язык активно используется в машинном обучении из-за его простоты, множества библиотек, фреймворков и производительности при обработке данных. На Python пишут рекомендательные и поисковые системы вроде яндекса.
  • Искусственный интеллект . Это ещё одно популярное направление работы python- разработчика. Так библиотекой TensorFlow активно пользуется компания Google для обучения нейронных сетей и искусственного интеллекта.
  • Работа с большими данными . Python часто используют специалисты больших данных. У языка есть несколько мощных и производительных библиотек, которые программисты могут применять для создания визуализации, анализа и прогнозирования.
  • Веб-разработка. Именно на питоне часто пишут серверную часть сайта и парсеры — сервисы или скрипты по сбору данных с сайтов.
  • Разработка игр . Python используют в разработке игр. Самую популярную игру-симулятор The Sims написали как раз на питоне. Для разработки игр существует даже «игровая библиотека» Pygame, она включает инструменты для работы со звуком, графикой и анимацией.
  • Мобильная и десктопная разработка . Среди десктопных приложений, на питоне работает популярный графический редактор Gimp.

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

Что нужно знать , чтобы стать python- разработчиком

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

  • синтаксис языка программирования — важно выучить выражения, конструкции, функции и циклы. Также важно понимать, как работают и чем отличаются друг от друга типы и структуры данных;
  • базы данных — хранилище информации и набор данных, которые специалист будет использовать в работе;
  • алгоритмы и структуры данных — последовательности совершаемых действий. Из алгоритмов состоят структуры данных — способы хранения и организации данных для эффективного решения задач;
  • библиотеки — набор функций и модулей, которые помогают пользоваться готовыми решениями для специфичных задач. На знание библиотек чаще всего обращают внимание работодатели при приёме на работу;
  • фреймворки — программные платформы для работы, на старте будет достаточно знания всего двух главных фреймворков — Flask и Django;
  • понимание принципа построения API сайтов и HTTP-протокола — позволяет эффективно автоматизировать работу с данными и выполнять некоторые функции программы, даже не зная, как это работает;
  • английский язык — знание языка хотя бы на разговорном уровне значительно упрощает изучение синтаксиса Python, чтение документации и статей;
  • математика — пригодится, если вы выберете специальность, связанную с нейронными сетями, анализом данных, моделированием и статистикой. В остальном можно обойтись курсом школьной программы и доучивая необходимые области во время работы.

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

С чего начать

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

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

Шаг 2: настроить среду разработки. Программисты используют для этих целей IDE — интегрированную среду разработки. Это программы, в которых разработчик пишет код, а они подсвечивают и исправляют ошибки, выдают подсказки. Одна из популярных таких программ для разработки на питоне — PyCharm.

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

За сколько можно стать python-разработчиком

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

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

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

Популярные курсы по разработке на Python

Курс «Основы Python с 0» от ProductStar делает упор на практику, поэтому после каждой из 10 лекций вы получите тренировочные задания. За два месяца обучения вы разберётесь в синтаксисе языка, научитесь писать автоматические скрипты и формировать базы данных

Курс «Python для веб-разработки» от онлайн-университета SkillFactory за девять месяцев поможет вам пройти путь с нуля до универсального фулстек-разработчика. Помимо языка Python, вы изучите HTML, CSS и JavaScript. И сможете сами создавать сайты, приложения и сервисы

На курсе «Профессия Python-разработчик» от Skillbox вы за год научитесь писать программы разной сложности: от скриптов до чат-ботов, разберётесь в тестировании кода и даже сможете оптимизировать работу своих старых приложений

Как я стал python-разработчиком

«Я начал увлекаться программированием с детства. Уже в 10 лет я решал несложные задачи на языке Паскаль. Но меня, как и любого мальчика, интересовали игры. Я любил не только играть в них, но и интересовался их созданием. В 12 лет решил попробовать себя в геймдеве — создавал 2D-игры для компьютера. Постепенно стал изучать и язык Python

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

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

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

Инсаф Галиев, python-разработчик на фрилансе

Подведём итог

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

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

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

image

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Артем продолжал работать электриком днем, а вечерами начал учиться на курсах, несмотря на усталость. «Как и у всех наивных людей, у меня было ожидание магии от курсов. Я пришел не совсем нулевым. В багаже было несколько книг и даже простых сайтиков, в том числе на 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-сообществе Григорий Петров тоже говорит, что скилы по программированию (хард скилы) подтянуть всегда можно. Главное сойтись во взглядах на жизнь, чтобы было комфортно вместе работать. Я с ним согласен.

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

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

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

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

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

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

На какие деньги стоит рассчитывать

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

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

image

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

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

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

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

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

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

Мануал для джуна. Python Developer: вопросы на собеседовании, практические задания и советы для начинающих

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

dev.ua продолжает серию материалов о том, что нужно знать джунам для прохождения собеседования и получения вожделенного оффера от первого работодателя.

Александр Ковтунов, Python Software engineer компании Ajax Systems, который также проводит собеседования для junior- и middle-специалистов, рассказал о профессии Python Developer и дал советы, как начинающим присоединиться к профессии.

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

dev.ua продолжает серию материалов о том, что нужно знать джунам для прохождения собеседования и получения вожделенного оффера от первого работодателя.

Александр Ковтунов, Python Software engineer компании Ajax Systems, который также проводит собеседования для junior- и middle-специалистов, рассказал о профессии Python Developer и дал советы, как начинающим присоединиться к профессии.

Кто такой Python Developer

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

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

Путь разработчика

Александр Ковтунов в профессии около 3 лет. По его словам, сталкивался со сложностями, потому что в первый год работу найти очень сложно

«Стандартный ответ: „Решили двигаться дальше с более опытным кандидатом“. Иногда казалось, что рекрутеров где-то учат этой фразе», — вспоминает разработчик.

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

Как выбирают кандидатов

Junior Python Developer отбирают по двум основным критериям: знание Python и умение думать.

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

«Это в принципе нормально — чего-то не знать. Но, конечно, минимальная техническая подготовка необходима», — отмечает Александр.

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

Основные вопросы на собеседовании

Протоколы

1. Что такое http протокол? Из чего состоит http request? Что такое headers? Что такое статус кода в http responce? Что такое способ?

2. Модель OSI. Что такое? Какие уровни бывают? Какой протокол лучше подойдет для видео tcp или udp?

Базы данных

3. Что такое SQL? Как расшифровывается? Что такое DBMS? Назовите известные вам DBMS?

4. Что такое реляционная модель? Что такое row? Что такое таблица? Что такое атрибут (в контексте SQL-БД)?

5. Отношения: many-to-many, many-to-one, one-to-one (что такое foreign key?)

6. Queries: SELECT, INSERT, JOIN, INDEXES

7. Что такое No-SQL базы данных? Чем они отличаются от SQL? В чем преимущество или недостаток того или иного?

Python Core

8. Data Types, mutable/immutable

9. Сроки. Распарсить массив разделенных запятыми. Отформатировать данные по какому-либо критерию (f-string, format). Найти данные в ленте.

10. Что такое dictionary? Какой объект может быть ключом диктата? Как реализовать такой объект своими руками?

11. Может ли дикт храниться в тупле? Может ли тупл быть ключом диктата? Может ли лист храниться в тупле? А если может ли его изменять?

12. Что такое хеширование? Зачем используется? Приведите примеры.

13. Что такое компрехеншен в Python? Какие структуры можно сделать с его помощью?

14. Что такое контекстные менеджеры? Зачем нужны? Какие способы создания кастомного контекстного менеджера?

15. Что такое slices в Python? Что такое индекс? Какой объект можно обрезать?

16. Что такое декоратор? Как написать свой? Как сделать, чтобы он принимал аргументы?

17. Что такое итератор? Что такое итерабельный объект? Какая между ними разница? Что такое next? Как реализовать итератор? Как и терабельный объект?

18. Что такое генератор? Чем отличается от итератора? Какие способы написания генератора? Что такое yield? Чем отличается от return? Что такое send? Throw? Как написать нескончаемый генератор?

19. Как обрабатывать ошибки в Python?

20. Что такое lamda функции? Напишите такую функцию для фильтрации данных в дикте.

21. Области видимости. Сколько существует? Как расшифровать LEGB? Global и nonlocal? Приведите прил.

22. Как работают способы map? Filter? Enumerate?

23. Что такое ООП? Для чего используют ооп? Что такое class в ооп (не в Python, а в принципе)? Какова его базовая характеристика (стейты+поведение)? Что такое сущность? Каковы принципы ООП?

24. Что такое гетеры, сеттеры? Зачем их используют? Как можно в Python написать геттер или сеттер? Что такое property?

25. В чем разница staticmethod и classmethod? Для каких задач используют тот или иной?

26. Что такое отвлеченный класс? Что такое отвлеченные методы? Что такое интерфейс? Зачем строят интерфейсы в программировании?

27. Для чего нужна функция dir ()? Что такое dict? Как отличаются dict у родительского класса и класса отпрыска? От чего же это зависит?

28. Что такое переменная класса? Как изменятся экземпляры, если ее изменить?

29. Какие магические методы? Зачем нужен метод init? Чем отличается от new?

30. Как переопределить арифметические операции?

31. Как работает множественное наследование? Какой Python ищет имплементацию методов?

Практические задачи

1. Данный дикт

Надо поменять ключ значение местами

2. Даны два массива

Надо сделать чтобы значения, а были ключами, а значения b — значениями дикта

Личный путь и опыт в становлении Python разработчиком

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

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

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

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

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

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

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

Кстати об опыте: мой опыт в серьезной или коммерческой, если хотите, разработке насчитывает около 3 лет, а осваивание Zen of Python продолжается на протяжении уже 5 лет.

Знакомство с ИТ и первые шаги

Начать я хотел бы с моего бэкграунда.

Меня всегда привлекала тема компьютеров и все, что с ними связано. Интерес этот, в первую очередь, основывался на желании провести время в компьютерных играх. В далеком для меня 2009 году, когда мне было около 8 лет, родители подарили мне мой первый ПК на Intel Pentium SU2700. На то время сборка с таким пеньком позволяла играть во многие игры, что для меня являлось ключевым моментом. Для меня открылся новый огромный мир интернета и компьютерных игр.

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

Спойлер: Как же я ошибался

 

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

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

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

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

В определенный момент я начал предпринимать попытки попасть на курсы по разработке. Это были популярные на тот момент ИТ-курсы в моем городе(к слову, они очень популярны и сейчас). Придя туда впервые я увидел аудитории с классными современными ПК, огромными мониторами, студентами, которые были увлечены процессом обучения. Я был воодушевлен! Желание попасть на эти курсы многократно возросло. После общения с местным эйчаром меня отправили на «мини техническое собеседование». К сожалению или к счастью, мой уровень математической базы был недостаточным и мне порекомендовали подтянуть азы (все было совсем плохо). Впрочем, в дальнейшем я этим и занимался. Родители наняли мне репетитора по математике, чтобы он подготовил меня к тестированию для поступления в университет, а заодно и к ИТ-курсам. К слову, прозанимался я с этим репетитором около двух лет и где-то на третий месяц я решил, что готов и отправился на повторное собеседование.

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

Введение в Computer Science

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

Введение в графический дизайн

С этого момента начался мой путь становления в качестве разработчика. На дворе шел 2018 год.

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

Окончание курса и запись на новый, тематика которого сводилась только к программированию

Поступление на физико-математический факультет одного из лучших технических вузов моего города

Переезд в кремниевую долину и трудоустройство в Google или хотя бы в Microsoft

Чилл, лежа на диване и ежесекундные +10000$ к балансу на моем счете

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

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

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

Здесь мой путь приостановился.

Я забил на программирование.

Мое время в основном уходило на учебу в университете И *барабанная дробь* на игры.

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

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

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

Меня затянуло!

Я с восхищением смотрел на истории соотечественников, которые выбрались из своей зоны комфорта, уехали в другую страну и принимали непосредственное участие в создании ИТ-бизнесов с мировым именем, таких как Google, Meta(aka Facebook) и т.д.

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

Примерно в тот момент знакомому отца на работе понадобился новый сайт. Занимался он книжным издательством, соответственно, его бизнес нуждался в современном решении, интернет-магазине. Старый сайт создавался примерно в 2006 году. Я же, полный энтузиазма решился попробовать. Друг отца тогда сильно удивился, что я, будучи совсем неопытным, берусь за подобный проект.

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

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

Меня затянуло

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

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

*Огромное спасибо Вам за то, что отвечали! Это правда очень помогало и на тот момент данная помощь была незаменимой!*

Я занимался сутками. Поднимался я примерно в 10 часов утра и занимался до поздней ночи. Распорядок моего дня на протяжении 2-3 месяцев был примерно таким:

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

Мне очень нравился процесс. И я вам скажу такую вещь:

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

За пару недель я изучил базовую работу в Figma и создал готовый макет. Слишком много времени это не заняло, т.к. у меня уже был опыт в похожих программах, вроде Adobe Photoshop. Учился я по мини-курсам на том же YouTube, изучил несколько готовых макетов других авторов в телеграм-каналах. Смотря на этот макет сейчас я вижу кучу недостатков некоторые из которых я исправлял во время верстки, но для моего первого макета весьма неплохо, я считаю.

После этого за короткий промежуток времени я изучил верстку на нужном для реализации простого интернет-магазина уровне. Потратил я на это около 1-1.5 месяцев. Учился, опять же, на YouTube и задавал непонятные вопросы в чатах.

Остальное время ушло на саму backend разработку и минимальное изучение SQL. Как вы можете догадаться, данная часть вызывала у меня наибольшие трудности в изучении реализации. Методом кучи проб и ошибок у меня получалось реализовать нужный функционал по модулям. Пришлось часами зависать на YouTube, чатах, форумах, читать книги вроде «Django 2 в примерах» и учиться, учиться и еще раз учиться.

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

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

Таким образом я заработал свои первые 300$ на разработке.

Я работал один. Весь процесс разработки занял у меня около 5 месяцев. Я был сам себе проджект-менеджером, frontend-разработчиком, дизайнером, backend-разработчиком и так далее. Я ничего не знал о правильном флоу и жизненном цикле разработки в целом. Были моменты, когда хотелось сдаться, плюнуть, забить на все и сдаться. Имели место перегорания, приходилось делать перерывы в несколько дней. Но в конечном счете у меня все получилось. Мои ванильные мечты о легкой карьере разработчика были разбиты в дребезги. Я понял, что легкий путь на расслабоне — это не про АйТи.

Только лишь в процессе постоянного обучения, развития, переступания через себя можно добиться результата. И эти правила относятся не только к IT-отрасли. Это правила жизни, но в данной сфере по-другому ну вообще никак.

Что я понял на данном отрезке моего становления как разработчика?

Легко не будет. Добиться результата можно только упорным трудом и реальной! заинтересованностью делом.

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

Склад ума, предрасположенность, слова «я не смогу» и прочие отговорки — одного поля ягоды. Ничто из этого не влияет на достижение вашей цели. Главный ключ достижения этой цели — ваше отношение к делу.

Развитие Вас как специалиста в разработке приносит плоды, только в том случае, если вы делаете это постоянно.

Список материалов

Укус Питона(анг. A Bite of Python), Swaroop C.H.

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

Django 3 By Example — Third Edition, Antonio Mele

На тот момент я использовал устаревшую версию книги (Django 2 By Example). В новой, актуализированной версии заменены устаревшие версии используемых автором пакетов.

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

На YouTube могу выделить несколько качественных каналов.

Шикарный преподаватель Тимофей Хирьянов на своем канале выкладывает свои университетские лекции по языку Python. Для новичков зайдет на отлично (даже мне было интересно недавно пересматривать записи его лекций)

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

Также, классный канал имеется у Миши Омельченко, называется он Django School. Тут я вообще промолчу. Тонны видео с объяснением основ Django, множетсво циклов видео с разработкой целых проектов. Очень полезный канал.

Шикарный канал про верстку и фронтенд, называется Фрилансер по жизни, ведет его Женя Андриканич. На тот момент я не понимал, как выучить верстку и научиться хотя бы немного работать с JavaScript за короткий промежуток времени. Канал Жени очень помог мне в этом. Автор простым языком и на примерах объясняет принципы разметки, css-стилей и т.д. Одновременно с просмотром канала Жени, я сам находил разные тг-каналы, вроде этого, с готовыми макетами, и в тупую садился и верстал. Сквозь боль и слезы, спустя около 5-7 макетов я стал легко разворачивать html-конструкции, понимать, где какие теги использовать, как создать мобильную верстку и так далее.

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

Бонус. «Изучаем Python», Марк Лутц.

Да-да, старый добрый Лутц. Какой python-разработчик не слышал об этой книге?

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

Промежуточная стадия

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

После успешного кейса разработки интернет-магазина, назовем это так, в моей голове возник логичный вопрос:

А что делать дальше?

К этому времени я уже учился на втором курсе универа.

Благодаря завершенному интернет-магазину со мной связался старый знакомый. К этому времени у него уже была своя молодая ИТ-компания, состоящая из 25-30 человек. Он расспросил меня про сайт и по итогу пригласил меня на собеседование. Мое первое собеседование! Еще и офлайн.

Я был одновременно в восторге, но и в состоянии дикого волнения. У меня не было опыта собеседований в ИТ. Я судорожно начал повторять все, что я знаю о разработке на Python, ведь собеседование поставили на конец недели, а до этого времени у меня оставалось несколько дней.

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

Да, звучит угрожающе. Но что здесь не так? А я вам отвечу.

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

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

Как вы уже поняли, на работу меня не взяли. Я пришел на собеседование с винегретом в голове. Чрезмерный поток информации в купе с волнением и стрессом на время «вымыли» все знания из моей головы. На многие вопросы я ответил на нормальном уровне, на некоторые я мог бы и ответить, но условия, в которые я себя сам и поставил не дали мне этого сделать. Факап случился на лайв-кодинге. Я впал в ступор на, казалось бы, простой задачке.

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

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

Администрация получила финансирование на открытие лаборатории при университете. И по счастливому совпадению (или нет), двух моих одногруппников пригласили туда работать. Были открыты позиции веб-разработчика и графического дизайнера. Дело в том, что университет мог нанять 3 студентов. Получилось так, что я в нужное время оказался в нужном месте: ребята порекомендовали меня. Таким образом, спустя две недели после моего первого собеседования, моя карьера на ближайшие 9 месяцев была определена.

Я не буду уделять много слов этому отрезку, скажу лишь пару вещей. Я работал вместе с другим начинающим веб-разработчиком, душа которого лежала в frontend-разработку. На протяжении этих месяцев мы работали с ним в паре, создали несколько проектов для университета, а также работали на фрилансе. Из этого опыта я могу выделить закрепление уверенности в правильности выбранного мной направления, т.е. backend-разработку. Я развивался, закреплял полученные знания в Django, изучил фреймворк Flask на базовом уровне, научился уверенно работать с БД, основам клиент-серверной архитектуры и разработке API при помощи Django Rest Framework, прокачался в Figma на достойном уровне. Но самое главное, чему я научился за это время — это:

Командная разработка

Нельзя недооценивать влияние soft-skills на современного инженера. Умение коммуницировать с командой и с людьми в целом — это важнейший навык, который по приоритетности ничуть ни ниже, а то и выше, чем технические навыки. Что я подразумеваю под «софт скиллс»? Если Вы умеете коммуницировать с миром вокруг, а следоавательно получать нужные ответы на Ваши вопросы — вы никогда не останетесь «в дураках».

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

Гугление, или же нахождение нужной информации — важный навык

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

После работы в университете, я все-таки решил, что хочу записаться на более углубленные и узкоспециализированные курсы. Я выбрал компанию и записался на курс по Python разработке. После 5 месяцев учебы я защитил свой дипломный проект. К слову, проект был написан, опять таки, на Django и являлся клоном игровой площадки Steam.

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

Список материалов

Прошлые веб-источники остались теми же, добавились дополнительные каналы на YouTube, вроде:

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

Также англоязычный канал по Django и Django Rest Framework.

Ко всему этому также добавились курсы с площадки Udemy. Тут я в основном изучал курсы по конкретным технологиям:

Вообще, на Udemy есть множество хороших курсов и авторов. Вы можете сами поискать нужные вам курсы, оценив их качество по количеству студентов и их оценке.

Первая серьезная компания

На 6 месяце разработки при университете из 9-ти я понял, что нужно двигаться дальше.

Мне хотелось поработать в реальной большой команде, при полном составе и на большом проекте.

Для простоты отслеживания хронологии: на дворе лето/осень 2021 года.

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

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

Спустя пару недель мне ответили:

Хотела сообщить вам, что мы приняли решение пригласить вас на работу. Мы предлагаем вам оффер.

Моему счастью не было предела. Я получил серьезный оффер в серьезную компанию. Все, как я и хотел: большая команда (на самом деле нет, в компании было

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

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

Я поэтапно развивался, самообразовывался. Работа состояла из множества митингов, огромного количества самообразования и приемлемого количества тасок. И так по кругу.

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

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

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

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

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

Я готов сделать выводы о данном отрезке моего пути разработчика. Так что же я понял?

Не бывает идеальных компаний. Везде есть как свои плюсы, так и свои недостатки.

Нужно относиться ко всему проще. Делать выводы и принимать решения хладнокровно.

Нельзя перерабатывать в ущерб себе. Выгорание — блокер мотивации и развития.

Нужно защищать свои интересы. Никому нет до вас дела, кроме вам самих.

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

Нарабатывайте новые профессиональные знакомства. Это точно поможет вам в будущем.

Индивидуальный вывод. Лично для себя я понял, что мне не нравится аутсорс. Модель взаимодействия внутри компании в целом, работа этой системы — это не мое. Мне не нравится такой подход. (Существует множество классных компаний, как в аутсорсе, так и в продукте. Все подобные выводы строго индивидуальны. Чтобы найти свое — нужно поработать в разных средах.)

Список материалов

На данном этапе я могу поделиться стоящими книгами, которые мне посчастливилось прочесть (или прочесть не полностью) за этот период:

Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих. Адитья Бхаргава.

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

Чистый Python. Тонкости программирования для профи. Дэн Бейдер.

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

Two Scoops of Django

Полезная книга о Django best-practices.

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

Классная англоязычная книга, рассказывающая о том, как научиться создавать, а главное понимать однострочные конструкции кода в Python. Вот как эту книгу описывает автор:

Если вы не можете читать и писать однострочные фрагменты кода, как вы можете надеяться читать и писать более сложные кодовые базы? Однострочники Python могут быть столь же мощными, как и длинная и утомительная программа, написанная на другом языке и предназначенная для выполнения того же самого. На других языках (например, Java) это было бы почти невозможно, но в Python это сделать намного проще. Хитрость в том, чтобы придумать что-то, что «сделает многое с помощью малого». Самое главное, что читать и писать об однострочниках Python (например, в этом посте) очень весело! Существует даже целая субкультура, которая может написать самый короткий код для решения различных проблем.

Также я открыл для себя шикарный YouTube канал, называется он Диджитализируй!

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

Наши дни

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

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

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

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

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

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

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

За это непродолжительное время, я научился лучше работать с конструкциями языка, его фишками. Это определенно пошло мне на пользу, ведь можно быть разработчиком на Django или React, но не Python и JS разработчиком соответственно. Хорошо понимая сам язык и его концепции Вы без проблем сможете изучить инструменты, которые предоставляет этот язык.

На данный момент я понял следующие вещи:

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

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

Читайте техническую литературу. Я даже больше говорю о фундаментальных вещах, вроде «Чистой Архитектуры», нежели о конкретных технологиях, хотя они тоже важны. Фундаментальные вещи на то и являются таковыми, ведь они не изменяются быстро и основательно. Книги о конкретных технологиях быстро устаревают, т.к. эти самые технологии постоянно меняются. Лучший источник для их изучения — официальная документация.

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

Список материалов

Как я отмечал ранее — хороший программист должен развиваться всегда, к чему я и стремлюсь. Все так же смотрю технические видео с YouTube или же на других площадках, вроде Udemy.

Вот еще один список книг, которые я прочитал и читаю до сих пор на данном этапе моей карьеры разработчика:

Чистая архитектура. Искусство разработки программного обеспечения. Роберт Мартин.

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

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

Паттерны объектно-ориентированного проектирования. Эрик Гамма и др.

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

Заключение

Вот таким выходит (и продолжается!) мой путь становления в ИТ в качестве python разработчика. Кто-то может отметить, что мне просто повезло и доля правды в их словах, конечно, присутствовать будет. Но удача будет способствовать Вам, только если Вы будете упорно работать и идти к поставленной цели. Как говорил один из известных английских писателей:

Победа над самим собою — единственное торжество, в котором удача не имеет доли

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

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

Причина создания этого канала простая — я хочу развиваться.

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

Спасибо Вам за уделенное внимание! Опыт написания статей у меня минимальный, поэтому буду рад услышать фидбек или же просто пообщаться в комментариях!

 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *