RSS Подписка на статьи RSS Подписка на комментарии Панель инструментов

Блог профессионалов стал частью сайта технической поддержки DocsVision http://support.docsvision.com. Новые материалы будут появляться уже на этом сайте.

Поиск

Ярлыки

авто генерация кода (1) Администрирование DocsVision (60) Атрибутивный поиск (3) База данных (24) Базы знаний (1) Безопасность (1) Бизнес-процессы (20) Блог (2) Вы увидите это первыми (1) Групповые политики (1) Диаграммы (2) Задания (2) Интеграция (2) Карточки DocsVision (14) Конструктор Решений (11) Маркетинг и продажи (4) Навигатор (3) Новое (3) Новости (32) Опрос (4) Опросы DocsVision (4) Оптимизация (3) Отчеты (2) Ошибки (1) Поддержка (14) Полезные ссылки (1) Представления (4) Производительность (5) Разбор полетов (18) Разработка для Workflow (7) разработка карточек (2) Разработка на платформе DocsVision (41) Разработка решений (43) Расширение платформы (1) Расширенные отчеты (9) Решения на платформе DocsVision (6) Сервисы DocsVision (3) Сканеры (3) Справочник сотрудников (1) Справочник типов (1) Установка (1) Утилиты (13) Шлюз в SharePoint (8) Штрихкод (2) Cкрипты карточек (7) DocsVision внутри (1) DocsVision Live (1) FileStream (1) FireFox (2) Opera (1) Powershell (5) Safari (1) SharePoint2007 (1) SharePoint2010 (2) Silverlight (1) UltraViews (1) Vista (1)
Показаны сообщения с ярлыком Поддержка. Показать все сообщения
Показаны сообщения с ярлыком Поддержка. Показать все сообщения

Использование баз знаний в поддержке программного обеспечения

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

Итак, для чего предназначена база знаний?
База знаний является структурированным архивом материалов, которые относятся к определенной теме:  в случае программного обеспечения – к определенному продукту. Основное ее предназначение – сделать так, чтобы вопросы разрешались до обращения в службу поддержки, т.е. создать возможность самопомощи.

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

Понятно, что только компания, обладающая значительным ресурсом, может позволить себе ведение структурированного справочника, т.е. следить за связностью материалов, актуальностью статей, правильно и понятно оформлять материал и т.д.. Поэтому не стоит пытаться создавать базы знаний в виде структурированных справочников - гораздо эффективнее использовать блоги и форумы. Тем более, что с существующими технологиями поиска найти нужную информацию не составляет проблем.

Инструменты для создания баз знаний.
Если говорить об инструментах для создания баз знаний, то для каждой из групп можно отметить следующие:

Структурированный справочник: это может быть собственно разработанный сайт, или готовое решение, например, MindTouch: http://www.mindtouch.com/

Для создания блогов можно использовать любую площадку, но основываясь на своем опыте, я рекомендую http://www.blogger.com . Причина – это сервис- ресурс Google, все статьи прекрасно индексируются и отображаются в результатах веб-поиска.

Для форумов также можно использовать любой подходящий ресурс. Если ваша HelpDesk система имеет эту функциональность, то удобнее использовать именно её. Мы используем в своей работе Zendesk: http://www.zendesk.com .

Эффективность.
Вы создали и наполняете содержимым свою базу знаний. Но как определить её эффективность, какие метрики для этого подходят?

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

Второй вариант – использование системы оценок пользователей. Если такая функциональность есть, то основываясь на оценках можно определить полезность материалов.

Третий вариант немного более сложный. Главная цель базы знаний - увеличение степени самопомощи, за счет снижения числа обращений в службу технической поддержки. Одинаковые частые вопросы, которые приходят в службу технической поддержки обязательно должны быть опубликованы. Если ввести систему ранжирования вопросов, например, частый (простой), и редкий (сложный), то при эффективно работающей базе знаний количество частых (простых) вопросов должно быть на минимальном уровне.

Можно использовать все варианты в различных комбинациях.

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

Читать дальше

Оставить комментарий (всего: 2)

Портал технической поддержки DocsVision

 
Мы вводим новый инструмент поддержки - портал DocsVision: https://support.docsvision.com.

Прежде всего он является единым ресурсом технической информации по нашему продукту и в дальнейшем станет полноценным инструментом сопровождения.




Немного о структуре.

Сейчас на портале существует несколько разделов


«Программа «Форсаж»» - содержит кумулятивные патчи (доступно зарегистрированным пользователям), и методические рекомендации, относящиеся к данной программе (видно всем, без ограничений).


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

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


На портале можно регистрировать инциденты для нашей службы технической поддержки. На данный момент заявку можно только создавать: она автоматически будет передана в нашу службу ТП, и закрыта на портале. Решение будет продолжено, как и раньше, по почте, уведомление о регистрации будет отправлено.


Планы на ближайшее будущее.

Решение инцидентов будет полностью переведено на портал. На нем можно будет просматривать заявки, осуществлять поиск по ним и видеть изменение в реальном времени

Остается открытым вопрос развития данного блога. Некоторое время статьи будут дублироваться на обоих ресурсах, в последствие только на новом портале. Продолжать публиковать информацию на блоге смысла нет, общие статьи на support.docsvision.com будут доступны всем, и они индексируются поисковыми системами.

Учетная запись доступа на портал предоставляется специалистам компаний партеров, и специалистам заказчиков. Для регистрации нужно обратиться либо в нашу службу технической поддержки, либо в отдел по работе с партнерами.


Читать дальше

Оставить комментарий (всего: 0)

DocsVision 4.5 проверен на совместимость с Internet Explorer 9

DocsVision 4.5 был протестирован на совместимость с Internet Explorer 9. Ошибок не обнаружено, и такая связка будет официально поддерживаться. Новость на сайте
Читать дальше

Оставить комментарий (всего: 0)

Аварийное завершение Навигатора.

Рассмотрим один из случаев.
Под аварийным завершением будем описывать ситуацию, когда приложение само собой закрывается, либо после закрытия появляется сообщение "Приложение выполнило недопустимую операцию и будет закрыто".
Как правило, единственным способом исследования таких инцидентов является анализ дампа памяти разработчиком. Однако, одной из причин может быть нехватка какого-либо компонента. В этом случае можно обойтись без анализа дампа.
Что для этого нужно.

1. Навигатор, который аварийно завершает работу при определенном действии
2. Process Monitor (http://technet.microsoft.com/ru-ru/sysinternals/bb896645).

Последовательность шагов такова.
1. Запускается Навигатор
2. Запускается Process Monitor
3. Выполняется действие, которое приводит к сбою.

В логе ProcessMonitor за время падения нужно поискать обращения к реестру, которые закончились неудачей: NOT FOUND. В ключе реестра (колонка Path) будет запись типа CLSID {идентификатор}. Нужно на машине, на которой не наблюдается сбой поискать в реестре данный ключ. В ключе будет название компонента. Далее этот компонент надо найти на проблемной машине и попробовать зарегистрировать через regsvr32.

Пример инцидента.

Навигатор аварийно завершал работу при открытии любой карточки. Через Process Monitor было выявлено, что на машине отсутствует регистрация компонента oleaut32.dll. При этом данная библиотека находилась на машине в папке Windows\system32. Регистрация устранила сбой.

В каких случаях такое может быть, ведь oleaut32.dll системный компонент?

Причина в стороннем ПО. Стороннее приложение могло при установке добавить в свою папку свою копию библиотеки oleaut32.dll и зарегистрировать её. При деинсталляции этого приложения, библиотека удаляется вместе с регистрацией.


Читать дальше

Оставить комментарий (всего: 0)

Поддержим по особому

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

  1. Расширенное время работы 8:00-20:00 (МСК)
  2. Улучшенные сроки создания исправлений. Исправление может быть создано в не зависимости от наличия обходного сценария.
  3. Возможность работы по выходным и праздничным дням
  4. Уведомления об обнаруженных ошибках и исправлениях
  5. Закрепленный менеджер
Помимо этого инциденты с критическим и высоким приоритетами могут решаться специалистами службы технической поддержки непосредственно на сервере заказчика через удаленный доступ.

Подробнее об этой поддержке http://www.docsvision.com/support/rasshirennaya/

Таблица сравнения http://www.docsvision.com/support/ Читать дальше

Оставить комментарий (всего: 0)

Два нововведения в системе обработки обращений

В нашей текущей системе обработки обращений появились два новых сервиса.
Во первых, как многие могли заметить, теперь при изменении приоритета или ответственного отправляется информация о текущем состоянии.


Вашему обращению присвоен новый приоритет или изменен ответственный.
Приоритет: Плановый
Ответственный: Zakharov Mikhail
Состояние: Ожидает ответа инженера технической поддержки

Your incident has a new priority or a new responsible person.
Priority: Planned
Responsible: Zakharov Mikhail
State: Waiting for solution

29.09.2010 17:47


Какие бывают состояния, и что они означают?

Инцидент может иметь следующие состояния:
  1. Открыт - устанавливается при регистрации нового обращения на время до взятия его в работу. 
  2. Ожидает ответа инженера технической поддержки - это означает, что инцидент поставлен в очередь и ждет рассмотрения инженером
  3. Ожидает ответа инженера технической поддержки. Требуется консультация разработчика - инцидент был рассмотрен инженером, но потребовались уточнения разработчика, и ему отправлен вопрос.
  4. Ожидает ответа от вас - ответ был отправлен вам
  5. Решен - ответ был отправлен вам, мы считаем, что он полностью отвечает на вопрос и ждем соответствующего подтверждения
  6. Закрыт - инцидент был закрыт.

Необходимо помнить, что вне зависимости от статусов 1,2 и 3. наш ответ всегда будет отправлен в соответствии с регламентом и приоритетом.

Нет, штука в том, что теперь можно отправить на ящик службы ТП письмо с темо

?[Incident 12345]

И в ответ придет информация о текущем статусе вашего инцидента. Естественно, нужно указать номер вместо 12345. Есть ограничение, информация отправляется только автору обращения, т.е. с отправленный другим человеком он будет бесполезен.

Сервис №2. Отправив запрос с темой
??[Incident 12345]

Вы сможете получить последнюю переписку по данному инциденту. Все ограничения аналогичны. Читать дальше

Оставить комментарий (всего: 4)

Инцидент №50000

Именно с таким номером сегодня зарегистрирован инцидент в нашей службе поддержки. Даёт ли это какую-нибудь оценку? Да в общем нет :)

Нумерация у нас идет по порядку вперед. Если номер освобожден, то он занят не будет. Но, тем не менее, это признак того, какое количество запросов, включая спам, мы обработали.

Наша техподдержка самая открытая в мире. Не скрываем от вас, что
- всего зарегистрировано инцидентов (если исключить весь спам и пр.) у нас 34655.
- сейчас приходит около 100 различных обращений в неделю - лето же :)

Посмотрим на самый низкий приоритет в нашей иерархии: "Плановый". Какое среднее время ответа будет по этому приоритету?
Ответ: 7.2 часа (ср. с максимальным возможным 32 часа http://www.docsvision.com/index.phtml?Name=support1).

Возьмем выборку из 200 инцидентов и взглянем на график среднего времени ответа по каждому инциденту:

Есть пики, но в основном значения гораздо ниже нормативного значения времени реакции. Читать дальше

Оставить комментарий (всего: 0)

Жизненный цикл инцидента. Регистрация и первый ответ.

Продолжаем пятничную тему.

Что происходит с инцидентом после того, как вы отправили письмо на адрес supрort@dосsvision.com.

Шаг 1. Автоматическая регистрация.
После того, как письмо попадает в наш ящик, его подхватывает наш бизнес-процесс. Бизнес-процесс начинает разбирать его по частям: отправители, получатели в копии, тема, тело сообщения, вложения.
При регистрации есть одна особенность - скриншоты, которые вставлены в тело письма не попадают в список приложенных файлов, и мы их не видим. Поэтому все файлы надо прикреплять как вложения.

По данным письма создается специальная карточка - обращение, в которой записаны все данные. Кстати, в адресаты автоматически заносятся все, кто стоял в поле "получатели CC", следовательно все наши ответы они тоже получат.
После создания карточки отправителю идет ответ, о том, что письмо зарегистрировано. Но после этого инцидент еще не попадает инженеру.

Шаг 2. Распределение.
После автоматической регистрации, инциденту должен быть назначен ответственный инженер. Но перед этим ему вручную проставляется еще несколько параметров: модуль, версия платформы, приоритет. И уже после этого назначается ответственный.

После назначения ответственного отправляется второе информационное сообщение.

Шаг 3. Решение.
Самый интересный шаг. Все инциденты у каждого специалиста ранжируются и выстраиваются в очередь. Но если мы видим, что инцидент простой, и ответ на него будет быстрым, то он может быть рассмотрен практически сразу после регистрации.
В процессе решения может потребоваться помощь разработчика. В этом случае специалист поддержки создает т.н. вопрос разработчику - это тоже карточка.

Шаг 4. Отправка ответа
Ответ заносится в ту же карточку "обращение" с которой связан инцидент. И после того, как ответ записан и сохранен, карточку подхватывает специальны бизнес-процесс отправки.
Этот процесс формирует письмо: в начало письма вставляет последний ответ, а затем несколько записей из предыдущей истории переписки. Указывает всех адресатов, прикрепляет файлы и отправляет письмо. После этого меняет состояние в карточке обращения, и устанавливает дату напоминания.  Если до этой даты не будет ответа, то будет автоматически отправлено напоминание. Читать дальше

Оставить комментарий (всего: 2)

"Кухня". Несколько слов о приветствиях.

Под завершение рабочей недели посмотрим немного на нашу кухню :).
Все приветствия в своих ответах ("Здравствуйте. Добрый день") мы пишем, несмотря на то, что все пользователи зарегистрированы в справочнике, исключительно вручную. Мы любим своих пользователей, и автоматический процесс к этому не допускаем. И уж точно стараемся избегать безымянных обращений.
Но как обратиться к зачастую незнакомому человеку - Иван, или полностью - Иван Васильевич?
Мы используем простое правило - обращаться как в подписи к оригинальному письму. Вот так.

В следующую пятницу я расскажу как обрабатывается инцидент с момента регистрации и до первого ответа. Читать дальше

Оставить комментарий (всего: 0)

Об опросах

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

И в конце скажите, отвечаете ли вы на какие либо опросы вообще? Если нет, то почему? Читать дальше

Оставить комментарий (всего: 4)

Средство записи действий пользователей в Windows 7

В Windows 7 появился отличнейший инструмент - средство записи действий пользователей. Позволяет записывать действия пользователей в один mht файл. Крайне полезно при предоставлении сценария воспроизведения проблемы.
Подробнее описано здесь http://windows.microsoft.com/ru-RU/windows7/help/Problem-Steps-Recording

Присутствует и в Windows 2008R2. Вызывается командой psr.exe Читать дальше

Оставить комментарий (всего: 0)

Сообщение об SQL ошибке при работе с данными

В техническую поддержку DocsVision приходят обращения
"Делал операцию ... в Навигаторе. Появилось сообщение об ошибке 'Произошла SQL ошибка при выполнении операции с данными на сервере'"

Данное сообщение означает, что сервер DocsVision выполнял какой либо запрос (процедуру и т.п) на базе данных, и сервер MS SQL вернул сообщение об ошибке. Подробный текст сообщения всегда содержится в журнале сервера DocsVision. Журнал включается в консоли настройки, ветка "Сервер", поле "Файл журнала".



Как правило, по тексту сообщения можно понять, в чем причина. Если же нет, то текст сообщения об ошибке, с описанием действия, это те данные, которые необходимо присылать в таких случаях в техподдержку.

p.s. Сообщения в журнале сервера могут появляться с некоторой задержкой. Читать дальше

Оставить комментарий (всего: 0)

Что такое поддержка разработчиков

В чем, на ваш взгляд, заключается поддержка разработчиков? Читать дальше

Оставить комментарий (всего: 3)

Как эффективно сообщать об ошибках

Полезная статья :). Привожу полностью, т.к. ссылки на оригиналы со временем могут протухать.

How to Report Bugs Effectively
(Как эффективно сообщать об ошибках)
by Simon Tatham, professional and free-software programmer

Введение

Любой, кто написал программу для публичного использования, получил, по крайней мере, одно плохое сообщение об ошибке. Сообщения, которые ни о чем не говорили ("Это не работает"); сообщения, которые не имели смысла; сообщения, которые не давали достаточной информации; сообщения, которые давали неправильную информацию. Сообщения о проблемах, которые оборачивались ошибками пользователя; сообщения о проблемах, которые оборачивались дефектом в чьей-то другой программе; сообщения о проблемах, которые оборачивались сбоями сети.

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

В этом эссе я попытаюсь ясно сформулировать, что делает сообщение об ошибке хорошим. В идеале я хотел бы, чтобы все в мире прочитали этот очерк перед тем, как сообщать кому-либо об ошибках. Безусловно, мне бы хотелось, чтобы все, кто сообщает об ошибках мне, прочитали его.

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

В сообщениях об ошибках постарайтесь четко определить, что является реальными фактами ("Я был за компьютером и это случилось"), а что - предположениями ("Я думаю, что проблема может быть в этом"). Опустите предположения, если хотите, но не опускайте факты.

Когда вы сообщаете об ошибке, вы это делаете потому, что хотите, чтобы ошибка была исправлена. Нет смысла в том, чтобы ругать программистов или сознательно не оказывать им помощь: это может быть их ошибка и ваша проблема, и вы можете на них сердиться, и вы можете быть правыми в том, что сердитесь на них, но ошибка будет исправлена быстрее, если вы поможете им, предоставляя всю информацию, которая им нужна. Также помните, что если программа бесплатная, автор предоставляет вам ее из доброты, поэтому если слишком много людей слишком грубы с ним, то он может перестать быть добрым.

"Это не работает".

Поверьте - у программистов есть некоторые зачатки интеллекта: если программа на самом деле вообще не работает, они, вероятно, это бы заметили. А так как они не заметили, у них должно работать. Поэтому, либо вы делаете что-то не так как они, либо ваша система отличается от их. Им нужна информация; снабжение этой информацией - это цель сообщения об ошибке. Больше информации почти всегда лучше, чем меньше.

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

В этом эссе много правил. Ни одно из них не является абсолютным. Разные программисты предпочитают разные способы сообщения об ошибках. Если программа идёт со своим набором правил сообщения об ошибках, прочитайте их. Если правила, которые идут с программой противоречат правилам в этом эссе, следуйте тем, которые идут с программой!

Если вы не сообщаете об ошибке, а просто просите о помощи в использовании программы, вам стоит рассказать, где вы уже искали ответ на ваш вопрос. ("Я смотрел в главе 4 и разделе 5.2, но не смог найти что-либо, что сказало бы мне возможно ли это") Это позволит программисту узнать, где люди ожидают найти ответ, таким образом, он может сделать документацию более удобной.

"Покажите мне".


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

Они знают эту программу как свои пять пальцев. Они знают, каким частям они доверяют и каких частях могут быть дефекты. Они интуитивно знают что искать. К тому времени, как программа сделает нечто очевидно ошибочное, они могут уже заметить нечто едва уловимо неправильное и это может дать им ключ к разгадке. Они могут понять все, что компьютер делает на протяжении тестового запуска, и они могут вытянуть из этого важные для них части.

Этого может быть недостаточно. Они могут решить, что им нужно больше информации и попросить вас показать им то же самое еще раз. Они могут попросить вас рассказать процедуру запуска так, что они смогут воспроизвести ошибку для себя столько раз, сколько хотят. Они могут попытаться менять процедуру несколько раз, чтобы увидеть, возникает ли проблема только в одном случае из семейства связанных случаев. Если вам не повезло, им может потребоваться просидеть пару часов с набором инструментов разработчика и начать по настоящему разбираться. Но наиболее важно - сделать так, чтобы программист посмотрел на компьютер, когда он работает неправильно. Когда они смогут увидеть происходящую ни их глазах ошибку, они смогут взять ее и попробовать исправить.

"Покажите мне как показать себе".

Это эра Интернет. Это эра мировой коммуникации. Это эра, в которой я могу послать программу кому-нибудь в России одним прикосновением к кнопке, и он может послать мне комментарии так же просто. Но если у него проблема с моей программой, он не может сделать так, чтобы я стоял перед его компьютером, когда она сбоит. "Покажи мне" хорошо, когда это можно сделать, но часто это невозможно.

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

Таким образом, скажите им точно, что вы делаете. Если это графическая программа, расскажите какие кнопки и в каком порядке вы нажимали. Если вы запускаете программу, набирая команду, покажите им точно, какую команду вы набрали. Там, где это возможно, приведите дословную запись диалога, показывая какие команды вы набирали, и что компьютер выдал вам в ответ.

Дайте программисту все входные данные, о которых вы можете подумать. Если программа читает файл, вам, вероятно, потребуется послать копию файла. Если программа общается с другим компьютером по сети, вы, вероятно, не сможете послать копию этого компьютера, но вы сможете, по крайней мере, сказать какая это разновидность компьютера, и (если можете) какие программы на нем запущены.

"У меня работает. Так что неправильно?"

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

Таким образом, также опишите, что произошло. Опишите точно, что вы увидели. Опишите, почему вы думаете, что-то, что вы увидели неправильно; еще лучше опишите точно, что вы ожидали увидеть. Если вы говорите "и тогда она сделала это неправильно", вы опускаете важную информацию

Если вы увидели сообщение об ошибке, сообщите программисту точно и аккуратно, что это было за сообщение. Это важно! На этой стадии программисты не пытаются исправить проблему: они только пытаются обнаружить ее. Им надо знать, что пошло неправильно, и эти сообщения об ошибках - лучший способ рассказать об этом. Запишите сообщения об ошибках, если у вас нет более легкого способа их запомнить, но не стоит сообщать о том, что программа выдала сообщение об ошибке без описания того, что это было за сообщение.

Особенно если сообщение об ошибке содержит в себе числа, позвольте программистам их узнать. Не считайте, что в них нет смысла только потому, что вы не можете его увидеть. Числа содержат все виды информации, которые могут быть прочитаны программистами, и они часто содержат ключевую информацию. Числа содержатся в сообщениях потому, что компьютер не может сообщить об ошибке словами, но делает лучшее, что может сделать, чтобы предоставить вам важную информацию.

На этой стадии программисты эффективно выполняют работу детектива. Они не знают, что произошло, и они не могут сами подобраться достаточно близко, чтобы увидеть, как это происходит, поэтому они ищут улики, которые это подскажут. Сообщения об ошибках, малопонятные строки чисел, и даже необъяснимые задержки так же важны как отпечатки пальцев на месте преступления. Храните их!

Если вы пользуетесь Unix, программа может произвести дамп ядра (core dump). Дампы ядра - важные источники улик, поэтому не выбрасывайте их. C другой стороны, большинство программистов не любят получать гигантские файлы с дампами по электронной почте без предупреждения, поэтому спросите, перед тем, как отправлять их кому-либо. Также, имейте ввиду, что дампы содержат запись всего состояния программы: любые "секреты" (возможно, программа содержит личное сообщение или имеет дело с конфиденциальными данными) могут содержаться в дампах.

"Затем я попробовал . . ."

Существует множество вещей, которые вы можете делать, когда происходит ошибка. Многие из них сделают проблему еще хуже. Моя подруга в школе удалила по ошибке все свои файлы Word, и, перед тем как позвать знающего человека на помощь, она переустановила Word, а затем попыталась запустить дефрагментатор. Ничего из этого не помогло восстановить файлы, и этим она перемешала свой диск до такой степени, что ни одна программа восстановления файлов в мире не смогла бы ничего восстановить. Если бы она просто оставила все как есть, у нее был бы шанс.

Пользователи вроде этого похожи на мангуста загнанного в угол: упираясь спиной в стену и глядя смерти в лицо, он неистово нападает, потому, что делать что-то должно быть лучше, чем ничего не делать. Это мало подходит к тому типу проблем, которые случаются с компьютером.

Вместо того чтобы быть мангустом, будьте антилопой. Когда антилопа сталкивается с чем-то неожиданным или пугающим, она замирает. Она стоит абсолютно неподвижно и пытается не привлекать внимание, пока она стоит, она думает и вырабатывает наилучшее решение. (Если бы у антилоп была линия технической поддержки, они бы позвонили туда именно в этот момент.) Тогда, когда она решит, что можно сделать наиболее безопасно, она делает.

Когда что-то происходит неправильно, сразу прекратите делать что бы то ни было. Не трогайте вообще никаких кнопок. Посмотрите на экран, заметьте все необычное и запомните или запишите это. Затем, может быть, начните нажимать "OK" или "Отмена", в зависимости от того, что кажется безопасней. Попробуйте выработать рефлекс - если компьютер делает что-то неожиданное - замереть.

Если вы справились с выходом из проблемы либо путем закрытия программы, либо перезагрузкой компьютера, хорошо бы попробовать сделать так, чтобы эта проблема возникла опять. Программисты любят проблемы, которые они могут воспроизвести более чем один раз. Счастливые программисты исправляют ошибки быстрее и эффективнее.

"Я думаю, что тахионная модуляция, должно быть, плохо поляризована".

Не только непрограммисты пишут плохие сообщения об ошибках. Некоторые из самых худших ошибок, которые я видел, написаны программистами и даже хорошими программистами.

Однажды я работал с другим программистом, который находил ошибки в собственном коде и пытался их исправить. Также достаточно часто он обнаруживал ошибку, которую он не смог исправить и звал меня на помощь. Я спрашивал "Что случилось?" Он отвечал, рассказывая мне свое мнение о том, что должно быть исправлено.

Это хорошо работало, когда его мнение было правильно. Это значило, что он уже сделал часть работы, и мы можем закончить ее вместе. Это было полезно и эффективно.

Но довольно часто он ошибался. Мы некоторое время работали, пытаясь разгадать, почему какая-то конкретная часть программы производила неправильные данные, и, в конце концов, обнаруживали, что она этого не делала, что мы полчаса исследовали превосходный кусок кода, а настоящая проблема была где-то еще.

Я уверен, что с врачом он бы так не поступал. "Доктор, мне нужен рецепт Гидройойодина." Люди знают, что это не надо говорить врачу: они говорят симптомы, свои неудобства, боли, сыпь и жар, и вы позволите врачу сделать диагноз, что это за проблема и что с ней делать. Иначе, врач объявит вас ипохондриком или сумасшедшим, и это будет правильно.

То же самое и с программистами. Иногда полезно сообщить собственный диагноз, но всегда излагайте симптомы. Диагноз - это необязательное дополнение и не альтернатива предоставлению симптомов. В равной степени, посылка изменений в коде для исправления проблемы это полезное дополнение к сообщению об ошибке, но не адекватная замена ему.

Если программист просит у вас дополнительной информации, не выдумывайте ее! Однажды некто сообщил мне об ошибке и я попросил его попробовать команду, про которую я знал, что она не работает. Причина, по которой я его просил - я хотел знать, какое из двух сообщений об ошибке она выдаст. Знание того, какое сообщение программа выдала - было ключевым. Он не попытался это сделать, он просто написал мне "Нет, это не будет работать" Потребовалось некоторое время, чтобы убедить его попробовать.

Превосходно, что вы пользуетесь интеллектом, чтобы помочь программисту. Даже если ваши дедукции неправильны, программисты будут благодарны вам за то, что вы, по крайней мере, попытались сделать их жизнь легче. Но сообщите также и симптомы, а то вместо этого вы можете сделать их жизнь еще труднее.

"Забавно, оно делало так секунду назад".

Скажите "неустойчивый сбой" любому программисту и посмотрите как погрустнеет его лицо. Простые проблемы это те, для воспроизведения которых достаточно выполнить простую последовательность действий. Программист может повторить эти действия в хорошо наблюдаемых тестовых условиях и детально посмотреть, что случилось. Слишком много проблем так не делают: это программы, которые сбоят раз в неделю или очень редко, или никогда не сбоят, когда вы пытаетесь это сделать перед программистом, но всегда сбоят, когда у вас подходит крайний срок сдачи работы.

Большинство неустойчивых сбоев не являются истинно неустойчивыми. У большинства из них есть какая-то логика. Некоторые могут возникать, когда заканчивается память, некоторые могут возникать, когда другая программа пытается изменить критический файл в неподходящий момент, и некоторые могут возникать только в первую часть каждого часа! (Я на самом деле такое видел.)

Также, если вы можете воспроизвести ошибку, а программист не может, это может быть потому, что ваш компьютер и его компьютер в чем-то различаются и это различие приводит к ошибке. Однажды у меня была программа, которая сворачивалась в маленький шарик в верхнем левом углу экрана, и сидела там и дулась. Но она это делала только при разрешении 800x600; все было хорошо на моем 1024x768 мониторе.

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

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

"Тогда я загрузил диск в свой Windows . . ."

Существенно, чтобы сообщение об ошибке было написано ясно. Если программист не сможет понять, что вы имели в виду, вы могли бы с таким же успехом вообще ничего не говорить.

Я получаю сообщения об ошибках со всех концов мира. Многие из них от людей, для которых английский язык не является родным, и многие из них извиняются за свой плохой английский. Вообще говоря, сообщения об ошибках с извинениями за плохой английский на самом деле очень ясные и полезные. Большинство неясных сообщений приходит от людей, для которых английский родной, которые полагают, что я пойму их, даже если они не будут делать никаких усилий для того, чтобы быть ясными или точными.

  • Будьте конкретны. Если вы можете сделать что-то двумя способами, укажите, каким вы воспользовались. "Я выбрал Загрузить" может значить "Я щелкнул по кнопке Загрузить" или "Я нажал Alt+З". Скажите, что вы сделали. Иногда это имеет значение.
  • Будьте многословны. Лучше дать больше информации, чем меньше. Если вы сказали слишком много, программист может игнорировать какие-то части. Если вы сказали слишком мало, он должен вернуться и задать еще вопросы. Одно из сообщений об ошибке, которое я получил, состояло из одного предложения. Каждый раз, когда я просил больше информации, сообщивший отвечал мне одним предложением. Получение полезного объема информации заняло у меня несколько недель, поскольку прибавлялось каждый раз по одному небольшому предложению.
  • Будьте осторожны с местоимениями. Не используйте слов вроде "это" или "окно" когда неясно, что они означают. Рассмотрим вот это: "Я запустил приложение Foo. Оно выкинуло окно с предупреждением. Я попытался закрыть его, и оно упало". Неясно, что пользователь пытался закрыть. Пытался ли он закрыть окно с предупреждением или приложение Foo целиком? Это большая разница. Вместо этого вы можете сказать "Я запустил приложение Foo, которое выкинуло окно с предупреждением. Я попытался закрыть окно с предупреждением, и приложение Foo упало". Это длиннее и с повторениями, но, также, яснее и его труднее неправильно понять.
  • Прочитайте то, что вы написали. Сами прочитайте сообщение, и посмотрите считаете ли вы сами, что оно ясное. Если вы привели последовательность действий, приводящую к сбою, попытайтесь выполнить ее сами чтобы убедиться в том, что вы не пропустили какой-нибудь шаг.

Резюме

  • Первая задача сообщения об ошибке - позволить программисту увидеть сбой собственными глазами. Если вы не можете быть с ним, чтобы воспроизвести сбой перед программистом, дайте ему детальные инструкции, чтобы он смог воспроизвести сбой самостоятельно.
  • В случае если первая задача не выполнена и программист не может увидеть сбой сам, вторая задача сообщения об ошибке - описать, что произошло неправильно. Опишите все детально. Определите, что вы увидели. Также определите, что вы ожидали увидеть. Запишите сообщения об ошибках, особенно если в них есть числа.
  • Если компьютер делает что-то неожиданное, замрите. Не делайте ничего до тех пор, пока вы не успокоитесь, и не делайте ничего, что, как вы думаете, может быть опасным.
  • Конечно, попытайтесь продиагностировать сбой, если вы считаете, что можете это сделать, но даже в этом случае следует также сообщить симптомы.
  • Будьте готовы предоставить дополнительную информацию, если это потребуется программисту. Он бы не спрашивал, если бы это не было ему нужно. Он не является намеренно раздражающим (неудобным) Пусть номера версий будут у вас на кончиках пальцев потому, сто они, вероятно, понадобятся.
  • Пишите ясно. Скажите, что вы имеете в виду и убедитесь в том, что это не может быть истолковано неправильно.
  • Прежде всего, будьте точны. Программисты любят точность.
Саймон Тэтхем (http://www.chiark.greenend.org.uk/~sgtatham/bugs-ru.html) Читать дальше

Оставить комментарий (всего: 2)