Краткое содержание интервью с Джоном Остерхаутом о философии разработки программного обеспечения

Краткое содержание интервью с Джоном Остерхаутом о философии разработки программного обеспечения

Дмитрий Жечков (https://t.me/llm_notes)


Основные идеи интервью

Джон Остерхаут, профессор компьютерных наук в Стэнфорде и автор книги "Философия разработки программного обеспечения", делится своими взглядами на проектирование ПО и его важность в современной разработке.

Влияние ИИ на разработку ПО

  • ИИ-инструменты будут всё лучше справляться с написанием низкоуровневого кода
  • Неясно, смогут ли ИИ-системы заменить высокоуровневое проектирование
  • Проектирование ПО станет более важной частью работы разработчиков, поскольку ИИ возьмет на себя рутинные задачи кодирования
  • Это делает еще более печальным тот факт, что проектированию ПО практически не учат в университетах

Ключевые принципы проектирования ПО

  • Управление сложностью - главная задача проектирования
  • Декомпозиция - ключевая идея в компьютерных науках: разбиение сложных систем на более простые компоненты
  • Глубокие модули - модули с простым интерфейсом, но богатой функциональностью внутри
  • Избегание специализации - стремление к общим решениям вместо узкоспециализированных

О "тактических торнадо"

Остерхаут описывает "тактических торнадо" - программистов, которые быстро пишут код, но делают это тактически, не думая о долгосрочных последствиях. Они могут восприниматься как герои, но оставляют за собой хаос, который приходится разгребать другим.

Проектирование дважды

Одна из ключевых рекомендаций - проектировать решение дважды:

  • Придумать первое решение
  • Затем представить, что первое решение запрещено использовать, и придумать второе
  • Сравнить оба решения и выбрать лучшее
  • Это занимает лишь небольшую часть общего времени разработки, но значительно улучшает результат

Разногласия с Робертом Мартином (Uncle Bob)

Остерхаут не согласен с некоторыми принципами из книги "Clean Code":

  1. Короткие методы: слишком короткие методы могут привести к большему количеству интерфейсов и увеличению сложности
  2. Разработка через тестирование (TDD): может работать против хорошего проектирования, поощряя тактический подход
  3. Комментарии: код не может полностью говорить сам за себя, комментарии необходимы, особенно для интерфейсов

Преподавание проектирования ПО

Остерхаут ведет уникальный курс в Стэнфорде, где студенты:

  • Разрабатывают проекты с нуля
  • Получают подробные отзывы о коде
  • Переделывают проекты с учетом отзывов
  • Изучают код друг друга

Этот подход позволяет студентам увидеть, как применение принципов проектирования улучшает код.

Текущий проект

Сейчас Остерхаут работает над внедрением нового транспортного протокола Homa в ядро Linux, который в 10-100 раз быстрее TCP для многих случаев использования в центрах обработки данных.

Источник здесь

Report Page