Харлан Д. Фаулер
Харлан Д. Фаулер — американский писатель, редактор и консультант в области разработки программного обеспечения, наиболее известный как автор книги «Рефакторинг: улучшение существующего кода» (англ. Refactoring: Improving the Design of Existing Code), а также как один из ведущих идеологов методологии экстремального программирования (XP) и гибкой разработки (Agile). Фаулер является главным научным сотрудником (Chief Scientist) компании Thoughtworks, специализирующейся на консалтинге в области информационных технологий.
Биография
Харлан Д. Фаулер родился в 1963 году в Уолсолле, графство Уэст-Мидлендс, Англия. О его раннем образовании и детстве известно немного. В 1986 году он окончил Университетский колледж Лондона (UCL) со степенью бакалавра по электротехнике. После окончания университета Фаулер начал работать в сфере разработки программного обеспечения, занимаясь проектированием и созданием информационных систем.
В начале 1990-х годов он переехал в США, где присоединился к компании Thoughtworks (основана в 1993 году). В Thoughtworks он быстро стал одним из ключевых технических лидеров, участвуя в крупных проектах по разработке корпоративного ПО для клиентов из различных отраслей. Именно в этот период он начал активно публиковать статьи и книги, посвящённые объектно-ориентированному проектированию, шаблонам проектирования и рефакторингу.
В 1999 году вышла его самая известная работа — «Рефакторинг: улучшение существующего кода». Книга мгновенно стала бестселлером в профессиональной среде и закрепила за Фаулером статус одного из ведущих экспертов в области разработки ПО. В 2000 году он стал одним из 17 подписантов «Манифеста Agile» (Agile Manifesto), что определило его дальнейшую роль в популяризации гибких методологий.
Фаулер продолжает работать в Thoughtworks, выступает на международных конференциях (включая O’Reilly Software Architecture Conference, QCon, Agile Conference), ведёт популярный блог martinfowler.com, где публикует статьи по архитектуре, рефакторингу, микросервисам и другим темам.
Основные работы
Книги
- «Рефакторинг: улучшение существующего кода» (1999, второе издание — 2018, в соавторстве с Кентом Беком). Книга описывает систематический процесс улучшения структуры существующего кода без изменения его внешнего поведения. Вводит понятие «запаха кода» (code smell) — признаков, указывающих на необходимость рефакторинга. Включает каталог из более чем 70 техник рефакторинга, таких как «Извлечение метода» (Extract Method), «Перемещение поля» (Move Field) и «Замена условного оператора полиморфизмом» (Replace Conditional with Polymorphism). Второе издание было переписано на JavaScript (первое — на Java) и дополнено новыми техниками.
- «Шаблоны корпоративных приложений» (2002, англ. Patterns of Enterprise Application Architecture). Книга описывает архитектурные шаблоны, используемые при проектировании крупных корпоративных систем: «Модель-Представление-Контроллер» (MVC), «Активная запись» (Active Record), «Репозиторий» (Repository), «Единица работы» (Unit of Work) и другие. Каждый шаблон сопровождается примерами на Java и C#.
- «Предметно-ориентированное проектирование» (2003, англ. Domain-Specific Languages, совместно с Ребеккой Парсонс). Книга посвящена созданию и использованию предметно-ориентированных языков (DSL) — специализированных языков программирования, предназначенных для решения задач в конкретной предметной области.
- «Рефакторинг баз данных: эволюционное проектирование баз данных» (2006, в соавторстве с Прамодом Садаладжем). Книга адаптирует принципы рефакторинга кода к реляционным базам данных, описывая техники безопасного изменения схемы БД без потери данных и нарушения целостности.
- «Микросервисы: шаблоны и практики» (2017, в соавторстве с Сэмом Ньюменом). Книга посвящена архитектурному стилю микросервисов, описывает шаблоны проектирования, развёртывания и эксплуатации микросервисных систем.
Блог и статьи
Фаулер ведёт один из самых авторитетных блогов в области разработки ПО — martinfowler.com. Он регулярно публикует статьи на темы:
- Рефакторинг и качество кода.
- Архитектура корпоративных приложений.
- Микросервисы и распределённые системы.
- Гибкие методологии (Agile, XP, Scrum).
- Предметно-ориентированные языки.
- Тестирование (TDD, BDD).
- DevOps и непрерывная поставка.
Некоторые из его наиболее известных статей: «Continuous Integration» (2006), «Microservices» (2014, в соавторстве с Джеймсом Льюисом), «Strangler Fig Application» (2004), «Feature Toggles» (2010).
Вклад в индустрию разработки ПО
Рефакторинг
Фаулер популяризировал термин «рефакторинг» как систематический процесс улучшения кода. До его книги рефакторинг часто воспринимался как неформальная деятельность, выполняемая «на глаз». Фаулер формализовал техники, определил их цели и риски, а также ввёл понятие «запаха кода» — признаков, сигнализирующих о необходимости рефакторинга (например, «Дублирование кода», «Длинный метод», «Большой класс»). Его подход лёг в основу многих инструментов автоматического рефакторинга, встроенных в современные интегрированные среды разработки (IDE) — IntelliJ IDEA, Eclipse, Visual Studio.
Гибкие методологии (Agile)
Фаулер был одним из 17 подписантов «Манифеста Agile» (2001). В своих работах он последовательно отстаивал принципы гибкой разработки: итеративность, тесное взаимодействие с заказчиком, готовность к изменениям, самоорганизующиеся команды. Он критиковал бюрократические процессы и «водопадную» модель, утверждая, что в условиях неопределённости требований гибкие подходы более эффективны. Его книга «Рефакторинг» стала одним из краеугольных камней методологии экстремального программирования (XP), где рефакторинг является одной из ключевых практик.
Микросервисы
Фаулер совместно с Джеймсом Льюисом в 2014 году опубликовал статью «Microservices», которая стала одним из первых систематических описаний этого архитектурного стиля. В статье были определены ключевые характеристики микросервисов: независимое развёртывание, децентрализованное управление данными, изоляция отказов, автоматизация инфраструктуры. Фаулер также ввёл термин «Strangler Fig Application» (приложение-удав), описывающий стратегию постепенной замены монолитного приложения на микросервисы.
Предметно-ориентированные языки (DSL)
Фаулер активно исследовал и популяризировал DSL — языки, созданные для решения задач в конкретной предметной области (например, SQL, регулярные выражения, конфигурационные файлы). Он разделил DSL на внутренние (реализованные как библиотеки на существующем языке) и внешние (с собственной грамматикой). Его книга «Domain-Specific Languages» стала стандартным справочником по этой теме.
Критика
Несмотря на широкое признание, работы Фаулера подвергались критике по нескольким направлениям.
- Излишняя абстракция. Некоторые критики утверждают, что его подход к рефакторингу и шаблонам проектирования ведёт к созданию избыточно сложных иерархий классов и абстракций, что может снижать производительность и усложнять понимание кода. Фаулер в ответ на это подчёркивает, что рефакторинг должен применяться умеренно и только при наличии реальной необходимости.
- Идеализация гибких методологий. Оппоненты Agile-подхода, в том числе сторонники «водопадной» модели и традиционного управления проектами, критикуют Фаулера за недооценку планирования и документации. Они утверждают, что гибкие методы могут приводить к хаосу в крупных проектах с длительным жизненным циклом.
- Микросервисы как модный тренд. Некоторые архитекторы ПО критикуют популяризацию микросервисов, указывая на то, что этот подход добавляет сложность, связанную с сетевым взаимодействием, распределёнными транзакциями и управлением конфигурацией. Фаулер сам признавал, что микросервисы не являются универсальным решением и подходят не для всех проектов.
Интересные факты
- Фаулер является автором термина «Удушающее приложение» (Strangler Fig Application), названного в честь растений-удавов, которые постепенно оплетают дерево-хозяина.
- Он активно использует метафоры и аналогии из биологии и архитектуры для объяснения технических концепций (например, «запах кода», «рефакторинг», «шаблон»).
- Его блог martinfowler.com является одним из самых цитируемых в профессиональной среде разработчиков ПО.
- Фаулер не является сторонником единого «правильного» подхода к разработке; он часто подчёркивает, что выбор методологии и архитектуры зависит от контекста проекта.
Примечания
- В 2024 году Харлан Фаулер продолжает активно работать в Thoughtworks, выступать на конференциях и вести блог. Его книги и статьи остаются обязательными к прочтению для многих разработчиков и архитекторов ПО.
Источники
- Fowler, M. (1999). Refactoring: Improving the Design of Existing Code. Addison-Wesley.
- Fowler, M. (2002). Patterns of Enterprise Application Architecture. Addison-Wesley.
- Fowler, M., & Parsons, R. (2003). Domain-Specific Languages. Addison-Wesley.
- Fowler, M., & Sadalage, P. (2006). Refactoring Databases: Evolutionary Database Design. Addison-Wesley.
- Fowler, M., & Newman, S. (2017). Microservices: Patterns and Practices. O'Reilly Media.
- Lewis, J., & Fowler, M. (2014). «Microservices». martinfowler.com.
- Beck, K., et al. (2001). «Manifesto for Agile Software Development». agilemanifesto.org.
- Биография Харлана Фаулера на сайте Thoughtworks (thoughtworks.com).
- Интервью и выступления Харлана Фаулера на конференциях (QCon, Agile Conference, O'Reilly Software Architecture Conference).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →