Друг может растеряться, друг может не понимать программу. Друг не программист, не разработчик, он не работал долгие часы над программой и поэтому не знает все нюансы работы программы (Иногда и разработчики не знаю всех нюансов своей программы). В начальной стадии работы с приложением друг не знает как пользоваться приложением. Только с накоплением опыта работы с приложением пользователь повышает свой уровень владения приложением.   Друг может путаться в том, что сейчас происходит в программе. Это создает неуверенность друга в ходе его работы.  Сделайте информацию о состоянии программы очевидной для друга, не программиста. Это даст уверенность в том, что сейчас делает приложение и тем самым позволит быть уверенным в своих действиях с приложением для вашего друга. Быть уверенным.   Друг  выполняет некое действие, и приложение реагирует на действие. Предоставьте возможность обратной связи на действия друга с вашим приложением. Действительно ли действие выполнено или возникли некие ошибки, получил ли друг ожидаемый результат или только часть результата и от друга требуются иные действия? Какие действия? Знает ли друг об этих действиях? Не забыл ли друг об этих действиях?   Друг может нервничать, спешить или просто эта информация «выпала»  на некий момент и не вспомнилась в данный момент  другу. Даёт ли приложение консистентные сообщения, чтобы друг ориентировался не только на сущность обратной связи, но и по внешним характеристикам обратной связи, мог многое понимать по внешним атрибутам? Не путают ли характеристики обратной связи друга в течении времени, в разных фрагментах приложения, при разных действиях?    Друг может быстро взглянуть на сообщение, на интерфейс, быть невнимательным, быть рассеянным.   Позволяет ли приложение давать такую обратную связь, которая целостна, которая не требует высокой концентрации, прощает ошибки друга? Знает ли друг о том, когда закончится выполнение очередного действия?   У друга могут быть другие дела. Друг может спешить, друг может хотеть планировать свою работу. А, возможно, друг хочет отвлечься на звонок или выпить чашечку кофе. Даете ли вы обратную связь быстро и однозначно соответствующую действиям друга, не запаздывающую, не рассеивающую внимание на точное действие друга, в котором друг ошибся или где что-то пошло «не так»? Друг же может рассчитывать на честность?   Современные программы весьма сложные, комплексные. В них есть детали о том, как программные компоненты функционируют на уровне разных языков программирования в рамках одной системы, разных слоёв программы, много иных технических деталей.  Нужно ли перегружать друга всё той информацией о приложении, о всех тех аспектах программы, о которых знает чаще даже не один, а большая группа программистов.   Программа, как информационных продукт, позволяет организовывать ту информацию, которую программа предоставляет пользователю. Программа предполагает сценарии взаимодействия пользователя с программой. В рамках сценариев взаимодействия  программист может предусмотреть необходимости пользователя.  Предоставьте другу ту информацию, которая ему необходима. Ту информацию, которая другу необходима для выполнения его действий.   Друг пользуется ваши приложением для достижения целей необходимых ему.   Необходимо ли другу знать о целях разработчика? Нужно ли другу знать о целях операционной системы? О целях сервера? О целях сервиса времени? О целях DNS серверов? Да, вы как разработчик должны разрешить все цели, разных компонентов системы, разных элементов, подсистем. Для достижения целей друга.     Для создания приложения программисту необходимы языки программирования, комплексные подходы ориентированные на разработку с приложением, знание многочисленных технических особенностей. Это даже не знания одного программиста, а многих специализаций в программировании и разработке программных систем. Одни разработчик и не сможет охватить все технические нюансы, от разработки микросхем, до перевода элементов интерфейса в рамках локализации приложения. Множество различных систем коммуникации разработано для разработки программных систем.    Будете ли вы требовать от друга, знания в нюансах языков, которые и вы сами как разработчик не знаете? (Которые знают другие разработчики программных систем в вашей всемирной компании разработчиков.)   Слова, фразы, концепции друг может использовать свои. Ведь также?  Или другу нужно быть неуверенным, теряться, когда вы используете технический язык, возможно,  и вам самим не совсем понятный, но доставшийся в наследство (от того же сервиса мирового времени).    Должен ли друг каждый раз заглядывать в словарь? Читать википедию или технические статьи о сервисе мирового времени? Погружаться в те многие нюансы и технические детали? Должен ли совершать многие лишние и излишние действия для достижения своих целей ваш друг?  Язык, который знает хорошо ваш друг – это язык взаимодействия с реальным миром. Попробуйте использовать этот интернациональный язык для вашего приложения.   Вы знаете этот язык, друг знает этот язык, даже друг в другой стране тоже знает этот язык.    Пользователь не обладает опытом обращения с вашим приложением по умолчанию. Вы не можете просто проинсталировать навыки обращения с вашим приложением в голову вашему другу. Друг учится пользоваться приложением. В ходе обучения друг совершает ошибки. Друг может долго не использовать приложение и забыть как пользоваться  приложением. И друг опять будет совершать ошибки при попытках овладеть приложением.    Дайте другу возможность использовать «аварийный выход». Если что-то пошло не так. Если друг осознал, что совершил ошибку. Если друг сомневается, в том, что он правильно использует приложение, чтобы проверить что-то ещё раз, а только потом ещё раз попробовать выполнить действие.    Может ли друг экспериментировать с приложением, чтобы понять как оно работает?  А в самом начале изучения вашего приложения позвольте другу легко найти «аварийный выход». Когда друг ещё совсем не знает ваше приложение, но он хочет исследовать приложение. Предоставьте другу механизмы исследования приложения с самого начала.    И даже если пользователь уже совершил действие, по дружески будет ли требовать «теперь простить нельзя». Обеспечьте друга возможностью совершить отказ от действия, вернуться к исходному состоянию. И по-дружески, наверное, будет не прятать возможность вернуться к исходному состоянию.    Должен ли друг догадываться о том, что разные фразы, ситуации, действия означают одно и то же? Напоминает ли это обман, когда в одном месте об одном и том же мы говорим одними словами, а в другом месте другими словами?    Друг может использовать и множество других приложений. У друга уже точно сформировался опыт использования приложений. У друга точно есть интуиции о том, как может функционировать приложение.    У друга уже есть предположения о приложении до начала использования вашего приложения.    Да, может быть друг не высказал вам ещё, что он знает о приложениях, что он ожидает. Возможно, он даже не может точно это сформулировать.    Возможно, у нас намного более лучший инструментарий в возможности осознании того, какой опыт взаимодействия с приложением сформировался и предполагается у вашего друга не разработчика. Мы, наверное, может помочь оформить не совсем осознаваемые другом ожидания и интуиции от вашего будущего приложения.  Вы как разработчик программы находитесь в более выгодном положении понимания вашей программы. Друг использующий приложения может о многих вещах в приложении не знать  и не догадываться. Вы как разработчик разрабатываете сценарии взаимодействия и вы можете определить точки, где ваш друг, использующий приложение, может ошибиться. Конечно, очень важны сообщения об уже совершенных ошибках, но также вы можете предупредить ошибки. Внести в сценарии взаимодействия возможность предупреждения ошибки или возможность изменить сценарии взаимодействия, так чтобы минимизировать возможные ошибки.   Например, друг может не осознавать разницу между действием «компания» и «кампания», но приложение как информационная система, может позаботиться, чтобы пользователю предоставлялись, например, действия соответствующие контексту.  Чтобы использовать хорошие значения по умолчанию, чтобы использовать подсказки и т.д. Такая переработка сценария взаимодействия позволяет исключить ошибочную ситуацию.   Также друг может строить неверные предположения о функционировании приложения. Вы как программист можете выявлять такие потенциальные сложности друга в использовании вашей программы и помогать другу.   Позвольте другу легко получать доступ к  необходимой информации для работы с приложением.   Для достижения целей друга приложения может предоставлять всю необходимую информацию, а не требовать заучивания наизусть этой информации. Информации, упомянутой в других частях приложения, в документации, в обучающих видео по использованию программы или же на некой конференции, которая проходит раз в год.   Информация в приложении постоянно меняется, И правда, другу следует заучивать наизусть некую информацию, потом переучивать, потом ещё много раз переучивать? Если друг готов потратить достаточно времени на изучение вашего приложения, позвольте ему достичь этим высокой эффективности использования приложения.  Если друг знает, что может стать экспертом в использовании вашего приложения, позвольте  ему эффективно использовать приложение. Друг готов знать достаточно хорошо ваше приложение, поэтому для него могут быть полезны механизмы интерфейса ускоряющие работу.   Возможно, друг не мало число раз использует приложение, а использует постоянно, поэтому проблемы новичков для него не так актуальны. Ему могут быть полезны более эффективные механизмы взаимодействия с интерфейсом вашего приложения.   Приложение может заботиться о том, чтобы быть минимальным, чтобы не перегружать друга информацией и возможностями, которые ему не нужны.   Друг имеет право на ошибку. Программист же может подсказать, когда друг может совершить ошибку и как лучше всего восстановиться после совершения ошибки.   Хорошее приложение не требует документации, но возможно другу захочется узнать как достичь его целей в вашем приложении.   P.S. Как вы поняли это классические 10 эвристик Якоба Нильсена. Только под немного другим углом зрения.  Спасибо тем, кто прочитал.