Qpwo16

На Пикабу
Дата рождения: 30 ноября 1985
поставил 14289 плюсов и 2030 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
1478 рейтинг 44 подписчика 18 подписок 5 постов 2 в горячем

Список менторов-программистов

https://it-volki.notion.site/b369c1ad87f84165954165289be5a0c...


Часто попадаются посты вида "помогите стать программистом". Судя по комментариям к таким постам, пикабушники не то чтобы очень сильно помогают :)


Так вот есть люди, которые 1) уже внутри индустрии (вероятно с многолетним опытом) и 2) сами изъявляющие желание кому-нибудь помогать.


P. S. Меня в этом списке нет, но я тоже из числа таких людей

Подробный план самообучения на бэкенд-разработчика (Python или Ruby) "c нуля до профи"

Предварительный замечания:

- план отражает мой личный опыт и не претендует на истину в последней инстанции

- целью плана является трудоустройство на позицию junior backend разработчика (Python или Ruby)

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

- что выбрать Python или Ruby? Если у вас нет никакого опыта программирования, то Python. Ruby выбираем только в том случае, если а) у вас есть хоть какой-то опыт программирования б) вы уже попробовали Ruby и вам понравилось.

- перед началом плана прочитайте все уровни и определитесь, на каком находитесь вы. С этого уровня и начинайте.

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

- нужно ли все указанные книги прочитывать от корки до корки, а курсы проходить от начала до конца? Нет. Читайте то, что вам заходит сейчас. Бросайте книгу/курс, если вам стало скучно.

Уровень 0.

Отсутствует опыт программирования. Совсем.

На этом уровне главная задача - научиться азам программирования и основам выбранного языка. Освоить синтаксис и основные конструкции.

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

Книги и курсы для начинающих:

Бесплатные курсы на stepik:

https://stepik.org/course/58852/promo

https://stepik.org/course/67/promo

Книги:

Легкий способ выучить Python. Зед Шоу

Изучаем Python. Марк Лутц

Python на примерах. А. Васильев

Ruby:

https://stepik.org/course/87996/promo

https://rubyschool.us/

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

Внимание! Начинаем учить английский и не заканчиваем на всех уровнях. Первоначальная цель: научиться читать технические тексты и документацию. Следующая цель: разговорный язык уровня B1 (лучше B2).

Уровень 1.

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

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

Главная задача - изучить принципы ООП, научиться писать чистый код.

Побочная задача - освоить профессиональные инструменты разработчика: IDE/редактор (в том числе дебаггинг), Линукс, Git. Помимо самого языка изучаем его инфраструктуру: пакетные менеджеры, виртуальные окружения. Стандарты оформления кода, линтеры, статические анализаторы.

Что делаем:

- устанавливаем линукс в качестве второй ОС (ну или единственной, если прям в омут с головой). Если вы богатенький буратино, то просто купите себе Мак. Профессиональная разработка бэкенда на Питон/Руби не ведётся на Windows. Просто смиритесь с этим. Я рекомендую не заморачиваться с выбором дистрибутива, а просто установить Ubuntu.

- начинаем изучать Git: https://git-scm.com/book/ru/v2 и заводим аккаунт на Github

- КЛЮЧЕВОЙ ПУНКТ. Мы учимся применять на практике теорию, о которой пойдет речь дальше. Делаем маленькие (МАЛЕНЬКИЕ!) проектики. Это должны быть библиотеки и/или консольные программы, чтобы не заморачиваться с GUI или вебом (он нас ждёт на следующем уровне). Придумывайте себе задачи сами, можно погуглить идеи. Это может быть текстовая игра/квест, хранилище паролей, список дел, и т.п. Проекты обязательно ведём в Git и выкладываем на Github.

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

python:

* venv https://docs.python.org/3/library/venv.html

* virtulenv https://virtualenv.pypa.io/en/latest/

* pyenv https://realpython.com/intro-to-pyenv/

ruby:

* rvm https://rvm.io/

* rbenv https://github.com/rbenv/rbenv

- используем пакетные менеджеры

python:

* pip

* poetry

ruby:

* gem

* bundler

- используем линтеры и учимся оформлять код в соотсветствии со стандартами

python:

* flake8

ruby:

* rubocop

- в python привыкаем ставить type hints и использовать mypy

Теория на этом уровне

Теории будет много. Прежде всего, это углубление в язык.

Для Python читаем книгу "Python. К вершинам мастерства" Лучано Рамальо.

Для Ruby читаем "Metaprogramming Ruby" Paolo Perrotto и "Ruby. Объектно-ориентированное проектирование" С. Метц

Далее теория по ООП. Читаем книги:

- "Чистый код" Роберт Мартин

- книги по паттернам проектирования

* Паттерны объектно-ориентированного проектирования. Э. Гамма, Р. Хельм, Р. Джонсон, Дж. Влиссидес. Это легендарная книга, в которой появилось само понятие паттернов проектирования. Авторов еще называют "бандой четырех" (Gang of Fourth, сокращенно GoF). Это первоисточник по данной теме, все остальные книги вторичны. Недостаток: академический стиль изложения.

* Шаблоны корпоративных приложений. Мартин Фаулер. Еще одно академическое издание. Сложно читается, читать всё не нужно, но можно брать что-то для себя.

* Любый другие книги по паттернам, в т.ч. применительно к вашему языку.

* начать можно с сайта https://refactoring.guru/ru/design-patterns/

- погуглить как можно больше материалов про SOLID. Начать можно с https://habr.com/ru/post/348286/

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

Уровень 2.

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

Главная задача на этом уровне - научиться делать веб-приложения и сколотить из них портфолио.

Итак, для начала сосредоточимся на базах данных. Учить всё на Postgresql, это самая популярная СУБД.

Что надо знать:

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

- язык SQL вплоть до извлечения данных из нескольких таблиц (join) включительно

По Postgresql есть документация на русском: https://postgrespro.ru/docs/postgresql/14/

Есть и бесплатный курсы: https://postgrespro.ru/education/

Ключевой пункт: изучаем фреймворки. Для python это Django, для ruby это Ruby on Rails.

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

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

- Django 3.0. Практика создания веб-сайтов на Python. Владимир Дронов

- Two Scoops of Django. D.R. Greenfiled, A.R. Greenfiled

Список книг по Ruby on Rails:

https://blog.railwaymen.org/8-ruby-on-rails-books-you-should...

https://programmingzen.com/rails-books/

Примеры книг на русском: https://progerlib.ru/ruby-books

Самое главное: изучать нужно на практике, только так. Ваши источнки, будь то официальная документация или ютуб-канал, нужно читать/смотреть только до тех пор, пока вы не ухватили идею, как всё это работает. Должно быть ощущение "Ага, я понял!"

После этого придумываем маленькие (МАЛЕНЬКИЕ!) веб-проекты и начинаем делать. Книги, документацию и ютуб используем как справочные материалы. Всё выкладываем на Гитхаб.

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

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

Вероятно, на этом этапе вы еще не сможете трудоустроится. Но может быть и так, что сможете :)

Полезные общеразвивающие книги:

- "Совершенный код". С. Макконелл

- "Программист-прагматик". Э. Хант, Д. Томас

- "Программист-фанатик". Чед Фаулер

- "Человек эпохи IT". Сомнез

Уровень 3.

Осваиваем деплой на реальные сервера

Главная задача - задеплоить наши проекты, которые мы делали на предыдущем уровне.

Для этого надо освоить:

- docker, docker-compose. Пожалуй самая сложна тема на данном уровне, но её освоение даёт огромное преимущество соискателю, плюс сильно облегчает жизнь разработчику. Вот несколько вводных статей с Хабра для начала:

* https://habr.com/ru/post/272145/

* https://habr.com/ru/company/ruvds/blog/438796/

* https://habr.com/ru/post/310460/

* https://habr.com/ru/company/ruvds/blog/450312/

- понятие о CI/CD на примере Github Actions

- думаю, понадобится научиться на элементарном уровне настравивать nginx

Как здесь действовать? Есть разные облачне сервисы типа heroku и pythonanywhere, куда можно деплоить. Но мне всегда нравилось купить самый дешевый VPS и деплоить туда. В любом случае, ваша задача в том, чтобы ваш веб-сервис был доступен в интернете по ссылке (думаю, домен второго уровня покупать смысла нет, достаточно что-то типа blalbal.herokuapp.com).

Заворачивайте ваши проекты в docker-compose.

Настройте https, сделайте, чтобы ваш пет-проект выглядел "как настоящий". Ссылку обязательно добавить в резюме! Это серьёзно повысит ваши шансы на трудоустройство.

Настройте CI/CD-пайплайн с помощью Github Actions. После этого ваш проект будет и с точки зрения разработки выглядеть почти профессионально. Еще плюсцы к вашему резюме.

По идее, если у вас будет 1-3 таких проекта, вас уже должны взять джуном без проблем. Если пока не берут, продожаем усиленно рассылать резюме и терпеливо ждём своего часа )

Уровень 4. Устроились на работу, что дальше?

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

Довольно часто бывает, что первая работа не самая удачная. Это нормально, потому что стояла задача заскочить в это поезд. Но когда вы уже в нём, то можно оглядеться и оценить ситуацию. Подходите к работе прагматично. Тут действительно классные дружелюбные ребята, с которым приятно работать? Или сборище мрачных снобов-мудаков? Или (что довольно часто бывает) просто нет никакой команды, и ты один сидишь со своими задачами и только google да stackoverflow твои лучше друзья и наставники?

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

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

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

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

Всем удачи!

Создал чат в телеграме: https://t.me/+k7E2Wp80WpBjNjky

Показать полностью

Помогу желающим стать backend-разработчиком на Python или Ruby

Всем привет!

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

Кому могу быть полезен: в первую очередь тем, у кого нет еще коммерческого опыта. Также если человек устроился на первую работу, а там происходит какая-то херня (сам был в такой ситуации), то объясню, что это действительно херня, а не "сам виноват, я плохой программист, видимо это не моё" и вот это всё.

Чем могу помочь:

- составить план развития, подскажу что и как учить

- выходить из затыков

- ревьювить код и подсказывать, что улучшить

- говорить, что ты крутой/крутая чувак/чувиха и у тебя всё получится

Пишите на backend_dev_study@rambler.ru. Расскажите в письме о 1) своём бэкграунде 2) о своих целях.

P.S. Понятия не имею, сколько будет откликов. Просто скажу, что постараюсь ответить всем.

Ответ на пост «9 лет Навальному»

Напомнило. Ветер в ивах. Кеннет Грэм

– Собственно говоря, – бодро заметил председатель административной комиссии по делам о незначительных правонарушениях, – в этом предельно ясном случае я вижу только одну проблему: изыскать сидящему перед нами закоренелому преступнику и неисправимому негодяю достаточно суровое наказание. Итак, на основании неоспоримых свидетельских показаний он признан виновным, во-первых, в похищении дорогостоящего автомобиля, во-вторых, в нарушении всех мыслимых правил дорожного движения и, в-третьих, в неслыханном оскорблении дорожной полиции. Господин секретарь, проинформируйте нас, пожалуйста, о самых суровых наказаниях за перечисленные преступления. Смягчающие обстоятельства можно не упоминать, ибо таковых не имеется.
Секретарь почесал нос кончиком пера.
– Многие могут решить, – начал он, – что наиболее злостным преступлением является кража, и это так. Но оскорбление полиции карается гораздо строже, и это правильно. Допустим, за воровство будет начислено двенадцать месяцев, это не очень много; за нарушение правил дорожного движения добавим ещё три года, это не слишком строго; и пятнадцать лет за оскорбления, нанесённые полицейским при исполнении ими своих обязанностей, – чудовищные оскорбления, даже если поверить одной десятой того, что мы слышали от свидетелей. А так как я лично никогда не верю более чем одной десятой услышанного, то, просуммировав должным образом, мы получаем девятнадцать лет…
– Замечательно! – перебил председатель.
– …которые легко округляются до двадцати, в результате чего и получается как раз то, что надо.
– Великолепно! – воскликнул председатель. – Подсудимый, встаньте! На этот раз вы получите двадцать лет, но имейте в виду, что в следующий раз, в чём бы вы ни провинились перед законом, ни на какое снисхождение не надейтесь.
Показать полностью

Очередная попытка решить нерешаемую проблему тишины под окном

Всем привет!

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

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


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


Ситуация эта происходит здесь регулярно, практически каждые выходные. (о! песню про Магадан включили :) ) Естественно, я звонил в полицию. В принципе, я думаю, вы понимаете, чем это заканчивалось. Собственно, ничем. Чаще всего полиция приезжала под утро, когда никого уже не было. Естественно они шли ко мне брать объяснительную, предварительно разбудив т.к. к этому времени я уже спал. Почитав схожие посты и комментарии пикабушников, я понял, что это абсолютно типичная ситуация для любого региона России. Сценарий одинаковый всегда, как будто у них (у полицейских) такой регламент прописан: после звонка о нарушении тишины подождать несколько часов, чтобы точно все разъехались, а потом приехать.


Однако же, я думаю, это неправильно.


Вот я и решил сегодня еще раз позвонить. Без особых надежд, естественно. Вот уже прошло больше часа, пока никого нет на горизонте. Музон как играл, так и играет. (Вот ведь упорные какие ребята сегодня! Обычно подкатят, погромыхают минут 15 и свалят. Но не эти. Эти вот уже часа 2 как веселятся. Ну а я - нет)


Ну а поскольку заняться в общем-то нечем, напишу-ка я заявление в прокуратуру (спойлер: раньше я уже писал, результат нулевой). Ну напишу еще раз. Раньше у меня не хватало терпежа доконтролировать всё до конца. Что ответили в срок, куда перенаправили, что сделали и т.п.


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


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

Показать полностью
Отличная работа, все прочитано!