Книжный куб
11.1K subscribers
2.65K photos
6 videos
3 files
1.95K links
Рекомендации интересных книг, статей и выступлений от Александра Поломодова (@apolomodov), технического директора и эксперта в архитектуре
Download Telegram
Элегантные объекты. Java Edition (Elegant Objects)

Лет 5 назад я прочитал эту книгу за авторством Егора Бугаенко. И я не рекомендую читать целиком данную книжку junior и middle разработчикам, т.к. автор живет в своем выдуманном мире чистого ООП:) Но некоторые разделы прочитать бы стоило:) Senior'ам и архитекторам читать будет интересно в том случае, если они хотят заочно поучаствовать в holy war относительно того какой ООП считать достаточно оопшным. В общем и целом, часть разделов книги крайне хороши, а вот другие крайне сомнительны. Но в любом случае редко какая книга напоминала мне поездку на американских горках и вызывала такой эмоциональный отклик. Я бы переименовал книгу в Догмы ООП от Егора. В этом случае название было бы гораздо ближе к содержанию.
Кстати, книга составлена из заметок автора в его блоге - в итоге, часть заметок противоречат сами себе:)
Ну и напоследок примеры догм:
- "... я рекомендую инкапсулировать не более 4х объектов. ... Без исключения"
- "Не используйте публичные константы"
- "Если в классе меньше 5 публичных методов, то это приемлемо. Если их больше, класс нуждается в рефакторинге" - (опять магическое число взятое с потолка)
- "Не используйте статические методы"
- "Никогда не используйте сеттеры и геттеры"

#Software #SoftwareDevelopment
👍11😁7👏32
Я — легенда (I Am Legend)

Этот научно-фантастический роман Ричарда Мэтисона интересно прочитать в оригинале, а не смотреть в популярной экранизации 2007 года с Уиллом Смитом. В самом романе главный герой, Роберт Невилл, оказывается единственным человеком, что не заразился болезнью, похожей на вампиризм. Он живет в хорошо укрепленном домене и днем охотится на вампиров, которые ночью охотятся на него. В какой-то момент он решает найти лекарство от болезни и начинает заниматься исследованиями для победы над возбудителем вампиризма, бактерией, вступающей в симбиоз с клетками крови...

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

#SciFi
👍153👏3
Вторая серия Code of Architecture по книге "A Philosophy of Software Design"

Сегодня в 18:00 по Москве мы продолжим обсуждать как уменьшить сложность за счет правильного разделения на модули. А если говорить точнее, то мы обсудим 7-11 главы книги "A Philosophy of Software Design", в которых Джон Оустерхаут продолжает тему про модули, рассказывая про следующие темы
— на разных уровнях используйте разные абстракции;
— перемещение сложности вниз;
— лучше вместе или по отдельности;
— сокращение числа мест обработки исключений;
— проектируй дважды и не используй первую идею пришедшую в голову.

Гостем стрима станет наш коллега Олег Корнев, архитектор группы платежных сервисов.

Встречаемся сегодня в 18:00 на ютуб-канале IT's Tinkoff.

#CoA #Software #Architect #SystemDesign #Philosophy #SoftwareArchitecture
🔥72👍2
Непрерывное развертывание ПО (Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation)

Книга Джеза Хамбла и Дейвида Фарли была издана в далеком 2010 году и содержала очень интересные мысли на тот момент. Я прочитал ее в первый раз в 2017 году и к тому моменту она уже была безнадежно устаревшей и капитанской. Сейчас в 2023 году ее стоит покупать, только если вы любите посещать букинистические магазины:)
Если вспоминать мои впечатления от первого прочтения, то могу отметить, что качество каждой главы книги варьируется от уровня "почитать в дороге можно" до "действительно стоит прочесть", но вот соединенные в одну книгу они мешают друг другу:) Авторы декларируют, что читатель может читать главы выборочно, что соответствует истине. Правда, степень дублирования информации между главами такая, что ты ловишь дежавю настолько часто, что появляется ощущение, что тебе рассказывают одни и те же мысли по кругу в пятый раз:)

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

#Devops #ContinuousDelivery #Software #SoftwareDevelopment
😁21👍4
Непрерывная интеграция (Continuous Integration: Improving Software Quality and Reducing Risk)

Продолжая тему раритетных книг по инженерным процессам в разработке софта (начало тут), я решил вспомнить эту книгу Эндрю Гловера, Поля Дюваля и Стивена Матиаса. Если кратко, то хорошая книжка ... была для своего времени (2007 год). В текущий момент ее стоит читать только для того, чтобы узнать с чего все начиналось. Правда, если ее актуализировать, то книга опять станет неплохой. Если более подробно, то автор рассказывает о некоторых практиках, которые стали базовыми в настоящее время:
1) что такое CI и в чем оно помогает пр разработке ПО, а именно в снижении рисков:
- проблема с развертыванием ("На моей машине это работает")
- позднее выявление дефектов, а следовательно более дорогое их исправление
- плохой контроль состояния проекта (не ясно что уже готово, а что нет)
- низкое качество продукта (наличие большого количества багов)
2) что требуется для реализации CI
- хранение исходников в системе контроля версий
- хранение конфигураций в системе контроля версий (использование SCM)
- хранение изменений для бд в системе контроля версий (механизм миграций данных)
- возможность сборки этого всего вместе(smile)

Еще авторы рассматривает создание полнофункциональной CI, правда в реалиях пятнадцатилетней давности. Эта часть абсолютно устарела, но ... даже в ней есть интересные моменты:
1) обсуждение вопросов тестирования:
- unit
- functional
- integration
- system
2) вопросы инспекции кода
- использование статических анализаторов
- поддержка code style
- поддержка метрик кода на заданном уровне, например, цикломатическая сложность
3) организация continuous delivery
4) организация обратной связи о работе CI

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

#Devops #ContinuousDelivery #Software #SoftwareDevelopment #ContinuousIntegration
👍7😁1
Искусство программирования для Unix (Art of Unix Programming)

Эта книга по разработке, изданная 20 лет назад, когда-то была одной из моей любимых:)
После первого прочтения лет 15 назад у меня было такое впечетление

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


Сама книга состоит из четырех частей:
1) Контекст - здесь обсуждаются философские вопросы, вопросы культуры (Unix, Linux, WIndows)
2) Проектирование - здесь идет речь про модульность, текстовое представление данных (textuality), прозрачность (transparency), мультипрограммирование (multiprogramming), minilanguages, генерацию кода, конфигурацию, интерфейсы, оптимизацию, сложность (complexity)
3) Реализация (implementation) - здесь автор говорит про языки программирования (C и остальные), инструменты (tools), повторное использование (reuse)
4) Community - здесь речь про portability, документацию (documentation), open source, будущее (опасности и перспективы как они виделись из начала 2000-х)

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

#SystemDesign #SoftwareDevelopment #Software #SoftwareArchitecture
🔥9👍42
Совершенный Код (Code Complete)

Эта книга Стива Макконела в свое время была хитом, а мне она очень помогла на пути становления меня software develoment engineer. Году в 2006 я впервые стал писать код за деньги и делал это в компании, где предыдущий отдел веб-разработки разошелся полностью. Новый руководитель отдела пришел и начал наводить порядок и я перешел из техподдержки в стажеры-разработчики. С кодовой базой мы изначально были на вы, процесс деплоя был ручным, тестирования не было, часть систем надо было планово перезагружать раз в час, иначе они падали сами, но с непредсказуемыми последствиями. На этом фоне книга Стива дала мне ответы на вопросы, а всегда ли так больно разрабатывать программное обеспечение или бывают менее болезненные способы. После этой книги я полюбил использование метафор для сложных концепций, понял важность обеспечения качества, узнал про проектирование софта и много чего еще:)

Сама книга выглядела как монументальный кирпич почти на тысячу страниц формата А4 и состояла она из 7 частей.

I. Laying the Foundation - как раз здесь про метафоры, сбор требований, продумывание вариантов и принятие ключевых решений
II. Creating High-Quality Code - про проективание, классы и методы, защитное программирование и важность использования псевдокода
III. Variables - про принципы использования переменных, их именование и типы данных (как обычные, так и нестандартные)
IV. Statements - про организацю кода, условные операторы, циклы, нестадартные управляющие структуры (goto и рекурсию), табличные методы и общие вопросы управления выполнением
V. Code Improvements - про качество программного обеспечения (с тех пор многое здесь улучшилось:))
VI. System Considerations - немного статистики про большие проекты и как размер влияет на разработку, как управлять ей (тут тоже многое поменялось с тех пор, например, инкрементальные подходы стали доминирующими)
VII. Software Craftsmanship - часть про мастерство. Тут интересно, что когда-то давно engineering и craftmanship противопоставляли себя друг другу, но теперь ясно, что инженерные подходы общеприняты:) Про это можно посмотреть выступление Dave Farley с goto 2022 "Taking Back “Software Engineering” – Craftsmanship is Insufficient" и интересно посмотреть именно его, так как он в свое время топил за craftmanship

P.S.
Я не уверен, что эта книга сейчас настолько же актуальна как 30 и 20 лет назад, но не вспомнить ее в своем канале я не мог:)
Кстати, у Стива есть еще книга "Еще более эффективный Agile" ("More Effective Agile: A Roadmap for Software Leaders"), в которой автор хорошо проходится по процессам разработки (а точнее конкретно по Scrum) и я про нее вспоминал в отдельном посте.

#Software #SoftwareDevelopment #SoftwareArchitecture #Devops #Engineering
👍9🔥42🤔1
Роботоделы. Короткое замыкание в школе

Я дочитал этот комикс Тома Эликсы и Алексиса Баррио на днях и могу отметить, что авторы достаточно забавно обыгрывают школьные приключения 12 летнего парнишки Уго. Он, как истинный раздолбай, залипает на школьных уроках и учитель отправляет его в кабинет наказаний. Там Уго знакомится с гениальным робототехником, девочкой Галей примерно тех же лет, которая на коленке решила задачу создания сильного AI, построив робота Си-эр3бро, а дальше решила его испытать в этом кабинете. Испытание заканчивается переносом во времени, так как Галя не просто сделала автономного робота из аппарата для попкорна, но и сразу машину времени:) А переносится эта компания вместе с учителем из кабинета наказаний в Средневековье, а точнее в 1149 и там начинаются их приключения ...

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

#ForKids #PopularScience
🔥7👍5👏1
Code Complete • Steve McConnell & Jeffrey van Gogh • GOTO 2023

Интресное обсуждение книги Code Complete с участием Стива Макконела, автора книги и CEO at Construx Software, а также Jeffrey van Gogh, Director of Engineering at Google & Secretary of the Board at Kotlin Foundation. Про саму книгу я рассказывал пару дней назад и именно при написании того поста я нашел это свежее видео из GOTO Book Club, в котором обсуждаются следующие темы:

- Эволюция яязыков программирования за последние 30 лет (как раз столько прошло с первого издания книги)
- Эволюция процессов разработки от waterfall к agile и как это повлияло на написание кода
- Должен ли код быть единственной документацией - примерно такой тезис был в книге, но в этом видео автор объясняет, что его идея была в другом - что так обычно бывает с продакшен проектами, поэтому стоит потратить время на то, чтобы сделать код читаемым:)
- Сколько языков программирования надо знать разработчику и что они дают ему
- Как open source повлиял на жизненный цикл кода
- Обсуждение тулинга и как он эволюционировал за прошедшее время
- Стоит ли техническим менеджерам писать код - у автора очень взвешенная позиция на этот счет
- Как автор делал свои исследования, которые легли в основу книги
- Советы для начинающих программистов

#Software #SoftwareDevelopment #SoftwareArchitecture #Devops #Engineering
👍14🔥31
Третий выпуск Code of Architecture по книге "A Philosophy of Software Design"

Сегодня в 18:00 по Москве мы поговорим про то, как документация может помочь упростить систему. На стриме обсудим сразу 5 глав и затронем следующие темы:
- "причины", чтобы не писать комментарии (и размотаем их)
- советы о том, как писать хорошие комментарии;
- что делать с неймингом:)
- подход comments first при написании кода
- как поддерживать комментарии в актуальном состоянии

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

#CoA #Software #Architect #SystemDesign #Philosophy #SoftwareArchitecture
👍92
Самая главная молекула. От структуры ДНК к биомедицине XXI века (Unraveling Dna: The Most Important Molecule Of Life)

Первую версию этой книги знаменитый биофизик Максим Франк-Каменецкий написал еще до моего рождения, целых 40 лет назад. С тех пор книга пережила много переизданий, в каждом из которых автор актуализировал содержание под уровень разития молекулярной биологии и генной инженерии. В итоге, книга эволюционировала и мутировала прямо как ДНК, про которую в ней идет речь. Если говорить про книгу, то я прочитал ее за пару дней, один из которых пришелся на обратный перелет из Турции в Россию, когда я с семьей возвращался из отпуска. Для этого пути мне требовалась динамичная книга, которая держит напряжение и не отпускает своими перепитиями сюжета. Именно такой оказалась книга про "самую главную молекулу", в которой дюжина глав, которые постепенно раскрывают перед читателями секреты главной молекулы. Вот эти 12 глав
1. От новой физики к новой биологии
2. От ДНК к белку
3. Знакомьтесь: самая главная молекула
4. Под знаком ДНК
5. ДНКовые тексты
6. Откуда берутся гены?
7. Кольцевые ДНК
8. Узлы из ДНК
9. Споры вокруг двойной спирали
10. Генная инженерия и технология редактирования генома. Опасения и надежды
11. ДНК и судьба
12. Вездесущая ДНК

Бесплатная версия книги доступна здесь, доступной она стала в рамках проекта Дигитека:)

#PopularScience #Biology #Math #Physics
👍8
NoSQL. Методология разработки нереляционных баз данных (NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence)

Этой книге Садаладжа и Фаулера уже больше 10 лет и прочел я ее много лет назад и уже тогда она показалась мне слишком обзорной и простой.
В ней авторы рассматривали четыре вида баз данных
- субд типа ключ-значение
- документоориентированная субд
- колоночная субд
- графовая субд
Причем рассматривали их на очень базовом уровни и все бы ничего - ведь простые книги полезны новичкам, но вот перевод на русский язык был просто ужасен. Более хренового перевода я давно не видел, например:
- графическая база данных вместо графовой
- нули вместо NULL'ов
- журнал закрепления для английского commit log
- и т.д.

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

#Databases #SoftwareArchitecture #SoftwareDevelopment #Software #DistributedSystems
👍16