Краткое содержание интервью с Джоном Остерхаутом о философии разработки программного обеспечения
Дмитрий Жечков (https://t.me/llm_notes)Основные идеи интервью
Джон Остерхаут, профессор компьютерных наук в Стэнфорде и автор книги "Философия разработки программного обеспечения", делится своими взглядами на проектирование ПО и его важность в современной разработке.
Влияние ИИ на разработку ПО
- ИИ-инструменты будут всё лучше справляться с написанием низкоуровневого кода
- Неясно, смогут ли ИИ-системы заменить высокоуровневое проектирование
- Проектирование ПО станет более важной частью работы разработчиков, поскольку ИИ возьмет на себя рутинные задачи кодирования
- Это делает еще более печальным тот факт, что проектированию ПО практически не учат в университетах
Ключевые принципы проектирования ПО
- Управление сложностью - главная задача проектирования
- Декомпозиция - ключевая идея в компьютерных науках: разбиение сложных систем на более простые компоненты
- Глубокие модули - модули с простым интерфейсом, но богатой функциональностью внутри
- Избегание специализации - стремление к общим решениям вместо узкоспециализированных
О "тактических торнадо"
Остерхаут описывает "тактических торнадо" - программистов, которые быстро пишут код, но делают это тактически, не думая о долгосрочных последствиях. Они могут восприниматься как герои, но оставляют за собой хаос, который приходится разгребать другим.
Проектирование дважды
Одна из ключевых рекомендаций - проектировать решение дважды:
- Придумать первое решение
- Затем представить, что первое решение запрещено использовать, и придумать второе
- Сравнить оба решения и выбрать лучшее
- Это занимает лишь небольшую часть общего времени разработки, но значительно улучшает результат
Разногласия с Робертом Мартином (Uncle Bob)
Остерхаут не согласен с некоторыми принципами из книги "Clean Code":
- Короткие методы: слишком короткие методы могут привести к большему количеству интерфейсов и увеличению сложности
- Разработка через тестирование (TDD): может работать против хорошего проектирования, поощряя тактический подход
- Комментарии: код не может полностью говорить сам за себя, комментарии необходимы, особенно для интерфейсов
Преподавание проектирования ПО
Остерхаут ведет уникальный курс в Стэнфорде, где студенты:
- Разрабатывают проекты с нуля
- Получают подробные отзывы о коде
- Переделывают проекты с учетом отзывов
- Изучают код друг друга
Этот подход позволяет студентам увидеть, как применение принципов проектирования улучшает код.
Текущий проект
Сейчас Остерхаут работает над внедрением нового транспортного протокола Homa в ядро Linux, который в 10-100 раз быстрее TCP для многих случаев использования в центрах обработки данных.
Источник здесь