Base/Knowledges/Библиотека/Книги/Software. Ошибки и компромиссы при разработке ПО.md

59 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
Тип: Книга
Статус: Запланировано
Название: Software. Ошибки и компромиссы при разработке ПО
Автор:
- Томаш Лелек
- Джон Скит
Количество страниц: 464
Прогресс: 0
Формат: Электронная
Обложка: Библиотека/Книги/covers/software-oshibki-i-kompromissy.jpg
Начата:
Закончена:
Оценка:
Сложность:
Теги:
- программирование
- архитектура
- компромиссы
- проектирование
- распределённые_системы
Категории:
- Программирование
- Проектирование систем
Источник:
Ссылка:
---
# Software. Ошибки и компромиссы при разработке ПО
![[covers/software-oshibki-i-kompromissy.jpg]]
## 📖 О книге
Томаш Лелек и Джон Скит делятся опытом десятков лет разработки ПО, разбирая реальные ошибки и компромиссы, с которыми сталкиваются разработчики. Книга не о правильных решениях в вакууме — она о том, как вполне разумный выбор оказывается сомнительным в контексте конкретных условий: производительности, безопасности, затрат на сопровождение и распределённости. Издательство «Питер», 2023, перевод Е. Матвеева.
## 🧠 Ключевые идеи
- **Компромиссы неизбежны**: каждое решение в дизайне ПО — это выбор между конкурирующими требованиями; цель разработчика не найти «правильный» ответ, а осознанно выбрать нужный компромисс
- **Производительность vs. читаемость**: оптимизация критического пути оправдана, только когда профилирование подтверждает проблему — преждевременная оптимизация создаёт ненужную сложность
- **Простота API vs. гибкость**: чем проще API, тем он понятнее, но тем сложнее изменить его без нарушения обратной совместимости — управление версиями требует дисциплины с первого дня
- **Атомарность и целостность в распределённых системах**: транзакционные гарантии, привычные в монолите, недостижимы в микросервисах без явных компромиссов — eventual consistency, saga pattern, идемпотентность
- **Сторонние библиотеки**: каждая зависимость — это чужой код с чужими решениями; выбор библиотеки влияет на безопасность, производительность и стоимость миграции
## 💬 Важные цитаты
- «Создание программных продуктов всегда связано с компромиссами»
- «Вполне разумное дизайнерское решение на практике оказывается сомнительным»
- «Книга задумана как описание проблем, встречающихся в реальных системах»
## 💡 Как применить в моих проектах
## 🔗 Связанные заметки
- [[Чистая архитектура]]
- [[Шаблоны корпоративных приложений]]
- [[System Design. Пережить интервью]]