DevFM
2.37K subscribers
80 photos
3 videos
477 links
О разработке: технологии, инструменты, system design, процессы, команды

Для связи @sa_bul
Download Telegram
Backup: август

Python:
1. Управляем зависимостями: poetry / вендоринг
2. Пример логгирования в python / применяем else в цикле for / разбираем код в трёх постах
3. Заглушки для тестирования — постановка задачи и решение

Обучение:
1. Сравнение брокеров сообщений: идеальные критерии
2. Английский язык: почему он важен / как я научился воспринимать английский на слух
3. Чему стоит научиться в вузе? (хватить губить будущее ИТ)

Рассуждаем о программировании:
1. Нормальный ли у меня код?
2. Поддерживаемость кода
3. Чем плох goto?
4. Чему я научился за 30 лет в разработке?

Hardskills:
1. Подводные камни в bash
2. Анатомия Linux

Самое популярное:
Корчеватель ломает науку — как сгенерированные тексты пытаются опубликовать в рецензируемых изданиях

Наши видео:
1. Идеальный скрипт на bash
2. Атака forkbomb в docker
3. Стрим по python

#backup
🔥161👍1
Навигация по каналу

#sudo — наиболее важные посты. Начать знакомство с каналом рекомендуем с них.
#devfm — материалы собственного производства. Не просто аннотации, а наши мысли, статьи и видеоролики.

#python — фокусируемся на самом языке и его библиотеках.
#codereview — разбираем код, находим и устраняем проблемы, превращаем плохой код в хороший.
#procode — о профессиональной разработке и тестировании вне зависимости от языка.
#skills — о смежных с разработкой технических навыках, необходимых для работы и резюме. Инструменты (в том числе git, bash, docker), командная работа, безопасность и прочие фундаментальные вещи.
#systemdesign — проектирование систем и построение архитектуры.
#tools — полезные инструменты для работы.
#edu — полезные нетехнические навыки. Об обучении, продуктивности, английском, умении искать и обосновывать решения.
#youtube — видеоматериалы.
#fun — пятничное развлекательное и культурный код. Обзор художественных фильмов #films, книг #books, комиксов #xkcd и прочего.

#backup — лучшие посты месяца.
1👍183🔥3
Backup: сентябрь

Python
1. Типовая структура python-проекта без веба
2. Вопросы для junior python developer 
3. Зачем WSGI в Python?
4. Почему стоит выбрать Python
5. Возможности f-строк 
6. Разработка надёжных Python-скриптов 
7. Pattern Matching 

Нетехнические навыки:
1. Социальная инженерия Кевина Митника
2. Хорошая и плохая прокрастинация 
3. История поиска работы "Борис опять"

Рассуждаем о программировании:
1. Sublime Merge — графический git-клиент
2. Магия CORS 

Разбираем код:
1. Что же не так в этом коде?
2. Хитрости getattr

Hardskills:
1. Брокер сообщений Apache Kafka 
2. Проектируем сервис: поиск организаций по картам
3. Поиск команд в консоли с помощью ctrl+r 
4. Постигаем git stash 
5. Мониторинг важен. Рабочий мониторинг ещё важнее
6. Продолжаем о собеседованиях 
7. Миграция БД без даунтайма

#backup
🔥8👍321
Backup: октябрь

Hardskills:
1. Docker. Практические советы
2. Тернистый путь к ClickHouse
3. ИИ на службе мошенников 
4. Dependency Injection в python
5. Генеративно-состязательная сеть (GAN)

О программировании:
1. Pre-commit — must have утилита любого проекта
2. Делаем код мягким и шелковистым
3. Технический долг 
4. Git — исход 

Разбираем код:
1. Реализуем read-only атрибуты
2. Поверхностное копирование объектов и изменяемость типов
3. Чисто позиционные параметры

Нетехнические навыки:
1. Какие знания нужны разработчику?
2. Проблемы курсов по программированию
3. Теория разбитых окон
4. Синдром «я так и знал»

Собеседования:
1. Завышать ли опыт в резюме?
2. Пересмотри своё собеседование
3. Что я увидел в своих собеседованиях, часть 1

#backup
🔥9👍63
Backup: ноябрь

Python:
1. Шаблонизатор HTML — Jinja
2. Тестирование миграций alembic
3. refurb — ещё один анализатор кода

Hardskills:
1. Зачем вам нужен докер?
2. Разухабистое логирование
3. Паттерн Сага 
4. Сервис проверки регулярок — regex101
5. Google Global Cache 
6. Проблемы MongoDB
7. Wine для доступа к Windows-приложениям на Linux
8. Снижаем нагрузку на БД с помощью аналитической базы 

Нетехнические навыки:
1. Трекайте рабочее время
2. Ключевая способность программиста 
3. Почему трава зеленая, а программисты крутые
4. Зачем нужны конференции 
5. Преодолеваем постоянное откладывание дел

Собеседования:
1. Что я увидел в своих собеседованиях, часть 2 
2. Задача на собеседовании — проектируем динамическую фильтрацию
3. Собеседование Junior Python Backend Developer 

Пятничное:
Подборка xkcd  / Кто хочет стать миллионером  / Прививка от азартных игр  / Теория подталкивания  / Что такое маркетинг 

Фильмы:
Терминатор  / Здесь курят  / Из машины и Суррогаты / Двухсотлетний человек

#backup
👍4🔥4🌭211
Backup: декабрь. Топ постов за месяц

1. Читаем документацию на примере FastAPI
2. Подборка базовых материалов для python-разработчиков на 2022 год
3. Kubernetes в небольших проектах
4. Регулярные выражения в Python от простого к сложному
5. Ищем свой пароль в файле размером 37 Гб на Python. В комментариях разгорелась дискуссия, заменит ли ChatGPT джунов
6. Хватит пересылать пароли в открытом виде
7. FastAPI best practices
8. Идемпо… что? Улучшаем API
9. Зелёные потоки в Python
10. Давай-давай, пиши документацию

#backup
9🔥72👍2🌭1
Backup: январь

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

О самом важном
— Введение в Kubernetes
Составляем документацию разработчика пошагово без диет и тренировок
Принципы, которыми стоит руководствоваться
ООП на простых примерах

Архитектура проекта
— Проектируем систему — System Design
Практика распила монолита
— Жизненная история. Выбираемся из болота большого проекта
БезТЗатый программист

Интересное по Python
Python import: Advanced Techniques and Tips
— Классные pre-commit хуки
Покоряем большие CSV

Используем базы данных
Индексы в PostgreSQL
Этапы выполнения запросов в PostgreSQL
Manticore Search как замена Elasticsearch

Крутые базовые материалы
Вспоминая git
— Признаки хорошего логирования
Частичное клонирование репозитория

Строим веб-приложение
— Кажется, ваше приложение сейчас пятисотит
Авторизация через OAuth и OIDC
JWT и его друзья

Нейросети нас заменят
— Доступаемся до ChatGPT
Google Coding Interview With An Artificial Intelligence (ChatGPT)

#backup
🔥62🌭2
Backup: февраль

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

Архитектура проекта и деплой
Design distributed cache
Стратегии деплоя
GitOps – все ли так классно?
За всё хорошее, против всего плохого

Важные инструменты
Практикуем Kubernetes
Как kafka хранит данные
Очереди – что сложного то?
Нестареющая классика, шпаргалка по SSH

Интересное по Python
Многопоточный Python на примерах: избавляемся от дедлоков
Мемоизация и каррирование в Python
Введение в logging на Python

Подготовка в собеседованиями
Правильная структура ответа на собеседовании
Как сдвинуть гору Фудзи
Подготовка к интервью в Тинькофф

PostgreSQL
Буфферный кеш в PostgreSQL
NULL в PostgreSQL

Нетехнические навыки:
Моё разочарование в софте
The Lesson to Unlearn — Вредные уроки от Пола Грэма
Упрощаем жизнь руководителю

Необычное для нас: You Suck at Excel with Joel Spolsky

Если пропустили, то подборка за январь

#backup
🔥53🌭2👍1
Backup: март

В этом месяце было много инструментов, баз данных, инфраструктуры и софт-скиллов. Питон тоже не забыт, вспоминали итераторы, FastAPI и именование переменных.

Работаем с проектом
Постигаем gRPC
Снова о микросервисах
Поиск недокументированных API

Софт-скиллы
Teamlead roadmap
Работаем с аудиторией на выступлении – TEDx

Базы данных
Следим за PostgreSQL
Проектируем БД в DB Designer
Где бы ещё сохранить данные? В Greenplum

Python
Итерируем всякое
Как ускорить приложение на FastAPI
Делай нейминг как сеньор

Инструменты
Доступность компа извне с помощью ngrok
Комментарии в маркдауне
Airflow или что-то ещё?

Нас тепло приняли на хабре со статьёй Реверс инжиниринг для самых маленьких на практике

Если пропустили, то подборка за февраль

#backup
5🌭4🔥3👍1
Backup: апрель

Архитектура проекта
Межсервисное взаимодействие
Выбор брокера сообщений
DDD – Domain Driven Design

О программировании
Вариантность типов
Приоритизация технического долга
Асинхронность в браузере

Базы данных
Postgres – как хранить строки?
Работа с json в PostgreSQL

Инструменты
Рисуем схемы
VPN — не панацея

Софтскиллы
Биология поведения человека и лекция о депрессии
Курс Learning How to Learn

В этом месяце мы отметили три года. Если пропустили, то подборка за март.

#backup
👍10🔥52🌭1
Backup: май

Архитектура проекта
1. Load balancing
2. Zero-Downtime Deployments with Docker Compose
3. Как проектировать микросервисы
4. Кеширование на бекенде
5. Асинхронное взаимодействие сервисов с применением Kafka

Копаем вглубь
1. Пагинируем по-всякому
2. Как работает ChatGPT
3. Попробуйте HTMX
4. Работа с памятью

Базы данных
1. О производительности Postgres
2. TOAST – проблемы откуда не ждали

Разное
1. Как мы стали делать офигенно длинные собрания, и почему это больше не вселенское зло
2. Роберт Сапольски — Биология религиозности
3. Вы, конечно, шутите, мистер Фейнман!
4. Сравниваем лампы и батарейки

Если пропустили, то подборка за апрель.

#backup
🔥72👍2
Backup: подборка по базам

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

Практика
Подробный гайд по работе с json в postgres
Какой тип данных использовать для хранения строк в postgres
Куда смотреть, если postgres начала тупить
Базовые настройки Postgres
Работа с NULL в Postgres
Тестирование миграций alembic
Сравниваем базы данных с помощью data-diff
Временные интервалы в postgres
Порядок имеет значение
Утилита postgres_dba

Теория
TOAST – проблемы откуда не ждали
Индексы в PostgreSQL
Буфферный кеш в PostgreSQL
Этапы выполнения запросов в PostgreSQL
ACID в PostgreSQL
Понимаем EXPLAIN в PostgreSQL
Миграции без даунтайма
Храним данные по-разному, в зависимости от цели – создаем аналитическую базу
Введение в Greenplum и пример реального использования
Введение в Manticore и сравнение с Elastic
Тернистый путь к ClickHouse
Оптимизатор Join в Postgres
Как мы боролись с Manticore
Посмотрите на keydb
TimescaleDB для хранения временных рядов

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

#backup
👍30🔥62
Backup: июнь и июль

Этим летом много говорили о проектировании, анонсировали наш курс по Linux, не забывали про Python и даже писали о тимлидстве.

Архитектура проекта
Управление данными в микросервисах
Путь от монолита к микросервисам
Event storming для проектирования сервисов
Retrying consumer in Kafka
Мониторинг — боль

Linux
Бесплатный курс "Командная строка для разработчиков" (готово 3 занятия, пополняется)
Зачем разработчику нужен Linux вообще и терминал в частности
Ковыряем атаку forkbomb на bash в docker

Инструменты
Как документировать архитектуру
Утилита gping — ping на стероидах

Разное
Tracing Python
Попробуйте ruff
Гайд начинающего тимлида
Как находить время "на почитать"

В пятничном развлекательном вы активно реагировали на посты Типы кабелей, 40 лет развития роботов, Что значит ЧБУ, Anki-карточки

Если пропустили, то подборка за май и большая подборка по базам данных

#backup
👍92🔥2🌭1
Backup: август и сентябрь

Мы записали подкаст! Совместное обсуждение разных тем всегда было для нас источником взаимного вдохновения. Мы решили попробовать новый для себя жанр и записали наш разговор: встречайте выпуск Ретроспектива силами команды разработки

Остальное, как обычно, в текстовом виде.

Я люблю питон, и вот почему он меня бесит

Базы данных
Посмотрите на keydb
Временные интервалы в postgres

Управляем людьми
Как сделать из линейного сотрудника начальника
Managing difficult software engineers

Инструменты
Утилита lazy-docker
Любимые шрифты для разработки

Если пропустили, то подборка за июнь и июль

#backup
🔥8👍511
Бекап постов за последнее время

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

Материалы, подготовленные нами:
▫️Багскрам – что это и для чего нужен
▫️Как мы начали улучшать процесс в команде после анализа багов
▫️Опыт ведения дел
▫️Фиксация зон ответственности разработки – как и зачем
▫️Для чего нужны архитектурные схемы
▫️И снова о необходимости архитектурных схем
▫️Наш небольшой подкаст на тему: Кто такой тимлид тимлидов
▫️Шуточный пост на тему оценки задач

Обзоры статей:
▪️Отличный гайд от гугла по API
▪️Боль от распухающей базы данных
▪️Всё ли так просто с ретраями?
▪️Оптимизация Postgres за счёт порядка колонок в таблице
▪️Как в гугл пишут дизайн доки
▪️The ultimate docker compose cheat sheet
▪️RESTful web API design

Так же мы советовали несколько отличных книг:
🔹Книга "Думай медленно... Решай быстро" от лауреата Нобелевской премии по экономике – Даниэля Канемана
🔹Книга "Релевантный поиск"
🔹Книга "Getting Real"

#backup
54🔥4👍2
Backup: архитектура систем

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

— Для чего нужны архитектурные схемы
Как документировать архитектуру
Google design docs
— C4 model для документирования архитектуры
Анализ источника багов как начало улучшения процессов работы в команде
— Фиксируем зоны ответственности проекта
— визуализируем работу с помощью Value Stream Mapping

Это продолжение цикла тематических подборок. Предыдущая подборка материалов по базам данных.

#backup #systemdesign
🔥73👍2