Книжный куб
11.2K subscribers
2.69K photos
6 videos
3 files
2K links
Рекомендации интересных книг, статей и выступлений от Александра Поломодова (@apolomodov), технического директора и эксперта в архитектуре
Download Telegram
Крошка Экскаватор (Little Excavator)

Эта детская книжка от Анны Дьюдни понравилась моему сыну еще когда он увидел ее на задней обложке книг про Ламу, которые были очень хороши:)
В итоге, я купил ее и мы вместе ее изучали:
- Новый герой Анны Дьюдни - это крошка экскаватор, который оказывается на настоящей стройке
- Он пытается помочь другим машинам построить парк на месте пыстуры
- Но все, за что он берется, у него выходит вкривь и вкось - слишком уж он мал
- Но на этапе финальной отделки находится дело и для малыша, которое он успешно выполняет
- В итоге, все довольны - парк готов, а все машины и даже крошка Э поучаствовали в его обустройстве

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

Вот видеоверсия сказки на английском.

P.S.
Вот мои упоминания книг про крошку Ламу
- Лама красная пижама
- Лама сердится на маму
- Лама в гостях у бабушки с дедушкой
- Лама в садике без мамы

#ForKids
🔥95👍2
Стрим с Сергеем Щербининым про инженерную культуру в Тинькофф

Вчера вечером мы вместе с Сергеем пообщались в рамках "безвотэтоговотвсего" и обсудили большое количество вопросов, среди которых самыми интересными были:
- Что поменялось в Тинькофф за 7 лет, что я уже в компании
- Как мы выглядим внутри с точки зрения управления и организации работы и что позволяет разным нашим продуктам двигаться вместе (я рассказывал об этом на примере мобильного приложения Тинькофф на Highload++ 2022)
- Как устроены архитектурные подходы в компании (я про это рассказывал как-то на ArchDays 2020)
- Как можно смотреть на эффективность разработки (тут я вспомнил про темп разработки и качество продукта, см. подробнее в книге "Accelerate" и моем выступлении "Improving software flow" на нашем фестивале в Казани неделю назад)
- Какие культурные ценности в компании и почему именно такие (про это я пока только планирую дописать статью)
- Какие еще есть компании в России с крутой инженерной культурой

#Management #Leadership #Engineering #SoftwareDevelopment #Architecture #Podcast #Software
6👍6🔥2🥰1
Трек "Архитектура, надежность, качество" на ИТ-пикнике

Через 2 недели, 2 сентября в Коломенском пройдет большой ИТ-пикник от Тинькофф, DevFest и Мельницы. Там будет музыка, научпоп, выступления про AI, менеджмент и конечно про архитектуру. И как раз в последнем треке получилось собрать крутых ребят в программный комитет: Олег Бондарь - CPO Yandex DB, Максим Смирнов - архитектор и автор популярного канала "Архитектура ИТ-решений", Дмитрий Масленников - руководитель центра надежности в Тинькофф, плюс последний участник - это автор этого канала.

А дальше уже мы собрали отличных спикеров с крутыми выступлениями в программу нашего трека. В итоге, получилась такая dream team:
- Дима Крутик из Тинькофф расскажет про то, как мы оцениваем качество услуг глазами глазами клиентов
- Сергей Баранов из Scrumtrak расскажет про восстановление архитектурных знаний
- Михаил Кабищев из Озон расскажет про internal developer platform в Озоне, зачем она нужна и как помогает эффективнее разрабатывать
- Егор Гордовский из Яндекс расскажет про то, как устроены датацентры Яндекса
- Павел Лакосников из Авито расскажет про паттерны отказоустойчивой архитектуры на примерах
- Андрей Якушев из VK расскажет про архитектуру ленты и рекомендаций в VK

Если вас заинтересовали эти темы, то приходите на фестиваль именно на наш трек:)
Для участия вам потребуется выбрать благотворительный фонд из списка и сделать донат от 1000 рублей. Подробности и регистрация — тут.

#Conference #Architecture #Software #SRE #QualityAssurance #SoftwareDevelopment #SoftwareArchitecture #DistributedSystems
👍13🔥51
Why Is My App SLOw? Defining Reliability in Platform Engineering • Jez Humble • GOTO 2023

Интересный доклад от Jez Humble, техлида SRE команды, которая поддерживает сервисы serverless платформы в Google Cloud. Основная проблематика следующая: в рамках этой платформы надо отслеживать ее работоспособность, но
- Ориентироваться при этом на восприятие клиентов того, насколько хорошо работают их приложения поверх платформы
- Можно ориентироваться на latency приложений, но у них разброс latency в пять порядков (от миллисекунд до сотен секунд)
- Можно ориентироваться на request delivery metrics, которые мерят время от попадания в сетевой слой Google и до доставки запроса до приложения и обратную часть этого цикла - но это чуть искусственная метрика.

В итоге, ребята поставили себе целью придумать метрику со следующими свойствами
- A metric that represents the customer experience
- Combinable across projects / cells / regions
- Can be used to detect anomalies affecting multiple customers (likely platform issues)
- Computationally cheap (high QPS)
- Principle-based


И они нашли ее опираясь на понимание статистики и используя концепцию стационарности (свойство процесса не менять свои характеристики со временем). Если кратко, то они выделил отдельные когорты запросов по версии приложений, развернутых в serverless платформе. Дальше для каждой когорты проверили укладывается ли распределение ее latency в логнормальное распределение. Если укладывается, то сохранили параметры распределения в базу, если нет, то откинули эту когорту. В итоге, половина нагрузок укладывается в логнормальное распределение. Дальше ребята используют подход 2 сигма для измерения 2 стандартных отклонений от среднего для каждой из когорт и собирают это в график, гда видно каков процент таких рабочих нагрузок с таким большим отклонением. Нормальное состояние платформы характеризуется 2% -5% рабочих нагрузок с отклонениями больше 2 сигма, а вот если этот показатель поднимается до 10%, то это повод для беспокойства. Для построения такого распределения обычно используется 15 минутное окно. Дальше автор рассказывает как это работает в деталях, но мне интересно рассказать еще о выводах, которые Jez подводит в самом конце доклада
- We can reliably detect and measure the impact of platorm regressions
- Reliability is a shared property (between customer & service)
-- Reconstruction of end to end behavior is critical
- Metric combinability is critical for analysis
- Variability is what customers actually care about
- Distributed systems ofen produce decorrelation
-- We can measure it, and its absence
- Workload correlation can identify proximate causes


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

P.S.
Слайды доступны здесь.

#SRE #SystemDesign #Software #Architecture #Metrics #SoftwareArchitecture #Engineering #Math #ContinuousDelivery
6👍6🔥4
Dream Team. Как создать команду мечты

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

В общем, читать книгу мне было интересно, но ... вот со второй половиной книги надо быть аккуратнее:)
👍82🔥2
Типичные ошибки проектирования (Bug Patterns In Java)

Эта книга из начала моей карьеры. На английском она вышла в 2002 году, а уже в 2003 году издательство Питер применило креатив при переводе и "Bug Patterns in Java", которые можно было перевести как паттерны багов в Java превратилась в типичные ошибки проектирования:) Но несмотря на креатив в названии, книга показалась мне тогда полезной и объемной. В ней всего 23 части
1. Agile Methods in a Chaotic Environment - здесь речь шла про гибкие подходы, концепцию паттерно в общем в и паттернов багов конкретно, а также зачем их изучать
2. Bugs, Specifications, and Implementations - объяснение как понять что такое баг, а что такое фича. После прочтения легко становится понятна фраза "Это не баг, это фича":)
3. Debugging and the Development Process - как отлаживаются программы, про парное программирование, про общее владение кодом и про написание тестов для "всего, что может сломаться"
4. Debugging and the Testing Process - как писать тестируемые программы, про статический контроль типов, правильные абстракции и инкапсуляцию, хорошие интерфейсы
5. The Scientific Method of Debugging - обсуждение научного подхода к дебагу - наблюдение, построение гипотез, проверка гипотез при помощи экспериментов, повторение этих шагов в цикле, пока не исправим проблему
6. About the Bug Patterns - расказ про важность паттернов багов, объяснение как выглядит такой антипаттерн и большой справочник по отладке программ
7. The Rogue Tile - это антипаттерн фальшивая черепица, в котором программа после исправления ведет себя так, как будто баг не был исправлен. Причина может быть в том, что проблемная логика растиражирована внутри приложения и ее нужно вынести в общее место и починить один раз там:)
8. Null Pointers Everywhere! - стандартная история с Java:)
9. The Dangling Composite - болтающийся компонент, который характерен для рекурсивно определенных типов данных, где некоторым базовым случаям не выделяются классы, а используются null pointers
10. The Null Flag - когда программа вместо выкидывания значимого исключения кидает null pointer exception.
11. The Double Descent - проблема с рекурсивным обходом составной структуры, когда мы прыгам более чем на один щаг вниз
12. The Liar View - антипаттерн "лживое представление" на случай, когда используется паттерн MVC и работа представления и модели расходится
13. Saboteur Data - история про косяки с валидацией входных данных и дальнейшим их использованием внтури приложения
14. The Broken Dispatch - косяки с полиморфизмом и перегрузкой методов
15. The Impostor Type - тип-самозванец, когда программа одинаково обрабатывает принципиально разные типы данных. Про такую проблему рассказывал Джон Остерхут в книге "A philosophy of software design" как о проблеме, которую он пытался найти полгода:)
16. The Split Cleaner - проблемы при некорректном управлении ресурсами, когда они или не освобождаются или наоборот делают это слишком рано
17. The Fictitious Implementation - проблема, когда реализация интерфейса не удовлетворяет некоторым содержащимся в нем инвариантам
18. The Orphaned Thread - проблема в многопоточном приложении, когда потоки остановились в ожидании данных от поттока, что прекратил свою работу
19. The Run-On Initialization - проблема при инициализации атрибутов класса, когда конструктор инициализировал не все из них
20. Platform-Dependent Patterns - платформо-зависимые ошибки
21. A Diagnostic Checklist - список вопросов и симптомов некорректного поведения, который можно использовать для дебага
22. Design Patterns for Debugging - паттерны проектирования, которые помогают в отладке (первый паттерн в использовании статической типизации)
23. References - ссылки на ресурсы, что были полезны 20 лет назад:)

#Software #SoftwareArchitecture #Patterns #Design #Architecture #SoftwareDevelopment #Engineering
👍93🔥3
Обзор книги "Team Geek. A Software Developer’s Guide to Working Well With Others"

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

#SoftwareDevelopment #SelfDevelopment #Engineering #Management #Leadership #ExternalReview
🔥9👍42
Скрапинг веб-сайтов с помощью Python 2 издание (Web Scraping with Python: Collecting More Data from the Modern Web 2nd Edition)

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

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

#SoftwareDevelopment #Software #Architecture #Engineering
👍154🔥1🤔1
Яхтенный глэмпинг парк "Точка Немо"

Вместе с женой и тремя сыновьями уехали на 4 дня в глэмпинг, который в отличие от названия, расположен не в южной части Тихого океана, а под Ярославлем:)
Мы живем в лесу на берегу реки в двух домиках: шарообразный купол для жены, самого мелкого сына и меня, а также домик на дереве для старшего и среднего сына. Домики достаточно комфортные и удобные для проживания, а рядом с домиками есть купели в виде большой бочки, где можно отдохнуть вечером в горячей воде. У детишек днем и вечером плотная программа - они учатся ходить под парусом, ходят в походы, жарят маршмелоу на костре, а мы с женой и самым маленким гуляем по территории:)

В общем, тут действительно можно отдохнуть на природе с детьми и чуток выдохнуть перед началом нового учебного года:)

#Holidays
👍287🔥5
Meet For Charity

Сегодня стартовал благотворительный аукцион Meet For Charity, где в качестве лота предлагается встреча со мной:)

Формат аукциона следующий
- для победителя аукциона я проведу небольшую экскурсию по офису Тинькофф и дальше мы пообщаемся за обедом в нашем ТЦ Водный
- собранные по итогам аукциона средства будут направлены в фонд «Нить добра»

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

P.S.
Ну и немного формальной части про меня:
- я работаю в Тинькофф почти семь лет и являюсь техническим директором юнита клиентские интерфейсы, маркетинг и вовлечение в Тинькофф
- до этого успел побыть руководителем группы разработки в Банки.ру и Woman.ru
- когда-то был software development engineer, а до этого успел закончить Физтех (МФТИ)

P.P.S.
Плюс победителю я подарю книгу Олега Тинькова "Революция. Как построить крупнейший онлайн-банк в мире", в одной из глав которой рассказывается про машину привлечения клиентов, к строительству которой я приложил руку:)

#Charity #Software #Management #Leadership
👍20🔥136🤔1
Практика визуального мышления. Оригинальный метод решения сложных проблем (Unfolding the Napkin. The Hands-On Method for Solving Complex Problems with Simple Pictures)

Эта книга Дэна Роэма продолжает книу «Визуальное мышление», в которой рассказывалось как простые рисунки могут играть в деле генерации идей и коммуникациях в целом. Она представила новую интересную методику решения совершенно различных проблем — от стратегических вопросов топ-менеджмента до самых прозаичных офисных проблем. А в книге-продолжении помогает читателям внедрить свою методику в ежедневную практику. Книга полна подробных примеров, упражнений и пустого места для ваших рисунков.

Я прочитал эту книгу с удовольствием. Единственная проблема - надо было продраться через скучные повторы первых пятидесяти страниц (ощущение, что их писали для страдающих от провалов в памяти). Как только вводная часть с большим количеством повторов закончилась, все стало очень интересно и полезно, например
- Мне понравилось то, что автор выделил 6 вопросов для решения любой проблемы, на которые надо ответить при помощи картинок. Я запомнил эти вопросы в таком порядке Что, Где, Когда (по названию знаменитой телепередачи) и оставшиеся 3 - Сколько, Как, Почему.
- Мне зашла концепция о глубине проработки проблемы для разных людей, которым ты хочешь донести свои мысли. Т.е. для кого-то требуется подготовить верхнеуровневую картину без погружения в детали, а другим же требуется детализированное отображение. Если не понимать потребности этих людей, то первые посчитают, что ты их перегружаешь ненужными деталями, а вторые решат, что ты не разбираешься в рассматриваемом вопросе:)

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

#SelfDevelopment #Brain #Patterns #Creativity
👍124🔥1
Выбор. Правила Голдратта (The Choice)

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

P.S.
Подробнее про концепции Голдратта можно почитать в других постах
- Теория ограничений Голдратта (Goldratt's Theory of Constraints: A Systems Approach to Continuous Improvement)
- Критическая цепь (Critical Chain)

#Management #Processes #Project #ProjectManagement
14👍6🕊2