Інженерна майстерність і карʼєра / крок 05
3 важливі книги про проектування програмного забезпечення
Про що це відео
Глядачі постійно просять порадити книги з програмування, але «програмування» — надто широка тема, тож автор звужує її до трьох фундаментальних книг про проектування ПЗ, кожна з яких, за його словами, змушує подивитися на побудову програми під трохи іншим кутом. Він свідомо уникає «хардкорних» варіантів: це фундамент, з якого варто починати. Три книги утворюють набір, який він подає як взаємно підсилюваний: Clean Architecture розповідає, які шари має мати бекенд, патерни Фаулера показують, як ці шари реально реалізуються в живих системах, а DDD пояснює, чому розуміння предметної області взагалі вирішує, чи буде проєкт успішним.
Головне
- Clean Architecture (Роберт Мартін) — половина книги про те, як структурувати бекенд на шари і яка логіка стоїть за цим поділом; друга половина — SOLID. Базова, але дуже корисна. Автор обіцяє наступні відео на каналі з глибшим розбором: не просто «ось шари», а як реалізувати кожен шар.
- Domain-Driven Design (Ерік Еванс) — пояснює, чому одні проєкти провалюються, а інші стають успішними, і чому в одних кодових базах додавати фічі легко, а в інших — болісно; відповідь — проектування навколо предметної області. Для автора ця книга стала «прям відкриттям», яке змінило його погляд на розробку.
- Він переказує деталь з інтерв'ю Еванса: єдине, про що Еванс шкодує в книзі, — що ключова тема bounded context стоїть у кінці, а не на початку. Навіть половина книги вже змінює спосіб мислення.
- Patterns of Enterprise Application Architecture (Мартін Фаулер) — не лякайтеся слова «Enterprise» у назві; автор не знає, чому вона так називається, але книга чудова. На відміну від тактичних патернів GoF, це патерни стратегічні.
- Ви, найімовірніше, ніколи не реалізовуватимете патерни Фаулера напряму, але зустрінете кожен із них у своєму застосунку — всередині ORM, фреймворку, структури бекенда. Книга вчить, як насправді працюють інструменти, якими ви вже користуєтеся.
- Три книги зчеплені між собою: Фаулер доповнює Clean Architecture (яка описує шари, але не те, як їх втілити) і додає конкретні патерни (value objects тощо) до ідей DDD.