# Изучайте гуманитарные науки

(В оригинале - Read the Humanities)

Практически в любом проекте разработки ПО (кроме самых маленьких) люди работают вместе с другими людьми. Во всех областях, кроме наиболее абстрактных исследований, люди пишут ПО для людей, чтобы помочь им в достижении своих целей. Люди пишут ПО для людей. Этот бизнес связан с людьми. К сожалению, в процессе обучения программистов очень мало внимания уделяется аспекту взаимодействия с людьми – коллегами и заказчиками. К счастью, есть множество исследований, которые могут в этом помочь.

Например, Людвиг Витгенштейн (Ludwig Wittgenstein) выдвинул очень хорошее предположение в работе «Философские Исследования» (Philosophical Investigations), что ни один язык, используемый нами, не может и не является универсальны форматом для передачи мысли, идеи или образа из одной головы в другую. В связи с чем нам уже нужно быть готовым к непониманию в процессе выяснения требований к системе. Витгенштейн также показал, что наша способность понимать друг друга – это следствие не общих определений, а общего опыта, образа жизни. Возможно, это одна из причин, почему программисты, погруженные в проблемы предметной области, работают лучше, чем те, кто от предметной области дистанцируется.

Лакофф и Джонсон (Lakoff and Johnson) представили нам каталог метафор, которыми мы живем (Metaphors We Live By), предполагая, что язык в значительной мере метафоричен, и эти метафоры дают нам шанс взглянуть на то, как мы воспринимаем мир. Даже вполне конкретный термин, как например, «денежный поток» (cash flow), используемый при обсуждении финансовых систем, может быть рассмотрен с метафорической точки зрения: «деньги – как вода». Как эта метафора может повлиять на наше представление системы, работающей с деньгами? Или же часто использующееся выражение «стек протоколов» с верхним и нижним уровнем – оно тоже крайне метафорично: «наверху» находится пользователь, а «внизу» - технология. Это влияет на то, как мы видим структуру проектируемой системы.

Мартин Хайдеггер (Martin Heidegger) изучил то, как люди пользуются инструментами. Программисты создают инструменты, и поэтому для них инструменты находятся в зоне их интересов. Однако для пользователя, как показал Хайдеггер в трактате «Бытие и время» (Being and Time), инструмент становится невидимым, незаметным. Инструмент начинает интересовать пользователя только тогда, когда перестает работать или работает неправильно. И об этой разнице стоит помнить, обсуждая аспекты удобства использования

Элеанор Рош (Eleanor Rosch) пересмотрела модель категорий Аристотеля, согласно которой мы выстраиваем свое понимание мира. Когда программист спрашивает пользователя о требованиях к системе, он старается получить ответ, построенный на предикатах (Предикат - языковое выражение, обозначающее какое-то свойство или отношение). Это весьма распространенная практика, поскольку предикат потом легко становится атрибутом класса или колонкой в таблице. Такой подход – строгий и аккуратный, но к сожалению, как показала Рош (в Natural Categories) и более поздних работах, люди представляют мир совершенно по-другому. Их понимание мира основано на примерах. Некоторые примеры могут быть лучше других, в результате давая неоднозначные, пересекающиеся категории со сложной внутренней структурой. И поэтому, настаивая на ответах в модели Аристотеля, мы не можем задать пользователю правильных вопросов о том, как он представляет мир, и нам будет сложно придти к общему пониманию.

Автор оригинала - [Keith Braithwaite](http://programmer.97things.oreilly.com/wiki/index.php/Keith_Braithwaite)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://97-things-every-x-should-know.gitbook.io/97-things-every-programmer-should-know/ru/thing_15.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
