# Доминик Морриц: «Создавайте меньше, проектируйте больше»

Источник: https://www.youtube.com/watch?v=6DIIkX19ihs
Канал: Stanford Online
Опубликовано: 10.07.2025

---

## Инженерный подход к разработке: Почему проектирование важнее написания кода
[[JUMP:00:09]]

Современная научная работа в области человеко-компьютерного взаимодействия (HCI) часто страдает от избыточного создания одноразовых программных решений. Доминик Морриц, преподаватель Университета Карнеги-Меллон и исследователь в Apple, призывает изменить парадигму: вместо написания кода с нуля стоит инвестировать ресурсы в проектирование стандартизированных API и гибких фреймворков. Главная идея заключается в том, что создание интероперабельных инструментов, способных взаимодействовать друг с другом, позволяет радикально ускорить научный прогресс и расширить границы возможного в разработке ПО.

### 🧪 Научный метод и дизайн как движущие силы HCI
[[JUMP:03:25]]

Исследовательская работа в HCI объединяет два направления: эмпирическую науку (понимание того, как люди используют компьютеры) и дизайн (создание новых артефактов).

*   **Проблема «одноразовых» инструментов:** Большинство программ, создаваемых для пользовательских исследований, остаются изолированными артефактами в GitHub-репозиториях. Их влияние ограничено из-за сложности повторного использования.
*   **Фреймворки как научный результат:** Переход к созданию фундаментов и фреймворков позволяет объединять компоненты, создавая комбинаторное пространство возможностей. По мнению Моррица, это не просто инженерная задача, а полноценный научный процесс тестирования гипотез о том, как должны быть устроены инструменты.

### 🧩 Композиционная архитектура и философия интерфейсов
[[JUMP:07:03]]

Ссылаясь на классическую работу Джона Тьюки «Анализ данных и статистика» (1965 г.), автор подчеркивает необходимость организации инструментов так, чтобы их можно было легко собирать в новые конфигурации.

*   **Принцип Lego:** Vega-Lite является примером успешной реализации этого подхода. Благодаря модульности и акценту на «Грамматику графики» (Grammar of Graphics), проект за 10 лет достиг 3 миллионов скачиваний в месяц и стал стандартом де-факто.
*   **Интероперабельность:** Главный вызов — сделать так, чтобы инструменты работали не только в своей экосистеме, но и с другими продуктами (например, React или Svelte).
*   **Концепция Герберта Саймона:** Артефакт — это «интерфейс» между внутренней средой (реализация) и внешней средой (поведение). Исследователям следует уделять больше внимания внешней предсказуемости поведения системы, а не только её внутренним деталям.

### 🛠 Whirlwind-тур: Инструменты для эффективного дизайна
[[JUMP:17:19]]

В ходе лекции были представлены несколько проектов, реализующих идеи композиционности и открытости:

1.  **AnyWidget:** Позволяет превращать любую JavaScript-библиотеку в виджет для Jupyter Notebook без необходимости глубокого погружения в сложный стек сборки (Node.js, Webpack, Yarn). Проект решил проблему жесткой связи между фронтендом и бэкендом, предложив стандарт ES-модулей.
2.  **Mosaic:** Фреймворк для связи визуализаций с базами данных (например, DuckDB). Он позволяет работать с миллиардами записей благодаря автоматическим оптимизациям, таким как агрегация данных «на лету» и предвычисление.
3.  **Embedding Atlas:** Инструмент для анализа больших наборов данных (эмбеддингов). Включает виртуализированные таблицы и визуализации плотности, позволяя пользователям быстро находить закономерности без написания кастомного кода.
4.  **Texture:** Инструмент для анализа текстовых корпусов, который решает проблему высокой размерности текста, переводя его в табличный формат, понятный аналитическим движкам.

### ♿️ Data Navigator: Будущее доступности данных
[[JUMP:44:12]]

Морриц представил проект Data Navigator, призванный сделать визуализации доступными для пользователей с нарушениями зрения. Вместо того чтобы полагаться на текст описания, инструмент создает графовую структуру (узлы и ребра), описывающую данные.

*   **Разделение ответственности:** Система отделяет структуру данных от способов ввода (клавиатура, жесты, голос) и визуализации.
*   **Универсальность:** Благодаря такой архитектуре можно использовать любые устройства ввода — от простой клавиатуры до жестов, распознаваемых камерой, или даже физических предметов с датчиками.

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