> For the complete documentation index, see [llms.txt](https://97-things-every-x-should-know.gitbook.io/97-things-every-programmer-should-know/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://97-things-every-x-should-know.gitbook.io/97-things-every-programmer-should-know/ru/thing_31.md).

# Наблюдайте за пользователями

(В оригинале - Ask "What Would the User Do?" (You Are not the User))

Все мы предполагаем, что другие люди думают так же, как и мы сами. Однако то не так. Психологи называют это склонностью к ложному согласию (false consensus bias). Когда люди думают или действуют не так, как мы, то мы часто считаем их в чем-то ненормальными.

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

Лучший способ выяснить, как именно действуют пользователи, это понаблюдать за одним из них. Попросите пользователя выполнить какую-нибудь задачу при помощи ПО, похожего на разрабатываемое вами. Задача должна быть реальной. «Добавьте колонку с цифрами» - нормально. «Посчитайте свои расходы за прошлый месяц» - гораздо лучше. Избегайте слишком конкретных задач вроде «Вы можете выделить эти ячейки в ввести формулу суммы внизу?». Пусть пользователь говорит во время выполнения, не прерывайте его и не пытайтесь помочь. Спрашивайте себя «почему он делает так» и «почему он не делает так».

Первая вещь, которую вы заметите – это то, что пользователи делают большинство вещей одинаково. Они пробуют выполнить различные задачи одним и тем же способом, при этом делая одни и те же ошибки в одних и тех же местах. Вы должны проектировать ПО с учетом этого основного поведения. Это отличается от совещаний, на которых люди обсуждают вопросы из серии «А что если пользователь захочет сделать вот так?», и которые приводят к решениям, вызывающим замешательство пользователей. Наблюдение за пользователями устраняет это замешательство.

Вы можете увидеть, как пользователь зайдет в тупик. Когда вы в тупике, вы смотрите по сторонам. Когда пользователь в тупике, их фокус внимания сужается. Для них становится сложным найти решение где-то на экране. И это одна из причин, почему стандартный хелп – не самое лучшее решение. Если вам необходима текстовая помощь или инструкции, постарайтесь разместить их непосредственно вблизи зоны концентрации вашей задачи. Сужение фокуса внимания пользователя – одна из причин, почему всплывающие подсказки намного лучше, чем помощь в меню.

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

Вы также обнаружите, что между тем, что пользователи говорят и тем, что они на самом деле делают, есть разница. И это проблема, поскольку обычно пользовательские требования формируются путем опроса. Поэтому лучший способ составить требования – это понаблюдать за пользователями. Потратить час на наблюдения будет гораздо более информативно, чем потратить день на распросы.

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
