Привет, Хабр!

В этой статье, а точнее целой истории, я хотел бы поделиться своим путем становления в качестве разработчика на 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, вроде:

  • FreeCodeCamp

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

  • Dennis Ivy

    Также англоязычный канал по 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 one-liners

    Классная англоязычная книга, рассказывающая о том, как научиться создавать, а главное понимать однострочные конструкции кода в 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 глазами практикующего инженера.

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

Комментарии (23)


  1. NikolayRussia
    00.00.0000 00:00

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


    1. thepythonicway Автор
      00.00.0000 00:00

      Большое спасибо за поддержку! Честно скажу, даже и не знаю что Вам ответить, столько комплиментов мне адресовали :) Я рад, если моя история вдохновила вас и оказалась полезной!


  1. vbra2022
    00.00.0000 00:00

    Питон, питон... Когда я сяду за питон? ????

    Спасибо за историю. Было интересно читать.


    1. thepythonicway Автор
      00.00.0000 00:00
      +1

      Знакомая история! ????

      Спасибо за комментарий! Рад, что было интересно.


    1. sbw
      00.00.0000 00:00
      +2

      Попробуйте "поколение python" на степике, два шикарных бесплатных курса для того, чтобы попробовать его на вкус))


      1. vbra2022
        00.00.0000 00:00

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


  1. PsionicIT
    00.00.0000 00:00

    Невероятно вдохновляющая история, я прямо сейчас нахожусь на этапе, когда оглянувшись, понял, что нужно задуматься о будущей профессии. Уже и не заметил, как вместо игр провужу время за кодом и книгами. Ваш пост прям дал мне понять, что несмотря на мой геймерский бэкграунд, шансов полно. Сейчас я закончиваю азы языка и буду переходить к ООП и алгоритмам. Желаю вам успехов и благодарю! P.S. Даже на хабре зарегался для коммента, меня что-то прям попёрло :)


    1. thepythonicway Автор
      00.00.0000 00:00

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

      З.Ы. Очень приятно, что статья «заставила» вас зарегистрироваться! ????


    1. abdal_karim
      00.00.0000 00:00

      Привет

      Расскажите о своих шагах предпринимаемых для становления программистом

      Тоже недавно начал

      Вот думаю что где когда


      1. thepythonicway Автор
        00.00.0000 00:00

        Привет! Спасибо за комментарий.

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

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

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

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

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

        Помимо фреймворков, вам также нужно будет изучить работу с БД: виды связей, индексы, запросы и т.д. Работа с реляционными бд, вроде PostgreSQL или MySQL является обязательной к изучению.

        Вдобавок ко всему, нужно знать верстку (HTML + CSS) хотя бы на базовом уровне. От себя бы также рекомендовал разобраться в JS, но это можно сделать позже, все-таки, если вы хотите развиваться в области backend разработки, то frontend часть является не обязательной, важно только понимать, как оно все работает.

        Помимо всего этого, конечно же, нужно уметь работать с системой контроля версий GIT, т.к. он используется повсеместно. Также можно потратить немного времени и разобраться с контейнеризацией приложений в Docker.

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


  1. LucyM
    00.00.0000 00:00

    Отличная статья. Вдохновляет, подскажите, а каких авторов/каналы можно посмотреть, чтобы они были практикоориентированные или отображают весь процесс разработки?!

    Спасибо


    1. thepythonicway Автор
      00.00.0000 00:00

      Спасибо за комментарий и поддержку!

      Насчет практико-ориентированных авторов, тут не такой уж и очевидный момент. Каждому человеку комфортен свой подход к обучению.

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

      Также мог бы порекомендовать решать задачки на codewars или leetcode - чистая практика ????

      В тг есть неплохие каналы о питоне, вроде Zen of Python. Там разбираются разные интересные питонические штуки, даются примеры кода, рассказывается о разных built-in и не только модулях языка.

      Когда во время обучения будут возникать трудности(а они точно возникнут - это нормально) - не стесняйтесь гуглить. Со временем будете практиковаться и «набивать руку».

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


  1. rehci
    00.00.0000 00:00

    Лутц: если вы смогли дочитать эту книгу, значит

    Но эта книга не Кнут, которого реально очень сложно осилить, в ней просто много воды и она скучная. Упражнений кажется там вообще нет (вроде есть отдельно, но они слишком простые). На мой взгляд, Лутц -- это хороший пример как не надо писать учебники.


    1. thepythonicway Автор
      00.00.0000 00:00

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


  1. tskhaykenstein
    00.00.0000 00:00

    очень интересная статья!

    то, что нужно в конце рабочего дня, спасибо Вам)

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


    1. thepythonicway Автор
      00.00.0000 00:00

      Спасибо за положительный комментарий!

      Я думаю, что схема тут простая: заканчиваете курс по питону и приступаете к изучению фреймворка)

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


  1. thevlad
    00.00.0000 00:00

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


    1. thepythonicway Автор
      00.00.0000 00:00

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


  1. l_Tungus_l
    00.00.0000 00:00

    Эх, может и я когда нибудь стану разработчиком. Я учусь в колледже и сейчас мы проходим одновременно python и pascal, на след курсе будем изучать C#. Однако, я не могу справиться с простыми (даже на мой взгляд) лабами. Я просто не могу это написать на языке даже зная как это сделать в голове. Что ещё больше печалит, так это то, что у все людей как у вас история одинаковая: в один момент вас попёрло и попёрло очень сильно. Вопрос, а как сделать так чтобы тебя попёрло? Когда это придёт к тебе в конце то концов? Надеюсь, к концу обучения и я смогу писать статьи о том как я стал разработчиком и живу своей мечтой...


    1. thepythonicway Автор
      00.00.0000 00:00

      Спасибо за комментарий!

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

      У меня ничего не получалось, примерно как у вас сейчас. В голове я мог понимать общий алгоритм, но на деле решение давалось с большим трудом. Ответ на вопрос «почему так происходит?» очень простой: из-за недостатка практики.

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

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

      Не опускайте руки, занимайтесь и ваше желаемое «меня поперло» обязательно придет!


  1. AliBlogger
    00.00.0000 00:00

    Намереваюсь пройти похожий путь, поэтому публикация показалась интересной и полезной ????

    Желаю автору дальнейшего профессионального роста!


    1. thepythonicway Автор
      00.00.0000 00:00

      Спасибо за поддержку! Вам также желаю успехов!


    1. ivan-andreevich
      00.00.0000 00:00

      Присоединяюсь +