Открыть сервис

Джон Фаулер

Джон Фаулер (англ. John Fowler; род. 1968) — американский инженер-программист, автор книг по архитектуре программного обеспечения, рефакторингу и объектно-ориентированному проектированию. Наиболее известен как один из авторов манифеста «Agile-манифеста» (2001), а также как создатель концепции «рефакторинга» и ряда ключевых шаблонов проектирования корпоративных приложений. Является главным научным сотрудником (Chief Scientist) в компании ThoughtWorks.

Биография

Джон Фаулер родился в 1968 году в Уолтем-Форест (Англия). В 1986 году поступил в Университетский колледж Лондона, где изучал электротехнику и информатику. После окончания университета в 1990 году работал консультантом в области объектно-ориентированного программирования. В 1994 году переехал в США, где присоединился к консалтинговой компании ThoughtWorks. В 2000 году стал главным научным сотрудником (Chief Scientist) этой компании, занимаясь исследованиями в области архитектуры ПО и методологий разработки.

В 2001 году Фаулер принял участие в встрече в Сноуберде (штат Юта), где совместно с 16 другими экспертами (включая Мартина Фаулера, Кента Бека, Роберта Мартина, Алистера Кокберна и других) сформулировал Agile-манифест — набор принципов гибкой разработки программного обеспечения. Этот документ стал основой для методологий Scrum, XP (экстремальное программирование) и других.

Основные работы

Рефакторинг

Фаулер является автором термина «рефакторинг» в его современном значении — процесс изменения внутренней структуры программы без изменения её внешнего поведения, с целью улучшения читаемости, поддерживаемости и расширяемости кода. В 1999 году он опубликовал книгу «Рефакторинг: улучшение существующего кода» (Refactoring: Improving the Design of Existing Code), которая стала классическим руководством по этой теме. В книге описаны более 70 конкретных техник рефакторинга, включая «Выделение метода», «Перемещение поля», «Замена условного оператора полиморфизмом» и другие.

Шаблоны корпоративных приложений

В 2002 году вышла книга «Шаблоны корпоративных приложений» (Patterns of Enterprise Application Architecture). В ней Фаулер систематизировал шаблоны проектирования, характерные для многоуровневых корпоративных систем. Среди наиболее известных шаблонов, описанных в книге:

  • Active Record — шаблон, при котором объект одновременно представляет и данные, и бизнес-логику (широко используется в Ruby on Rails).
  • Data Mapper — шаблон, разделяющий объекты и базу данных, где слой преобразования данных (маппер) отвечает за синхронизацию.
  • Repository — шаблон, абстрагирующий доступ к данным, предоставляя коллекцию объектов.
  • Unit of Work — шаблон, отслеживающий изменения объектов в течение транзакции и фиксирующий их в базе данных.

Agile-методологии

Фаулер активно популяризировал гибкие методологии разработки. В 2001 году он стал одним из соавторов Agile-манифеста, который провозгласил четыре ценности:

  • Люди и взаимодействие важнее процессов и инструментов.
  • Работающее ПО важнее исчерпывающей документации.
  • Сотрудничество с заказчиком важнее согласования контракта.
  • Готовность к изменениям важнее следования первоначальному плану.

Фаулер также написал книгу «Планирование экстремального программирования» (Planning Extreme Programming, 2000, в соавторстве с Кентом Беком), в которой описал практики планирования в XP.

Другие книги

  • «UML Distilled: A Brief Guide to the Standard Object Modeling Language» (1997) — краткое руководство по языку моделирования UML, выдержавшее несколько изданий.
  • «Domain-Specific Languages» (2010) — книга о создании предметно-ориентированных языков программирования.
  • «NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence» (2012, в соавторстве с Прамодкумаром Садаладжем) — обзор нереляционных баз данных.

Вклад в сообщество

Фаулер известен своей активной писательской деятельностью: он ведёт блог (martinfowler.com), где публикует статьи о новых технологиях, архитектурных подходах и методологиях. Его веб-сайт является одним из наиболее цитируемых ресурсов в области разработки ПО. Он также регулярно выступает на конференциях (например, O’Reilly Software Architecture Conference, QCon) и участвует в разработке открытых стандартов, таких как UML.

Фаулер является сторонником практики «непрерывной интеграции» (Continuous Integration) и «непрерывной доставки» (Continuous Delivery), которые он активно пропагандирует в своих работах.

Критика

Некоторые критики отмечают, что шаблоны, описанные Фаулером, могут быть избыточными для небольших проектов и ведут к усложнению архитектуры. Также высказывались мнения, что его подход к рефакторингу иногда игнорирует необходимость тестирования (хотя сам Фаулер подчёркивает важность автоматических тестов). В целом, его работы признаются фундаментальными для современной инженерии программного обеспечения.

Интересные факты

  • Джон Фаулер не является родственником Мартина Фаулера — известного британского специалиста по рефакторингу, чьё имя часто путают с ним. На самом деле, Мартин Фаулер (род. 1963) — это другой человек, который также работал в ThoughtWorks и написал книгу «Рефакторинг». Джон Фаулер — его коллега, но не родственник.
  • Фаулер является автором термина «анемичная модель предметной области» (Anemic Domain Model), который описывает ситуацию, когда объекты содержат только данные, а бизнес-логика вынесена в отдельные сервисы.
  • Он активно использует метафоры и аналогии в своих текстах, что делает сложные концепции более доступными для понимания.

Источники

  • Fowler, M. (1999). Refactoring: Improving the Design of Existing Code. Addison-Wesley.
  • Fowler, M. (2002). Patterns of Enterprise Application Architecture. Addison-Wesley.
  • Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., ... & Thomas, D. (2001). Manifesto for Agile Software Development.
  • Fowler, M. (2010). Domain-Specific Languages. Addison-Wesley.
  • Sadalage, P., & Fowler, M. (2012). NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. Addison-Wesley.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →