Что должен знать junior python разработчик
Перейти к содержимому

Что должен знать junior python разработчик

  • автор:

Что стоит знать junior developer’y (python) ⁠ ⁠

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

Данные собраны по посещению примерно 13 собеседований (включая по удаленке) в Питере за 2 последних года. (искал работу трижды, последний раз 3 недели назад)

Собственно, сам список:

1) Для начала типы данных — как использовать, как хранятся, что делает функция id, изменяемые-не изменяемые. Надо понимать почему не стоит использовать конструкцию вида def foo(bar=[])

2) Потом декораторы. Их любят вообще все. Советую не просто почитать что это, а написать парочку, а потом написать декоратор который еще и аргументы принимает)

3) Что такое итераторы и генераторы, чем отличаются и как задать и тот и другой

4) Знать что делают методы класса типа __call__, __srt__, __init__, __next__ и т.д.

Почитать про то, какие есть базовые декораторы (property, staticmethod..)

Дальше общие вопросы, не связанные с питоном.

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

4) Почитать про популярные способы хранения информации и как (и за сколько) в них совершается поиск

5) Любят спрашивать про SQL, особенно про индексы. Мне с SQL помогли разобраться задачки на составление запросов, гугл выдает много сайтов, найти что-нить для себя не трудно

6) Про ООП следует понимать как работает механизм наследования классов, знать что такое mixin и как это применить. Про инкапсуляцию/наследование/полиморфизм меня спрашивали только 1 раз, но знать будет не лишним)

Вроде ничего не забыл)

Несколько раз мне встречалась задачки про взвешивания (Что то типа даны весы с 2 чашами и 8 монеток. Одна из них фальшивая и легче. За сколько взвешеваний можно найти монетку?)

Еще было пару раз задание накодить следующее: дана строка, содержащая скобки (), <> и []. Необходимо определить валидна ли эта строка (т.е. (а+<в-с>) валидна, а <а×(в+с>) нет.)

И еще мне нравится задачка: человек находится в поезде, замкнутым по кругу. Все окна заколочены, никаких меток ставить нельзя, паттерны тоже использовать запрещено — количество вагонов конечно, но вполне может стремиться к бесконечности) Можно только включать или выключать свет. Изначально в каждом вагоне рандомное состояние света. Задача — посчитать сколько всего вагонов)

С поездом первое, что пришло в голову:

1. Включаем свет в вагоне номер 1 (в том, в котором мы изначально).

2. Идем вперед до следующего горящего света. Допустим это Х вагонов.

4. Возвращаемся на Х вагонов назад. Если свет горит — повторяем с пункта 2.

5. Если не горит — поздравляю — в поезде Х вагонов.

я больше половины всего этого не знаю\не использую.

считаю себя джуном.

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

Автор, подскажи источники откуда ты черпал информацию. Книги/видео?

Читать ещё на Пикабу

Топ-25 бесплатных курсов обучения Python 2023 года⁠ ⁠

Подготовили для вас статью с бесплатными курсами по Python. В некоторых курсах есть тренажеры: можно проходить теории и там же практиковаться.

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

Python — это один из наиболее популярных языков программирования в мире, широко применяемый как в создании программного обеспечении, так и в Data Science B Machine Learning.

Тренажеры

Тип: тренажер состоит из блоков теории, после которых сразу идет практика с задачами внутри тренажера. Бесплатный сертификат о прохождении выдается после окончания курса.

Тип: обучающий тренажер.

Тип: обучающий тренажер.

Бесплатные курсы от школ

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

Бесплатный курс от Мичиганского университета на платформе Coursera предлагает участником набор онлайн-лекций по базовым навыкам владения языком Python. Каждый поток длится 7 недель, в рамках которых профессор Чарльз Северанс преподносит знания из своей книги «Python for Everybody».

Бесплатный курс по Python от Хекслет для начинающих программистов. Материалы, среди которых — 7 уроков в формате текста или видео и тесты, раскрывают основы написания кодов на языке, а также описывают ключевые аспекты работы в его экосистеме.

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

Как заявляет автор курса, его программа рассчитана для программистов Python с любым уровнем знаний. По мере прохождения участников ждут 90 видеоуроков и практических заданий. По окончании курса платформа Stepik выдает электронный сертификат.

Бесплатный курс от Академии IT с рейтингом 4,75. Обучение состоит из прохождения 42 уроков, во время которых автор Михаил Тарасов расскажет все об основах программирования на Python, а также поделится ценной информацией о будущей карьере программиста.

Топ-25 бесплатных курсов обучения Python 2023 года Python, IT, Программирование, Программист, Курсы программирования, Разработка, Длиннопост

Курсы с Youtube

Курс YouTube-лекций по программированию на Python. Вся программа состоит из 123 видео длительность от 5 до 12 минут. При желании можно найти те же видео на языке оригинала.

Топ-25 бесплатных курсов обучения Python 2023 года Python, IT, Программирование, Программист, Курсы программирования, Разработка, Длиннопост

Что можно писать на Python

Практически как Java, Python находит применение во многих областях программирования. Так, например, язык применяют в:

Создании систем автоматизации;

Математических расчетах и других продуктах.

Сколько приносит знание Python в 2023 году?

Средняя заработная плата Python-программистов, согласно данным портала ГородРабот.ру, составляет 131 478 рублей — лучший показатель на рынке труда. А вот новички, основываясь на информации HH.ru , могут получать оплату от 70 000 рублей.

Ключевой недостаток владения Python — это необходимость конкурировать с другими кандидатами за место в штате. По подсчетам того же ГородРабот.ру, количество вакансий на позицию Python-разработчика достигает до 203 мест ежемесячно, однако и предложение труда уверенно растет: так, команда Skillbox посчитала, что на одно место программиста Python в 2023 году приходятся сразу 20 кандидатов.

Почему Python?

Python — идеальное решение для каждого и предлагает:

Доступность — из-за простого синтаксиса язык понятен даже новичкам;

Кроссплатформенность — интерпретаторы Python поддерживаются большинством операционных систем;

Разнообразие применения — язык нужен везде: от веб-разработки до геймдева;

Интегративность — Python можно применять в сочетании с другими системами и встраивать его коды как компоненты.

Парсим яндекс диск при помощи Python⁠ ⁠

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

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

Готового решения я не нашел и решил написать свою реализацию работы с яндекс диском. Хорошо, что я знаю python.

У меня было 2 версии программы:

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

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

p.s. ещё были 2 побочные небольшие программки: 1-я для уменьшения размера картинки, 2-я для переименования картинок (менялся пробел на дефис)

Приступим к реализации

скачать и установить python c официального сайта https://www.python.org/downloads

открыть любимый редактор кода (я использую vscode) https://code.visualstudio.com

подключить следующие стандартные библиотеки: urllib.parse, csv, os, zipfile. Установить библиотеку requests https://pypi.org/project/requests/ (для отправки запроса на сервер)

для полного фен-шуя можно использовать виртуальное окружение, дабы не засорять систему ненужными пакетами. Подробнее о virtualenv можно ознакомится по ссылке https://docs.python.org/3/tutorial/venv.html или же использовать poetry.

Ссылки на яндекс диск имеют вид: https://disk.yandex.ru/d/xNBn7lE1_Y5knQ . Чтобы их можно было скачать, они должны быть публичными.

Обратимся к API яндекс. После ключа public_key=»вставляем_ссылку_на_файл»

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

Парсим яндекс диск при помощи Python Программирование, Инструкция, Гайд, Python, IT, Учеба, Программист, Разработка, Linux

Пожалуй, на этом хватит теории, теперь, постараюсь внятно объяснить, как всё это можно применить в контексте python.

# создаем новый файл и подключаем нужные нам библиотеки

import requests

from urllib.parse import urlencode

import csv

import os

import zipfile

Для начало создадим функцию, которая будет возвращать нам ссылку для скачивания:

final_url = base_url + urlencode(dict(public_key=public_link))

response = requests.get(final_url)

parse_href = response.json()[‘href’]

return parse_href

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

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

В итоге, мы получаем файл result_data.csv со ссылками на фотографии на нашем жестком диске:

Парсим яндекс диск при помощи Python Программирование, Инструкция, Гайд, Python, IT, Учеба, Программист, Разработка, Linux

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

Полностью посмотреть код можно в репозитории на гитхаб.

p.s. Официальная документация по API Яндекс. Диска

Братишка с пикабу подсказал готовую библиотеку на питоне. Спасибо b4ro тык.

p.s.s. Немного поразмышляв, я подумал, что неплохо было бы написать, тесты. Пройтись линтером по коду. Добавить функцию переименования файлов. Может быть что-нибудь ещё?)

Спасибо за прочтение! Комментарии, лайки, дизлайки, предложения, пожелания крайне приветствуются.

Отчёт и благодарность Силе Пикабу⁠ ⁠

Здравствуйте, нежноуважаемые пикабушники!

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

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

С этим проектом наша команда участвовала в двух конкурсах и одной научно-практической конференции:

1. Проект стал победителем в заключительном этапе » Городского конкурса проектов «Юные техники и изобретатели – 2023»;

2. Занял призовое место с Дипломом 3 степени на конкурсе «Новые вершины Поиск НИТ»;

3. Занял призовое место в заключительном этапе городской открытой научно-практической конференции «Инженеры будущего».

Отчёт и благодарность Силе Пикабу Сила Пикабу, Благодарность, Без рейтинга, IT, Школа, Обучение, Python, ГИА, Тренажер

Для первого опыта, считаю, что это замечательный результат.

Очень хочу вас всех поблагодарить потому, что именно ваше доброе участие так сильно меня вдохновило и придало уверенности!

Ведь слова поддержки очень важны, а вы предлагали поддержку не только на словах! Я всегда знала, что если в работе случится тупик, если мне не хватит знаний и накатит отчаяние, то я смогу обратиться к пикабушникам @gurux13, @girogor333, @havaec. Я по-настоящему чувствовала, что за моей спиной сила Пикабу! Спасибо вам!

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

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

А вот и сам герой, благодаря которому я познакомилась с благородством и силой Пикабу. Встречайте: Тренажёр решения задач по теме графики функций!

Скачать exe-файл (для системы Windows 7/10/11) можно по ссылке https://disk.yandex.ru/d/phzR8yJKwJn9OQ .

Тренажёр был написан на Python, поэтому поиграть в графики функций получится только на компе или ноутбуке.

Топ 5 бесплатных курсов по Python для начинающих⁠ ⁠

1. Учебники Python — на сайте pythonworld опубликованы уроки для изучении основы Python функции, циклы, кортежи, словари и т.д
2. Курсы от Яндекс-Практикум — тут рассказывают о самых азах бесплатно, а дальше платно.
3. Уроки на сайте academiait — доступный курс для изучении Python. Всего 42 бесплатных курса.
4. «Поколение Python» для начинающих от stepik — знакомит с Python новичков.
5. Инди курс от stepik — этот курс подойдет для программиста с любым уровнем вне зависимости от опыта.

HapDoc — утилита для генерации документации⁠ ⁠

Приветствую.
Хочу поделиться с вами проектом и услышать ваше мнение о нем. Может быть чего-то не хватает? Может быть вы видите его как-то иначе? А может быть вы хотели бы присоединиться к разработке вместе со мной 🙂
Я разрабатываю утилиту для автоматической генерации документации под названием HapDoc. На данном этапе разработке возможно сгенерировать документацию для 3-х типов проектов:

Основными командами являются:

gen — Генерация Markdown файлов документации.

build — Генерация Markdown файлов документации с последующей сборкой в static HTML.

serve — Запускает сервер с помощью FastAPI и uvicorn, для self-host документации.

tmpl-new — Создает новый шаблон для документации

tmpl-list — Возвращает список имен сохраненных шаблонов

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

Байки погромиста. Если кто-то скажет, что программирование — это скучно⁠ ⁠

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

Детектив kesn всегда готов помочь!

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

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

❯ Функция не выполняется

Попросил меня как-то клиент отладить его скрипт. Говорит, не работает. Невероятно!

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

Я, когда клиент говорит, что ничего не работает

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

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

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

Осложнялось всё тем, что отлаживать через клиента — ну такое. Он может запустить скрипт, но вот отладчик для него — страшное слово, и максимум, на что можно рассчитывать — это поставить print() в нужных местах. Разгадка оказалась проста: где-то в середине функции, там, где это было менее всего заметно, вместо return клиент написал yield. А в питоне yield — это магическое слово, которое превращает функцию в генератор, а все return . — в как бы raise StopIteration(. ), и вместо результата возвращается итератор, и выполнение кода останавливается до следующего обращения. Короче говоря, всего-навсего одним ключевым словом клиент полностью раздолбал логику своей программы. Маэстро!

❯ Как ловить эксепшн из генератора

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

Вот, например, кусок кода:

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

Тут у меня есть функция cache.apply(), которая берет quota_chunks, делает с ними какой-то вжух-вжух и возвращает новые quota_chunks. Я нарисовал диаграмму, чтобы изобразить этот процесс в более понятной форме.

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

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

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

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

Именно это тут и случилось. Я вызвал этот генератор и проверил, что он отработал без ошибок, но на самом деле генератор отработал совершенно в другом месте — там, где вызывается spy() — и именно там он и упал.

А знаете как я это отловил? В тестах. Поэтому пишите тесты.

❯ Строго по инструкции

Клиенты бывают разные: какие-то умеют немножко в HTML и frontend, а некоторые из наших клиентов умеют в backend. Один из таких клиентов часто сам писал backend логику и давал нам её на проверку, чтобы мы ему исправили баги, а может быть где-то сделали рефакторинг или code review.

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

И вот клиент взял нашу инструкцию и начал следовать тому, что там написано, слово в слово. Надо понимать, что разработчики обычно пытаются понять, что они делают (по крайней мере я на это надеюсь). Соответственно, те, кто читал этот скрипт, понимали, что должно быть сделано, и в случае, если у них, например, вместо pip используется poetry, а вместо apt-get у них pacman (i use arch btw), то они заменяли соответствующие команды.

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

«Изи фикс» — подумал я, созвонился с клиентом объяснил, что нужно делать, и хотел отключаться. когда возникла ещё одна ошибка. Оказывается, в инструкции был косяк, и при выполнении команды шелл делал подстановку, когда видел $SOMETHING — то есть не было экранирования. Мы исправили и это, и буквально через несколько секунд всплыл ещё один косяк. А потом ещё. И ещё.

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

Где-то через час я сказал клиенту, что пусть он всё бросит и я задеплою всё сам, а потом мы обновим ридми. Было стыдно.

❯ Ответочка

Когда-то я работал на интернет-магазин, и мы заметили, что у нас появляются фейковые заказы каждые утро и вечер. Сначала мы не смекнули, что к чему, но потом поняли фишку: идентификаторы заказа у нас были обычные IDшки из Postgres, поэтому конкурент мог сделать заказ утром (номер заказа 10), сделать заказ вечером (номер заказа 15) и просто вычесть второй номер заказа из первого и получить количество заказов, которые мы получили за день (15 — 10 = 5). Я до сих пор часто нахожу эту ошибку во многих проектах, и примерно могу оценить размер этих проектов.

Эту ошибку легко исправить: достаточно заменить последовательные ID на случайные — например, вместо номера заказа использовать timestamp или UUID.

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

Мой девиз — «кто ищет тот всегда найдёт» (посмотрите мои статьи про уязвимости на хабре — 1, 2). Так и тут, я искал и обнаружил, что конкурент выкладывает розничные прайсы публично, а вот оптовые — только для зарегистрированных и проверенных партнёров. Сам файл он раздаёт nginx’ом с адреса вроде http://some-site.com/files/розничный_прайс.xls. А если так, то, скорее всего, никакой аутентификации при помощи бэкенда для самого файла нет, а значит, можно попробовать найти оптовый прайс.

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

❯ Скрапинг со скоростью света

В одном из моих проектов я использовал api ВКонтакте, чтобы анализировать кожаные мешки. Там не нужна была супер-скорость, поэтому я не полез в async, а просто написал функцию и распараллелил её по потокам при помощи ThreadPoolExecutor.

Программа начала просто летать! Вот как это делают сеньоры! Саенс, бич!

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

Слева направо: саенс, бич

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

Поэтому если всё работает слишком хорошо, то, возможно, всё очень плохо.

❯ Бог рефакторинга

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

Ну я такой про себя «опять клиент что-то сломал, бывает», полез туда смотреть. Глядел-глядел, глаз вообще ни за что не цеплялся. Ошибок в sentry не было. Потом нашёл вот такой код:

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

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

К несчастью, у меня стоит расширение git lens, которое пишет, кто именно написал каждую строчку кода. Я в основном использую это, когда вижу какую-то хрень: если автор кода — чувак из наших, то, скорей всего, это я тупой и что-то не понимаю в задумке автора; в других же случаях это, как правило, обычный плохой код.

И вот я смотрю, а этот код написал. я сам. Вот так я примерно выглядел:

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

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

❯ Детектив kesn и тайна ssh

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

Я человек простой, мне сказали задеплоить — я и задеплою, хоть на AWS, хоть на тапок.

Запускаю я скрипт, он всё делает, и теперь я хочу зайти на сервер и вручную проверить, что всё работает. И тут всё заверте.

Сначала пробую ssh -i ключ root@ip. Не работает. Потом вспоминаю, что юзер в AWS обычно ec2-user, поэтому пробую ssh -i key ec2-user@ip. Не работает. Может, там авторизация не по ключу? Пробую ssh ec2-user@ip. Не работает. Сделал dig, попробовал подключиться не напрямую, а через load balancer. Согласен, тупая затея.

Пошел в дэшборд AWS смотреть настройки файрволла. Вижу два странных айпишника. Очень странно. Беру первый, проверяю геолокацию по ip. По локации понимаю, что это, кажется, статический ip девопса. Какого хрена? У нас же есть бастион, и все соединения должны проходить через него. Проверяю второй ip из файрволла. О, так это же и есть бастион. Ну отлично, теперь делов-то — добавить всю эту конфигурацию с бастионом в .ssh/config, чтобы в будущем было легко подключиться. Лезу в конфиг, а там уже есть эта конфигурация.

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

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

❯ Ошибка платежа

На sentry прилетел отчёт об ошибке, попросили посмотреть. Стал разбираться. Мой код двухгодичной давности.

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

Единственное, что я не учел — что клиент может просто всё забросить, ничего не отменяя. И вот на протяжении года наш сельдерей-разнорабочий (celery worker) запускался, пытался списать у клиента деньги, получал отлуп, жаловался в sentry, и засыпал, чтобы назватра всё повторилось, и так каждый день, без конца и края.

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

❯ Лёгким движением руки сэкономить кучу денег

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

Чувак хостил видео на aws s3 и раздавал через амазоновский CDN. Выходило $655 в месяц. Потом нашёл BunnyCDN, я перенастроил приложение (заменил где-то 4 строчки минуты за две), и внезапно с новым CDN в месяц стало уходить только $70. Ну не эпично ли за пару строчек кода?

Клиент платил сотни долларов за жирный инстанс Elasticsearch на AWS. Почему — я хз. Потом он заподозрил неладное. Мы замерили реальную нагрузку и перенесли Elastic на одну из самых дешёвых машин в digital ocean, за которую клиент теперь платит $24 в месяц. Профит!

У клиента было много файлов на s3, платил он тоже много. Потом перенесли всё на b2, там даже делать почти ничего не надо — у них интерфейс совместим с s3. Получили экономию раза в 4.

❯ От судьбы не уйдёшь

У нас есть шаблон для новых проектов на cookiecutter. Он удобен тем, что если мы что-то меняем в шаблоне, то можем легко обновить проекты клиентов при помощи cruft.

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

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

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

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

❯ Детектив kesn и поиски пароля

Настраивал я как-то инстанс elasticsearch. Там была отдельная машина, я на ней с помощью docker разворачивал ElasticSearch. Сначала делал всё в ручном режиме, проверял, потом писал скрипт для автоматизации. Для начала просто запустил сервер без всего, потом начал разбираться с авторизацией.

В эластике есть специальный скрипт — elasticsearch-setup-passwords — он настраивает пароли. Ну я его запустил, он мне выдал списки паролей для apm_system, kibana_system, kibana, logstash_system, beats_system, remote_monitoring_user и, собсна, elastic. И хотя мне показалось, что паролей было слишком мало и вообще-то для приличной поисковой системы их должна быть хотя бы сотня, но пароль для elastic был, я его забил в систему автоматизации и пошёл дальше настраивать. Дальше было SSL — не знаю, почему это не встроено (наверно, потому что если не будет https, то и взламывать elastic будет сложнее, а куда без этого!). Ну я пошёл в гугол и говорю: пацаны, сертификаты для эластика привезли? Когда я заикнулся про letsencrypt, они мне сказали, что у нас тут не загнивающий запад и мы сами сертификаты делаем, свои собственные. Короче, прям на официальной странице лежит огроменный docker-compose.yml, в котором вжух-вжух, сертификаты настраиваются, конфиги генерируются. Я его скопировал, применил, всё заработало, и я добавил это в автоматизацию.

Через несколько дней (когда я ужё наполовину всё забыл) мне вдруг понадобилось всё снести и настроить заново (спасибо, digital ocean, за то, что не умеешь даунскейлить диски!). Я запустил скрипт автоматизации, всё развернулось, и тут я вспомнил, что вроде как пароль генерируется сам и его можно узнать, если запустить elasticsearch-setup-passwords. Ну я полез на машину, чтобы запустить эту команду — а она не работает! Сначала был не тот url инстанса, пришлось узнать, что есть опция —url. Окей, теперь не хочет подключаться, т.к. кастомные сертификаты. Как добавить сертификаты? Прописать их в elasticsearch.yml. Читаю доки и там говорится:

All of these settings can be added to the elasticsearch.yml configuration file, .

. with the exception of the secure settings

which you add to the Elasticsearch keystore. For more information about creating and updating the Elasticsearch keystore, see Secure settings

Ну я полез читать, что за Elasticsearch keystore и зачем он нужен, и даже прочитал про bootstrap password и keystore passphrase. Мне показалось, что ещё чуть-чуть, и я дойду до чтения про большой взрыв и основы зарождения вселенной, а ведь я просто хотел узнать пароль от эластика!

Тут я бросаю взгяд на docker-compose.yml, и вижу, что там везде мелькает $ELASTIC_PASSWORD, и оказывается всё это время пароль был у меня в настройках и я сам его задавал!

Сказочный. эээ. патруль!

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

❯ Как дропнуть продакшен-базу

Клиенты любят нанимать фрилансеров или брать сотрудников в штаты, чтобы они работали над фичами — потому что нанимать нашу компанию достаточно накладно >:)

Ну и вот как-то клиент нанял стороннего разработчика, чтобы он перенёс систему поиска с эластика на postgres full-text search. Он сделал это именно так, как делал я лет 7 назад. Следите за руками:

Огромная ветка с кучей коммитов

В коммитах смешались изменения в БД и рефакторинг логики нескольких почти не связанных приложений

Миграции не откатывались

Бэкапов перед деплоем сделано не было (хотя это одна команда)

Не было переключателя «новая система / старая система», то есть старую систему просто вынесли нафиг и заменили новой

Не было оговорено временное окно для безопасного деплоя

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

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

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

Я откатил git revision на сервере на рабочий коммит, а СЕО зашёл в админку Digital Ocean и восстановил снэпшот базы данных, назвав его production-db-backup-Mar-24. Всё запустилось. Из-за использования снэпшота мы потеряли немного новых данных, но ничего критичного.

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

Через много месяцев (да, много историй именно после этого и начинаются) клиент говорит: а чё это за production-backup-Mar-24, давайте её удалим. Как же здорово, что он спросил у нас. Потому что программист клиента на самом деле ничего не починил, а просто свалил в закат, и вся инфра осталась в этом «пофикшенном» состоянии. И база использовалась резервная. Поэтому удалять нужно было сломанную БД с названием production, а рабочей была именно production-backup-Mar-24.

❯ Детектив kesn и загадочные тормоза

Серьёзно, я уже подумываю написать книгу про похождения детектива kesn’а.

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

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

Потом до меня допёрло.

Байки погромиста. Если кто-то скажет, что программирование — это скучно IT, Программирование, Программист, Разработка, Timeweb, Эпично, Факап, Истории из жизни, Python, Длиннопост, Познавательно

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

Ха-ха. Я выключил отладочную инфу, и всё залетало. Ну и дурак!

Если вам понравилась эта статья, то посмотрите вот эту, она тоже весёлая: Погромист. Мои самые эпичные провалы за всю карьеру.

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

Подпишись на наш блог, чтобы не пропустить новые интересные посты!

Кодить станет легче⁠ ⁠

Собрали для вас в одном посте сервисы, которые помогут кодить более комфортно, а где-то даже исправят ваши ошибки и чему-то научат

Adrenaline – нашумевшая тулза, которая вылечит код и подробно расскажет об ошибках

Tabnine – предсказывает следующие строки кода и дописывает их за вас. Поддерживает все популярные языки

CodePal – помощник, который поможет писать код по текстовому запросу, оптимизировать, находить баги и ревьювить код

CodeGPT – решение на основе нейронки от OpenAi, Втыкается прямо в VSCode и сочиняет вам код по текстовому запросу

Autobackend – поможет с бэкендом. Сервису достаточно одного-двух предложений на английском

Codesnippets – генерит код из текстовых запросов. Есть отладка, рефакторинг и сохранение кода для остальной команды

BuildtAI – поисковик для VSCode, который ищет готовый код по общедоступным базам данных

Большая коллекция книг по программированию тут!

Как я ощутимо улучшил свой английский бесплатно за 3 года⁠ ⁠

Учить какой-либо иностранный язык в России — дело недешевое.

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

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

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

Как я ощутимо улучшил свой английский бесплатно за 3 года Английский язык, Изучаем английский, Изучение языка, Программирование, Python, Junior, Java, Javascript, SQL, Саморазвитие, Программист, Математика, Студенты, IT, Обучение, Длиннопост

Звуковое восприятие языка

Смотрите сериалы на английском по 30 минут в день.

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

Найти их можете здесь:

english-films.com — фильмы и сериалы на английском в оригинале с англ. субтитрами. Но есть реклама.

На сайте можете найти такие до сих пор актуальные сериалы как «Теория большого взрыва», «Друзья» и «Декстер». Субтитры как русские, так и английские

Как я ощутимо улучшил свой английский бесплатно за 3 года Английский язык, Изучаем английский, Изучение языка, Программирование, Python, Junior, Java, Javascript, SQL, Саморазвитие, Программист, Математика, Студенты, IT, Обучение, Длиннопост

Слушайте подкасты

Ранее слушал подкасты на Apple Music и Spotify, но теперь ни там ни там возможности пользоваться сервисами — нет. Пока вижу лишь единственную альтернативу — это Яндекс Музыка, внутри данного сервиса также есть подкасты, что помогут вам в слуховом восприятии изучаемого вами языка. По началу вообще не понимал большую часть монолога автора, но со временем речь автора не кажется уже несвязной ерундой, а воспринимается нормально.

Как я ощутимо улучшил свой английский бесплатно за 3 года Английский язык, Изучаем английский, Изучение языка, Программирование, Python, Junior, Java, Javascript, SQL, Саморазвитие, Программист, Математика, Студенты, IT, Обучение, Длиннопост

Читайте книги по 20 минут в день

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

Попробуйте читать тексты на одну тему

В английском есть термин «Narrow reading», что подразумевает под собой — чтение текстов на одну тему.

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

Inc.com — если вам интересна бизнес-тематика, публикуют истории провалов и успехов предпринимателей, интервью с представителями бизнеса и т.п. контент

Wired.com — если вам интересны технологии, тут найдёте статьи о последних разработках Tesla, Amazon, Microsoft и др. компаний с мировым именем.

Как я ощутимо улучшил свой английский бесплатно за 3 года Английский язык, Изучаем английский, Изучение языка, Программирование, Python, Junior, Java, Javascript, SQL, Саморазвитие, Программист, Математика, Студенты, IT, Обучение, Длиннопост

Чтобы в общение не допускать ошибок, нужно общаться!

Не держите в себе страх ошибаться. Чтобы перестать делать ошибки, необходима практика, практика и только практика.

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

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

Как я ощутимо улучшил свой английский бесплатно за 3 года Английский язык, Изучаем английский, Изучение языка, Программирование, Python, Junior, Java, Javascript, SQL, Саморазвитие, Программист, Математика, Студенты, IT, Обучение, Длиннопост

Относитесь к изучению языка, как к спорту.

Для меня изучение английского языка давалось намного легче, когда я ассоциировал это со спортом. Так как уже долгое время я бегаю по утрам перед работой и для меня это уже стало обыденным, привычкой, изучение иностранного языка я также хотел сделать привычкой. Мой прошлый подход «УЧИТЬ» английский был бесполезен. Когда же я начал «ЗАНИМАТЬСЯ» английским, вникать в его суть, жить им, только после этого процесс изучения мне стал интересен и я стал прогрессировать.

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

Если вас интересует мой путь не только в изучении английского, но и в IT ,

публикую также свои статьи и интервью на канале t.me/it_begin

Подписывайтесь, если будет интересно 😉

Как я ощутимо улучшил свой английский бесплатно за 3 года Английский язык, Изучаем английский, Изучение языка, Программирование, Python, Junior, Java, Javascript, SQL, Саморазвитие, Программист, Математика, Студенты, IT, Обучение, Длиннопост

Ищу доброго человека, с крепкими нервами)⁠ ⁠

Зовут меня Александр , мне 33 года и за плечами у меня 12 лет общепита. Работал на разных позициях начиная с заготовщика до Шеф-повара. Но в силу здоровья и всеми известной болячки, пришлось уйти из этой чудесной сфера деятельности, хотя люблю готовить до безумия.

И собственно стал вопрос, чем же можно заменить тягу к созданию чего то прекрасного . Попробовал себя в маркетинге, но оказалось что вообще не моё. Всегда хотелось что создавать и видеть результат сразу, по этому волна хайпа унесла меня в IT. И вот бывший повар, нашёл свои первые курсы по Front-End разработке, и полетел скорее учиться. Учеба заняла пол года и я её успешно закончил, параллельно самостоятельно изучил React, начал двух метровой палкой тыкать TypeScript, но с ужасом осознал что по факту, всё что я могу создать, это обложка. Да красивая, да интересная но обложка. Стало ясно что для того что бы завершить своё блюдо под названием сайт, нужно учить Бэк.

Дальше было прочитано кучу инфы, просмотрены сутки разных роликов, по поводу выборы языка. Пробовал писать на PHP/NODE.js но всё что то не то. И вот однажды я познакомился Python. Это была любовь с первого взгляда. И само собой я сразу же полетел учить основы языка. Да кто то может сказать что нельзя распыляться, и что не имея опыта свитчиться между языками нет смысла. Но тем не мение , за время изучение основ Питона я узнал очень много новых фишек и подходов, в том же JS-e.

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

То что знаю на данный момент:

3. Возможно правильно понял ООП

Так о чём пост:

Ищу ментора ( или просто человека который направит на путь истинный) с знанием Python (django). Который поможет выучить django и позволит мне наконец до конца «приготовить», свой первый сайт.

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

Ответ на пост «Хитрый джун»⁠ ⁠

У меня было немного по другому. По образованию я программист. Правда, заканчивал заочно, лет 20 назад в то время, когда еще интернета толком не было. На собеседовании заявил, что все могу, а если не могу — быстро разбираюсь и. меня взяли за уверенность и внешний вид. А дальше. Понял, что зарплата — самая высокая среди сисадминов в нашем Мухосранске, примерно в 2 раза выше, чем обычно. А там торговый центр, сервер 1С, около сотни камер с обслуживанием, около 50 компьютеров. Все эти чековые кассы и ленты. А я вообще ни в зуб ногой.

Первый день — ходил с умным видом, типа, изучаю оборудование, парраллельно лихорадочно собирая телефоны друзей, которые хоть что-то понимают. Не имей сто рублей а. при любой проблеме я вызывал кента-специалиста и платил ему как за вызов. Так как до меня все было более-менее налажено, проблем много не возникало, в результате вызывал кентов редко. В конце месяца посчитал — примерно ползарплаты раздал за помощь, осталась половина, которая бцыла все равно больше среднестатистической ЗП по городу. Так, по сути, я три месяца был компьютерным прорабом, отдавая свою работу на аутсорс. Руководство появлялось редко, а продавцам вообще до меня дела не было. Плюс ко всему помогала природная коммуникабельность и трудолюбие. Всегда старался помочь девчонкам погрузить-разгрузить товар, починить стул/вкрутить лампочку/подкрасить, подстучать. Через 3 месяца я постепенно сам стал вникать во все подробности и уже кое где мог сам что-нибудь починить-установить. Так прошло еще 4 месяца, Я нашел место на работе, которую действительно люблю и в которой профессионал, а своему бывшему шефу привел товарища, который больше всего мне помогал, но не имеет диплома. поручился за него и пропихнул без собеседования. Теперь он там действительно на своем месте, как рыба в воде. Такой вот хэппи енд.

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

Хитрый джун⁠ ⁠

На вакансию junior android developer пришел молодой человек 25 лет. На интервью он показал крайне низкие знания предметной области, что совершенно не коррелировалось с его тестовыми проектами на гитхаб. Там был написан код как по учебнику, заботливо задокументирован и разложен по папкам.

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

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

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

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

Небольшой туториал(а может и нет)о том как можно пробиться в IT нишу(опыт junior Django backend разработчика)⁠ ⁠

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

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

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

Это не таблетка которая работает 100%, а исключительно мой опыт. На всё ушло полтора года(1 год учёбы + пол года поиск работы).

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

Немного о себе:
Для того чтобы представить полноценную картину. Мне 27 лет, работал в Альфа-банке и ушел из-за того, что не могу навязывать людям продукты. Прогорел бизнес в 24 года(ателье). Устроился работать в макдоналдс в ночную смену(так называемый "ночник"- что-то типа уборщицы и посудомойки), проработал год и понял что хватит плыть по течении и надо брать жизнь в руки.
Высшего образования не имею(Ушел с 5 курса 'Эконом безопасности'), в дальнейшем не восстанавливался, так как хотел доказать себе, что обладание дипломом, а не знаниями это уже прошлый век, но это отступление.

Собственно информация ради которой был создан пост:

Курсы:
Купил курс Skillbox( https://skillbox.ru/course/profession-python/)-лично моё мнение, денег своих не стоит, разве что у меня был отличный куратор, на этом плюсы заканчиваются.
Купил курс на Udemy( https://www.udemy.com/course/django-31-junior-django-develop. курс понравился, очень много интересного от туда подчерпнул.
Окунулся в пиратство(Сайт с робингудом так сказать раздающий лес):
Там в поисковике:
— udemy-Разработка-telegram-ботов-на-python-2020
— Полный курс по веб разработке с нуля на Python + Django (2020)
— udemy-angela-yu-100-days-of-code-Полный-учебный-курс-python-pro-на-2021-год

— Ну собсна сама документация( https://docs.djangoproject.com/en)-не читать доки это кащунство:) так как всегда самая актуальная и полная инфа именно в них
A Byte of Python
Изучаем Python
Test‑Driven Development with Python
Two Scoops of Django
Django. Разработка веб-приложений на Python
Книга Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура
Алгоритмы. Руководство по разработке
Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

Как искал работу:

На поиск работы ушло около полугода. Запаситесь терпением и будьте настойчивы, рынок около-джунами переполнен, а в мидлах-сеньорах в дефиците, вот такая вот штука.
Отшивать будут часто, много. Искал работу по РФ с возможностью переезда куда угодно, хоть за границу, хоть куда.
Типичные вопросы:
— Рассказать несколько алгоритмов
— Решить логическую задачку (у меня была часто задачка 'Задача с девятью шарами' в гугле можно найти спокойно)
— Рассказать про структуры данных
— Ревью моего кода (или их кода) с человеком( почему так, почему сяк) проговаривая в слух мою логику
— Тестовая задачка ( задачи достаточно легкие, смог решить задачу на Golang не зная этого языка)
Типичные отказы:
— Мало / Нет опыта разработки в команде
— Рассматриваем кандидатов только из своего города
— Мы уже наняли
— Без диплома не рассматриваем
— Бесплатная стажировка(тут уже отказывался я)

Схема такая: ищу почту или телефон HR и отправляю лично ему или звоню и прошу почту куда отправить, так как 'отклики' на сайте считаю вообще не эффективными

Мой github/gitlab:
Примечание! Код там ужасен, знаю, проектов там почти нет(а рабочие проекты все запривачены), но как руки дойдут я перепишу свой ужас и
— https://github.com/AntonButyrin
— https://gitlab.com/butyrinhome

Моё резюме(часто отмечали на собесах резюме в положительную сторону, но по хорошему надо еще eng версию сделать):
— https://docs.google.com/document/d/1esMP3WEGhH3n27ptDVWlb4Xr.

На данный момент уже требуется еще front часть от меня (css, js, ajax), так как планируется перевести на зп по выше в фулл-стак разраба, но на начальном этапе требовался исключительно back(sql, django,drf, unix(просто умение поставить сервер),docker) всё на базовом уровне

Составить резюме, набраться определенного багажа знаний, иметь гитхаб и gist гитхаб ну и просто пробивать себе путь, так как дорогу осилит идущий:)

Какие скиллы нужны джуниор-разработчику на Python

Какие скиллы нужны джуниор-разработчику на Python главное изображение

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

Я начну со строгой базы языка. Необходимо понимание всех базовых процессов: как работают функции, списки, декораторы, строки, анонимные функции. Знания так называемого Python core даст толчок к более глубокому изучению. В среднем на осваивание базы уходит месяца два, но это мое мнение. Кто-то может и быстрее — здесь надо учитывать свободное время для изучения, дисциплину, а также, что очень важно, мотивацию. Нужно как можно больше практиковаться.

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

Далее идет серьезная тема для изучения и это ООП (объектно-ориентированное программирование). Тут придется попотеть. Скажу по своему опыту: до меня долго доходило ООП, да и сейчас приходится разбирать и совершенствовать свои знания. Магические методы, классы, объекты — это тот самый «геморрой», с которым придется обязательно разобраться. Ведь дальше идет веб-разработка.

Вот я и перешел к вебу. На нем я сейчас остановился в своем обучении. Тут тоже много технологий, которые нужно освоить: API, web-scrapping, реляционные и нереляционные базы данных. Вы должны иметь четкое представление, как с ними работать. Также надо выбрать один из фреймворков (Django, Flask). Можно, конечно, знать и два сразу. Сейчас очень востребованным является Django, поэтому советую именно этот фреймворк для изучения. Как раз его я изучаю в данный момент.

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

Кто такой Python-разработчик, что делает и где работает

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

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

Python-разработчик – это IT-специалист, который участвует в создании сайтов, игр, онлайн-сервисов, ботов для соцсетей и другого ПО. Язык программирования Python используется в разных отраслях, но наиболее популярен в следующих направлениях:

  • Разработка серверной части веб- и мобильных приложений.
  • Создание десктопных программ и ПО для различных устройств (от телекоммуникационного оборудования до банкоматов).
  • Аналитика и визуализация данных.
  • Машинное обучение (Machine Learning, Deep Learning).
  • Написание скриптов и парсеров.

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

Питон – это про backend или про frontend

Python – это универсальный язык, который используется для реализации разных задач. При желании его можно применять в разработке фронтенда, но в большинстве случаев целесообразнее писать код для внешней (клиентской) части программы на более подходящем языке, например, на JavaScript. Поэтому можно сказать, что Python – это язык для backend-разработки, поскольку он подходит именно для программирования на стороне сервера.

Backend-разработчик на Python – это специалист, который разрабатывает серверную (внутреннюю, скрытую) часть приложения, и отвечает за внутреннюю архитектуру, логику и взаимодействие с базами данных. Его главная цель – сделать так, чтобы сервисы понимали запросы, а сайты правильно реагировали на действия пользователей. Например, чтобы при нажатии кнопки товар добавлялся в корзину или заявка уходила на рассмотрение.

Какие задачи решает бэкенд-разработчик:

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

Что делает fullstack-разработчик

Fullstack-разработчик на Python – это профессия, которая совмещает сразу 2 направления: frontend и backend. То есть full stack – это универсальный специалист, который может самостоятельно и с нуля создавать клиентскую и серверную части сайта или веб-приложения.

Что умеет делать фулстэк-программист:

  • Верстать страницы на HTML и CSS.
  • Разрабатывать фронтенд на JavaScript и React.
  • Программировать бэкенд на Python и Django.
  • Применять принципы клиент-серверного взаимодействия и работать с базами данных.
  • Проводить юнит-тестирование проекта.

Что должен уметь программист на Python

Перечислим, что должен знать и уметь программист на Питоне:

  • Понимать принципы объектно-ориентированного программирования и методологию разработки.
  • Знать систему управления версиями Git и сервис GitHub.
  • Программировать на Python, писать читаемый код.
  • Пользоваться фреймворками Django и Flask, библиотеками, ПО для автоматизации развертывания приложений Docker.
  • Работать с базами данных, алгоритмами и SQL.
  • Тестировать проект на всех этапах разработки.
  • Разбираться в верстке на HTML и CSS.
  • Читать и понимать техническую документацию на английском языке.

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

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

Junior

Junior-разработчик на Python – это начинающий специалист с опытом разработки от 6-12 месяцев, который знает на базовом уровне язык программирования, фреймворк Django и базы данных.

Особенности работы джуниора:

  • выполняет только простые задания по инструкции с использованием 1-2 методов, но не умеет решать нестандартные задачи;
  • часто его код не используется в финальном варианте проекта;
  • знает, где искать ответы на вопросы, но работает только под руководством опытного наставника;
  • специалист более высокого уровня комментирует его ошибки и дает рекомендации по улучшению.

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

Middle

Миддл-разработчик на Python – это специалист среднего звена с опытом от 2-3 лет. Он знает язык программирования и фреймворки на продвинутом уровне, имеет базовое понимание жизненного цикла приложения.

Особенности работы middle-специалиста:

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

Senior

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

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

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

Востребованы ли Питон-разработчики

Python входит в тройку самых популярных языков программирования на протяжении последних лет. Именно его используют крупные технологические компании, например, Uber, Pinterest, Mozilla, Spotify, Netflix и Asana.

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

Чтобы выяснить, насколько востребованы Python-разработчики, мы изучили данные на сайте HeadHunter. На текущий момент опубликовано более 13 000 вакансий для специалистов со знанием языка Питон. Из них:

  • почти 1500 – без опыта;
  • более 6500 – со стажем до 3 лет;
  • порядка 3000 – с возможностью работать удаленно.

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

Место работы

Перечислим отрасли, в которых наиболее востребованы разработчики на Python:

  • IT-компании, которые занимаются разработкой сайтов, приложений, ПО, Machine Learning, Data Science и пр.
  • Интернет-порталы – Mail Group, Rambler.
  • Финансовый сектор – Сбербанк, Уралсиб, Тинькофф, Альфа-Банк.
  • Провайдеры – МТС, Билайн, Мегафон.
  • Онлайн-сервисы – 2Gis, Okko, IVI, сервисы от Яндекс (доставка, такси и др.).
  • Ритейл – DNS, Sunlight, Спортмастер и т. д.
  • Образование – Novakid, Skyeng.
  • Государственные организации.

О зарплатах Питон-программистов читайте в статье Сколько зарабатывает Python-разработчик в России и за границей.

Перспективы профессии

Мы изучили отзывы о профессии и собрали самые распространенные варианты в карьере Питон-разработчика:

Какие минимальные требования для Python-Разработчика(Junior) [закрыт]

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

Закрыт 6 месяцев назад .

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

Я изучил:

  • Синтаксис
  • Git(push, commit, add)
  • Json
  • PyAutoGUI
  • Discord.py
  • Начал изучать SQL(уже знаю INSERT,DELETE,SELECT)

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

Voloading's user avatar

Очень простой алгоритм для любого ЯП на любую позицию.

  1. Гуглите "phyton junior jobs %ваш город или удалённая, если город маленький%".
  2. Собираете статистику требований из вакансий (например, после 5 мин гугления и 10 вакансий могу сказать, что во всех вакансиях Phyton junior/middle упоминается обязательное знания REST-API)
  3. Изучаете наиболее частые требования

+парочку своих небольших синтетических проектов и можно начинать искать работу.

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

Использовал этот метод на себе, когда устраивался на первую работу после окончания учёбы. Устроился сразу на middle позицию, правда времени обучение ушло больше. Главное, не увлекаться и не пытаться изучить всё сразу. Да и потом не выйдет узнать всё. Никогда. Так что выбирайте своё направление внимательно.

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

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