Modern Software Engineering
Книга пытается ответить на вопрос, что же такое software engineering. Потому что сейчас есть разночтение между тем, что это или же разработка кода, или построение его архитектуры. На деле же ответ идёт от понятия инженерии. Так как разработчики строят свои виртуальные миры, то это просто способ проводить быстрые небольшие эксперименты над реальным миром.
Если мы рассмотрим разработку с этой точки зрения, то нам необходимы следовать следующим подходом:
- работать итерациями (a.k.a timeboxing)
- уменьшать цикл обратной связи и улучшать его качество (пересекается с The art of systems thinking)
- работать инкрементально (подразумевается, что изменение должно быть видимым)
- экспериментировать
- быть прагматичным
Дальше каждая из глав расскрывает почему именно такие принципы лежат в основе и как они проистекают из three ideas of software engineering.
Больше всего меня зацепила идея об информационных потоках, потому что такое определение переиспользуется между процессами в CPU, сервисами в архитектуре и командами в организации. И здесь можно переосмыслить правило из мифического человекомесяца, где добавление людей не ускоряет получение результат. Происходит это по причине интеграции информации.
Правда, в общем, книжку рекомендовать не могу. Когда она спускается с уровня команд/сервисов до кода, то все подходы прямолинейны и взяты из более фундаментальных книг Фаулера, которые и стоит читать вместо этой.
Цитаты
- 202308151022: working iteratively works better than not
- 202308151024: three ideas of software engineering
- 202308171226: practices make better software faster
- 202308171247: trade offs for different decisions
- 202308171302: 10x losses in software development
- 202308171401: speed and quality are correlated in DORA
- 202308171425: five behaviors in software engineering
- 202308220940: two-thirds of ideas produce negative value
- 202308220947: confidence to begin work without the answers
- 202308241009: separate what from how in requirements process
- 202308280950: testability and deployability add constraints to gather feedback
- 202309010850: high-performing teams make autonomous decisions
- 202309071516: TDD implies defect reduction in 40 percent
- 202309081804: integrate wotk from teams and concurrency is same
- 202309081805: small teams work with same speed and lower bugs
- 202309100945: broader term of an API
- 202309120800: software is not a game of short-term wins
- 202309120802: time that it takes the team to rewrite half of the software
- 202309141015: don’t share code between microservices
- 202309141018: programming is about creating solutions to problems
- 202309141021: three strategies for high-quality code
- 202309141046: Testing at the Edges
- 202309141052: simple model for software engineering
- 202309141055: OBAP vs BAPO
Задачи
- #task Обработать все выдержки из книги в рамках Zettels ✅ 2023-10-27
- #task Написать выдержку из книги ✅ 2023-11-14
- #task Доработать свои заметки на основе идей из книг