Перейти к содержимому
    Оглавление · Приложения

    Обновлено: 12 августа 2026 г. в 00:00

    Modern Software Engineering (Рубрика #Management)

    mid

    Modern Software Engineering: Doing What Works to Build Better Software Faster (Современная разработка программного обеспечения)

    Авторы: David Farley
    Издательство: Addison-Wesley Professional
    Объем: 2021

    Разбор книги David Farley о современном software engineering: обучение через обратную связь, управление сложностью, инженерные принципы и Continuous Delivery как дисциплина.

    Modern Software Engineering: Doing What Works to Build Better Software Faster — оригинальная обложкаОригинал

    Источник

    Modern Software Engineering

    Пост в book_cube с обзором структуры книги David Farley и ключевых инженерных принципов.

    Перейти на сайт

    Modern Software Engineering: Doing What Works to Build Better Software Faster (Современная разработка программного обеспечения)

    Авторы: David Farley
    Издательство: Addison-Wesley Professional
    Объем: 2021

    Книга David Farley о том, как применять инженерный подход к разработке ПО в условиях неопределенности: учиться быстрее, снижать сложность и делать доставку изменений предсказуемой.

    Modern Software Engineering: Doing What Works to Build Better Software Faster — оригинальная обложкаОригинал

    Software Engineering / Management / Delivery / Complexity

    Modern Software Engineering можно читать как обновление инженерной оптики после эпохи agile/devops-базиса: меньше догм, больше проверяемых практик, быстрее обратная связь и дисциплина в управлении сложностью.

    1. Карта книги: 4 части

    1. What Is Software Engineering

    Farley формулирует инженерный взгляд на разработку: engineering это practical application of science, а software можно и нужно строить как инженерную дисциплину.

    2. Optimize for Learning

    В непредсказуемой среде решает скорость обучения. Ключевой фокус: короткие итерации, ранний feedback, incremental delivery, эмпиризм и постоянные эксперименты.

    3. Optimize for Managing Complexity

    Борьба со сложностью через модульность, cohesion, separation of concerns, information hiding и осознанное управление coupling.

    4. The Tools of an Engineering Discipline

    Практические рычаги engineering excellence: testability, deployability, скорость изменений, контроль переменных и continuous delivery как рабочая норма.

    2. Optimize for Learning: что важно забрать в практику

    • Working iteratively: проектировать изменения короткими циклами, а не большими фазами без обратной связи.
    • Feedback first: получать сигнал по коду, архитектуре и продукту как можно раньше, пока цена коррекции низкая.
    • Incrementalism: ограничивать blast radius каждого изменения через декомпозицию и модульные границы.
    • Empiricism: проверять гипотезы фактами, измерениями и реальным поведением системы.
    • Being experimental: относиться к решениям как к экспериментам с явной гипотезой и критериями успеха.

    3. Optimize for Managing Complexity

    Modularity

    Наследие Parnas: делим систему так, чтобы изменения были локальными, а поведение модулей предсказуемым.

    Cohesion

    Элементы внутри модуля должны логично принадлежать друг другу. Это снижает случайные связи и упрощает эволюцию.

    Separation of concerns

    DI, DDD, Port & Adapters и TDD помогают отделять ответственность и сохранять ясные границы между частями системы.

    Information hiding and abstraction

    Скрываем детали реализации за стабильными интерфейсами, чтобы локально менять внутренности без каскадных эффектов.

    Managing coupling

    Связность между модулями должна быть осознанной и измеримой, иначе скорость разработки падает с каждым релизом.

    4. The tools of an engineering discipline

    1. Testability: проектируйте систему так, чтобы проверка поведения была встроена в процесс разработки.
    2. Deployability: каждый инкремент должен быть технически готов к безопасной поставке.
    3. Speed: оптимизируйте lead time и cycle time как системную метрику инженерной организации.
    4. Controlling the variables: делайте процесс повторяемым и управляемым, чтобы результат не зависел от героизма.
    5. Continuous Delivery: держите кодовую базу в состоянии постоянной интеграции и потенциального релиза.

    5. Типичные антипаттерны внедрения идей книги

    Waterfall-мышление без реальных feedback loops между этапами.

    Рефакторинг архитектуры без проверки гипотез и измерения эффекта.

    Копирование практик BigTech без адаптации к размеру команды и домену.

    Ставка на скорость релиза без testability и deployability фундамента.

    6. Рекомендации для техлида и engineering manager

    Сделайте двухнедельный audit feedback-контуров: PR, тесты, observability, продуктовые сигналы и post-release learning.

    Для каждой крупной инициативы явно зафиксируйте архитектурные границы, чтобы уменьшить coupling до старта разработки.

    Переведите CD из лозунга в операционную практику: trunk-based flow, автоматические проверки и безопасные маленькие релизы.

    Оценивайте успех изменений по learning velocity: как быстро команда превращает гипотезы в подтвержденные знания.

    7. Источники и связанные главы

    Трекинг прохождения выключен. Включите его в настройках.

    Доказательство обучения

    Чтение — только начало. Перенесите идею в рабочий эксперимент и разберите результат.