Хотел бы сегодня затронуть такую важную, но несправедливо игнорируемую тему, как ревьювер экспириенс (RX).
Наверняка у вас тоже иногда бывает такое, когда пулл-реквест разрастается на слишком много тысяч строк, и он затем тяжело проходит код-ревью, потому что смотреть на него доставляет физическую боль. Есть трюк, который поможет сократить дифф примерно вполовину, а в некоторых случаях даже сильнее.
Следите за простой арифметикой. Допустим, вы полностью переписываете какой-то метод из N строк. В диффе получится N удалений и N добавлений, итого — 2 * N.
Вывод: создавая пулл-ревест, подумайте о чувствах того, кто будет его читать. Идите ему навстречу, улучшайте его экспириенс, уменьшайте объем его работы, и он в итоге напишет вам меньше дискуссий, так что процесс пройдет проще для всех сторон.
Пользуйтесь этими лайфхаками на радость вашим коллегам! Желаю, чтобы ваши пулл-реквесты-многотысячники всегда быстро и без единого вопроса собирали нужные аппрувы! ✊
#секретымастерства
Наверняка у вас тоже иногда бывает такое, когда пулл-реквест разрастается на слишком много тысяч строк, и он затем тяжело проходит код-ревью, потому что смотреть на него доставляет физическую боль. Есть трюк, который поможет сократить дифф примерно вполовину, а в некоторых случаях даже сильнее.
Следите за простой арифметикой. Допустим, вы полностью переписываете какой-то метод из N строк. В диффе получится N удалений и N добавлений, итого — 2 * N.
class Example:
- def method(self, arg1):
- return 1
+ def method(self, arg2):
+ return 2
Это много. Это может спугнуть ревьювера, и он просто не откроет ваш пулл-реквест, поэтому лучше так не делать. Есть до безобразия гениальное решение — просто напишите новый код метода ниже, и он заменит собой старый! Код работает точно так же, тесты выдают красивую зеленую галочку, а дифф сократился в два раза, потому что больше нет удалений! class Example:
def method(self, arg1):
return 1
+ def method(self, arg2):
+ return 2
Аналогично можно поступать и с классами целиком, и даже с целыми файлами. Если же вам нужно избавиться от класса, метода или функции, то можно использовать волшебное слово del
, и тогда в диффе вообще окажется только одна строчка: class Example:
def method(self):
...
+ del method
Кроме того, я рекомендую ещё на этапе написания кода подумать о будущих правках, которые его непременно настигнут, и писать как можно более длинные строки. Лучше сразу же закладываться в хорошие практики и традиции. За счёт длины вы уменьшите количество строк, а значит и все диффы в будущем будут меньше. Код становится короче и выразительнее, а вам и вашим коллегам придётся меньше скроллить вверх-вниз. В Python для этого можно использовать множественные присваивания, точку с запятой и многие другие приёмы:import requests, psycopg2; session, number, connection, matrix = requests.Session(), 5, psycopg2.connect("postgresql://localhost/dbname"), [[1, 2], [3, 4]]Кстати, насчёт тестов. Лучше без большой необходимости их вообще не трогать. Но если уж вам пришлось, то лучше сделать один тест (новый), который проверяет все аспекты сразу — и позитивные, и негативные кейсы, и краевые случаи, и бенчмаркает скорость работы, и проверяет отсутствие утечек памяти. Чтобы он был и юнит, и интеграционный одновременно. Можно описать это всё через несколько слоёв параметризаций. Для простоты тестирования лучше сразу же замокать все внешние системы, а также проблемные части кода, иначе тест будет падать и его придётся каждый раз переписывать, когда что-то меняется, а это раздует диффы.
for _ in range(5): print("Hello!")
Вывод: создавая пулл-ревест, подумайте о чувствах того, кто будет его читать. Идите ему навстречу, улучшайте его экспириенс, уменьшайте объем его работы, и он в итоге напишет вам меньше дискуссий, так что процесс пройдет проще для всех сторон.
Пользуйтесь этими лайфхаками на радость вашим коллегам! Желаю, чтобы ваши пулл-реквесты-многотысячники всегда быстро и без единого вопроса собирали нужные аппрувы! ✊
#секретымастерства
Из предыдущего поста всерьёз нужно воспринять лишь часть про важность подготовки. Остальное всё фарс и сатира, конечно.
При подготовке вашего кода к ревью обязательно учитывайте, что читать его будут такие же отвлекающие и рассеянные кожаные мешки, как и вы. Обычно людям сложно читать длинные тексты, поэтому не перегружайте их изменениями. Особенно, если эти изменения не механического характера (например, массовая замена одного слова на другое в тексте), а требующие вдумчивого осмысления (например, как-то меняется иерархия классов).
А вообще зайти в пулл-реквест и начать его читать — это само по себе непростая задача. И чем больше изменений, тем сложнее будет победить внутренний голос, который кричит: «нет, пожалуйста, только не снова пулл-реквест на две тысячи строк, это ведь я до вечера читать буду».
Нет никакого универсального простого способа сделать код-ревью большого пулл-реквеста легче, кроме может быть разбиения его на более мелкие части.
При подготовке вашего кода к ревью обязательно учитывайте, что читать его будут такие же отвлекающие и рассеянные кожаные мешки, как и вы. Обычно людям сложно читать длинные тексты, поэтому не перегружайте их изменениями. Особенно, если эти изменения не механического характера (например, массовая замена одного слова на другое в тексте), а требующие вдумчивого осмысления (например, как-то меняется иерархия классов).
А вообще зайти в пулл-реквест и начать его читать — это само по себе непростая задача. И чем больше изменений, тем сложнее будет победить внутренний голос, который кричит: «нет, пожалуйста, только не снова пулл-реквест на две тысячи строк, это ведь я до вечера читать буду».
Нет никакого универсального простого способа сделать код-ревью большого пулл-реквеста легче, кроме может быть разбиения его на более мелкие части.
О, круть, калькулятор, который умеет запускать питон
https://education.ti.com/en/products/calculators/graphing-calculators/ti-84-plus-ce-python
https://education.ti.com/en/products/calculators/graphing-calculators/ti-84-plus-ce-python
Ti
TI-84 Plus CE Family Graphing Calculators | Texas Instruments
Go beyond math and science. TI-84 Plus CE family graphing calculators come with programming languages so students can code — anywhere, anytime.
Питонические атаки
Кстати, снова про спонсоров Python Software Foundation. Мне почему-то показалось, что только Microsoft недавно стал Visionary Sponsor, хотя на самом деле два других спонсора — Google и Bloomberg — тоже получили этот статус совсем недавно. Благодаря этому PSF…
А вот и стало известно, что одна из вакансий от PSF закрыта, и не абы кем. Теперь Łukasz Langa фулл-тайм работает над развитием CPython как Developer-in-Residence. Напомню, он ещё в качестве волонтера был менеджером нескольких последних релизов и написал несколько PEP, так что судя по всему он отлично подходит на эту роль. А ещё является автором автоформаттера
Круто работать над любимым проектом. Лучше может быть только когда тебе за это ещё и платят 😅
https://lukasz.langa.pl/a072a74b-19d7-41ff-a294-e6b1319fdb6e/
black
и пишет прикольную музыку.Круто работать над любимым проектом. Лучше может быть только когда тебе за это ещё и платят 😅
https://lukasz.langa.pl/a072a74b-19d7-41ff-a294-e6b1319fdb6e/
lukasz.langa.pl
I am the new CPython Developer in Residence - Łukasz Langa
This is some of the most amazing news in the past few years for me. Python needs full-time development to stay competitive, I’ve been talking about this for years, dreaming about it for even longer than that. Now it’s becoming a reality. Today is my first…
Рейтинг веб-фреймворков на Python, составленный с учётом множества параметров — количество скачиваний, звёзды на GitHub, вопросы на StackOverflow, и так далее. Автоматически обновляется.
https://github.com/tbicr/web-framework-rank#
https://github.com/tbicr/web-framework-rank#
GitHub
GitHub - tbicr/web-framework-rank: Wisdom of the crowd web framework rank
Wisdom of the crowd web framework rank. Contribute to tbicr/web-framework-rank development by creating an account on GitHub.
Питонические атаки
Неделю назад появился черновик PEP 657, который предлагает в трейсбеках показывать не только номер строки, где возникла ошибка, но и смещение (то есть номера символов в строке). Таким образом вместо вот такой расплывчатой ошибки: Traceback (most recent call…
Все, это теперь точно, в 3.11 будут красивые трейсбеки.
https://twitter.com/pyblogsal/status/1416034899639750659?s=20
https://twitter.com/pyblogsal/status/1416034899639750659?s=20
Twitter
Pablo Galindo
After a lot of work, we have finished the implementation of PEP 657 🚀🎉. In Python 3.11🐍, tracebacks will annotate where exactly the error is happening in your code 🤯. No more confusion having to guess what part of the expression is wrong. Learn more at p…
Там, кстати, PyCon Russia 2021 через полтора месяца собирается произойти. Если вдруг что, имейте ввиду. Событие оффлайновое, Московская область. Обещают, что состоится в любом случае.
В программе есть интересные доклады. Например, Никиту Соболева я бы послушал. Ну ничего, через пару-тройку лет как раз моя очередь просмотра выступлений доползёт до 2021 года, и посмотрю на ютубе 😅
https://pycon.ru/program
В программе есть интересные доклады. Например, Никиту Соболева я бы послушал. Ну ничего, через пару-тройку лет как раз моя очередь просмотра выступлений доползёт до 2021 года, и посмотрю на ютубе 😅
https://pycon.ru/program
pycon.ru
Программа PyCon Russia
Темы и спикеры конференции PyCon Russia - конференции для продвинутых python-разработчиков
Рантайм Python 2.7 теперь официально депрекейтнут в AWS Lambda. Что это значит?
* Больше нельзя создавать новые функции на питоне 2.7 (проверил в веб-интерфейсе — и правда, такого рантайма просто нет в списке).
* Больше не будет патчей и обновлений. Тех.поддержка будет вас игнорировать, если спрашивать про этот рантайм. Дальше каждый сам за себя.
* Обновлять код существующих функций можно будет еще до 30 сентября. После этого нельзя будет ни создавать, ни обновлять, но всё ещё можно будет запускать.
https://aws.amazon.com/blogs/compute/announcing-end-of-support-for-python-2-7-in-aws-lambda/
* Больше нельзя создавать новые функции на питоне 2.7 (проверил в веб-интерфейсе — и правда, такого рантайма просто нет в списке).
* Больше не будет патчей и обновлений. Тех.поддержка будет вас игнорировать, если спрашивать про этот рантайм. Дальше каждый сам за себя.
* Обновлять код существующих функций можно будет еще до 30 сентября. После этого нельзя будет ни создавать, ни обновлять, но всё ещё можно будет запускать.
https://aws.amazon.com/blogs/compute/announcing-end-of-support-for-python-2-7-in-aws-lambda/
Amazon
Announcing end of support for Python 2.7 in AWS Lambda | Amazon Web Services
On July 15, 2021, AWS Lambda will deprecate Python 2.7 as a supported runtime, formally ending our Python 2.7 support.
Судя по этому рейтингу, много людей всё ещё гоняет свои функции на Python 2.7. Даже больше, чем на Java и Go. Что ж, теперь их и без того полная невзгод и тягот жизнь станет ещё чуточку сложнее. Сочувствую, но не от всего сердца.
https://www.datadoghq.com/state-of-serverless/#8
https://www.datadoghq.com/state-of-serverless/#8
А вы используете make и Makefile в ваших проектах на питоне? Если нет, то где вы описываете ваши служебные скрипты?
https://venthur.de/2021-03-31-python-makefiles.html
https://venthur.de/2021-03-31-python-makefiles.html
venthur.de
Writing Makefiles for Python Projects | Bastian Venthur's Blog
Exploring two different strategies for using Makefiles in Python projects
Если вдруг кто совсем не вдупляет (я и сам пока не до конца вдупляю), что это за AWS Lambda и идеология серверлесс в целом, про которые я там выше упоминал, могу порекомендовать вот этот курс:
AWS Serverless APIs & Apps - A Complete Introduction
Автор Maximilian Schwarzmüller — офигенный чувак. По-моему, самый топовый лектор на Udemy. Когда-то смотрел его курсы по фронтендовым React и Vue, но, как выяснилось, он делает курсы на различные айтишные темы (в том числе есть курсы и про Python). Всегда всё красиво и понятно подано, забавные примеры. Курсы на английском, но воспринимается легко.
Кстати, не покупайте курсы на Udemy за дорого. Если вдруг вам показывает цену 7-10к рублей, то дождитесь распродажи (оно раз в месяц там точно случается), и купите потом за 1к.
AWS Serverless APIs & Apps - A Complete Introduction
Автор Maximilian Schwarzmüller — офигенный чувак. По-моему, самый топовый лектор на Udemy. Когда-то смотрел его курсы по фронтендовым React и Vue, но, как выяснилось, он делает курсы на различные айтишные темы (в том числе есть курсы и про Python). Всегда всё красиво и понятно подано, забавные примеры. Курсы на английском, но воспринимается легко.
Кстати, не покупайте курсы на Udemy за дорого. Если вдруг вам показывает цену 7-10к рублей, то дождитесь распродажи (оно раз в месяц там точно случается), и купите потом за 1к.
JetBrains опубликовали результаты своего исследования экосистемы разработки за 2021 год.
Кроме ключевых результатов, которые на скриншоте, мне показалось интересным еще вот это:
* 53% питонистов занимаются веб-разработкой, и лишь 31% занимаются дата саенсом и машин лёрнингом (это всё равно заметно больше, чем в других экосистемах).
* О миграции на Python задумываются в основном программисты на языках, задействованных в веб-разработке (JS, TS, PHP, SQL). Питонисты же интересуются миграцией на Go, Kotlin, TS и Rust.
* Гоферы сильнее всего интересуются Rust.
* В Индии самым популярным языком является Python. Да, даже популярнее C++, вопреки распространённым мифам.
* В азиатских странах (Китай, Южная Корея) много джавистов, а в Турции C# заметно популярнее других языков.
* В США средние зарплаты в ~2 раза выше, чем в Канаде и Англии, и в ~5 раз выше, чем в РФ.
* В свободное время программисты больше всего любят играть в видеоигры и программировать. Мы за ЗОЖ (задротский образ жизни), так держать!
#jetbrains
Кроме ключевых результатов, которые на скриншоте, мне показалось интересным еще вот это:
* 53% питонистов занимаются веб-разработкой, и лишь 31% занимаются дата саенсом и машин лёрнингом (это всё равно заметно больше, чем в других экосистемах).
* О миграции на Python задумываются в основном программисты на языках, задействованных в веб-разработке (JS, TS, PHP, SQL). Питонисты же интересуются миграцией на Go, Kotlin, TS и Rust.
* Гоферы сильнее всего интересуются Rust.
* В Индии самым популярным языком является Python. Да, даже популярнее C++, вопреки распространённым мифам.
* В азиатских странах (Китай, Южная Корея) много джавистов, а в Турции C# заметно популярнее других языков.
* В США средние зарплаты в ~2 раза выше, чем в Канаде и Англии, и в ~5 раз выше, чем в РФ.
* В свободное время программисты больше всего любят играть в видеоигры и программировать. Мы за ЗОЖ (задротский образ жизни), так держать!
#jetbrains
В том же исследовании была часть для тех, кто указал Python основным языком. Это намного беднее отдельного исследования про питонистов, которое тоже проводит JetBrains (самые свежие результаты есть за 2020 год). Всё равно интересные данные.
#jetbrains
#jetbrains
Там есть ещё результаты и по другим языкам, поищите там свой любимый. Вот тут, например, результаты про Rust.
* Большинство проектов всё ещё разрабатываются либо как хобби, либо как пет-проекты. Это объясняет, почему проекты на этом языке чаще всего разрабатываются в одиночку. Только 16% разработчиков пишут на расте на работе.
* Большая часть людей только вкатывается в язык (от 1 до 6 месяцев).
* Большинство разработчиков на Rust пишут код в VS Code. Код часто дебажится принтами, но среди пользователей CLion заметно выше процент использования визуального отладчика.
* Среди разработчиков на Rust намного выше вовлеченность в опен-сорс, чем в среднем по больнице.
#jetbrains
* Большинство проектов всё ещё разрабатываются либо как хобби, либо как пет-проекты. Это объясняет, почему проекты на этом языке чаще всего разрабатываются в одиночку. Только 16% разработчиков пишут на расте на работе.
* Большая часть людей только вкатывается в язык (от 1 до 6 месяцев).
* Большинство разработчиков на Rust пишут код в VS Code. Код часто дебажится принтами, но среди пользователей CLion заметно выше процент использования визуального отладчика.
* Среди разработчиков на Rust намного выше вовлеченность в опен-сорс, чем в среднем по больнице.
#jetbrains
JetBrains: Developer Tools for Professionals and Teams
Rust Programming - The State of Developer Ecosystem in 2021 Infographic
The State of Developer Ecosystem 2021 is a detailed report about the programming community, which covers the latest trends in languages, tools, technologies, and lifestyles of developers.