Данная статья не типична для нашего раздела. Это даже не cтатья, "... а производственные заметки, реальные ситуации, достоверные диалоги, происходящие в этом (и любовном, и Бермудском) треугольнике. Технические проблемы будут знакомы всем, кто работает с бухгалтерскими программами (или просто - с вводом и обработкой данных). Желчность, капризность и высокомерие автора будут понятны всем, кто уже продал первую тысячу лицензий.
Маленькая книга
Это даже не книга, а производственные заметки, реальные ситуации, достоверные диалоги, происходящие в этом (и любовном, и Бермудском) треугольнике. Технические проблемы будут знакомы всем, кто работает с бухгалтерскими программами (или просто - с вводом и обработкой данных). Желчность, капризность и высокомерие автора будут понятны всем, кто уже продал первую тысячу лицензий.
Размышление 1. Любая продукция имеет ограниченное количество потребительских свойств. Скажем, у телевизора это - размер экрана, моно или стерео звук и т.д. А у программы таких свойств – открытое множество. Что справедливо требовать от программиста за свои деньги, а что относится к борьбе лучшего с хорошим? Конечно, можно выделить критические и второстепенные функции программы, но из-за субъективности этого вопроса он всегда проходит одни и те же стадии: первый день работы с программой – трудно, надо изучать, оценивать некогда; первая неделя – все нравится, все предусмотрено, все автоматизировано; вторая неделя – то что есть, воспринимается как должное, то что могло бы быть – как необходимое: "У Вас по умолчанию везде стоит национальная валюта, нельзя ли сделать по умолчанию доллары?".
Размышление 2. Количество выделенного адреналина, выкуренных сигарет и седых волос прибавляется по одной причине: невозможно провести черту, разделяющую ответственность программиста и пользователя. Обычно это проявляется в отношении к арифметике. Типичный звонок: Пользователь: "Программа выдает неправильную цифру." Программист: "Посмотрите подробную расшифровку, из каких сумм она сложилась. Там все цифры верные? Если их просуммировать, результат должен быть тот же?" Пользователь: "Да, так как Вы говорите, все правильно. Но у нас не может быть, чтобы на складе А в конце дня оставался товар Х. Приезжайте и разберитесь." Пусть в лицензии написано "…ущерб, связанный с использованием или с невозможностью использования данного программного обеспечения, <…> никогда, никому, ничего", а читается это так: "Но если по-человечески…", "Вы просто не хотите…" и главное: "Вы же не говорили…". Например, не говорили, что за три года ведения базы данных имеет смысл создать резервную копию. И этот принцип может быть расширен до бесконечности: "Да, был вопрос "Вы действительно хотите совершить непоправимое?", но меня же не предупреждали, что "Да" нажимать нельзя". Это кажется преувеличением? На самом деле было так:
Ситуация 1. Пользователь уверяет, что после обновления программы (которое состоит всего лишь в распаковке архива с живописным значком WinRARа) у него пропали все данные, начиная с двенадцатого февраля. После отработки разных версий случившегося программист нападает на верный след. Он вспоминает, что давным-давно, в начале февраля, он объяснял пользователю, как заархивировать базу данных WinRARом для отправки ее по e-mail. Пользователь подтвердил, что пощелкал по "Наша_фирма.rar", нажал "Извлечь" и даже объяснил зачем: "А у него был такой же значок". Диалог 1. Пользователь: "После перехода на новую версию стало хуже. Как можно вернуть все обратно?" Программист: "Ну, это не лучший путь… А что стало хуже?" Пользователь: "Вы убрали кнопки, которые были внизу" Программист: "Нет, я не убирал." (Осенило) "Может быть, Вы свернули программу в оконный режим?" Пользователь: "Нет." Программист: "Посмотрите на синей полоске с белыми буквами: вторая из трех кнопочек с одним квадратиком или двумя?" Пользователь: "С одним. Там написано "Развернуть"" Программист: "Так щелкните!" Пользователь: "Хорошо, я щелкну. Если не получится, еще перезвоню." Программист: "Нет, щелкните сейчас." Пользователь: "Исправилось!"
Размышление 3. Самое страшное слово – слово "нам", особенно, если оно стоит пятым по счету в сообщении пользователя: "Мы купили Вашу программу, нам ничего не понятно…" "Мы купили Вашу программу, нам все не нравится…" "Мы купили Вашу программу, нам надо, чтобы Вы сделали…" На это программист отвечает, что скорей всего данному пользователю, как и всем остальным, настоятельно рекомендовали поработать сперва с демо-версией, а потом принимать решение о приобретении, и что скорей всего так оно и было. Казалось бы, что на этом беседа должна закончиться, но нет, полемика только начинается. Видимо такой порядок действий был избран сознательно, чтобы сначала стать Клиентом, который всегда прав, а потом ссылаться на "Общество защиты прав потребителей".
Ситуация 2. Три пользователя синхронно прикладывают руку к груди и хором клянутся, что стоит только отвернуться – и некоторые документы в программе исчезают, а в некоторых изменяется текст (было "Петров", стало "Петренко"). После изысканий программист понимает, что происходит следующее: Важным атрибутом документа является номер кузова автомобиля (речь идет об СТО). В нем кроме цифр присутствуют латинские буквы. Многие из них (А, В, Х и т.д.) внешне совпадают с кириллицей. Пользователь вводит славянский вариант, закрывает документ, в "Поиске" набирает символы их западных двойников – документ не найден, исчез. Он создает его снова, ошибаясь в графе "Фамилия". Программист, ликуя, открывает оба документа: с "Петровым" и "Петренко" и объясняет причину явления. Его рассказ принимают недоверчиво, подозрительность осталась.
Диалог 2. Пользователь: "Мы каждый день копируем базу данных на дискету. Теперь возникла потребность перенести ее обратно. Приезжайте" Программист: "Нет необходимости приезжать, я и по телефону расскажу, как это сделать" Пользователь: "Мы пробовали, ничего не получается. Приезжайте" Программист: "Я помню, что у Вас большое предприятие. Зайдите в соседнюю комнату и спросите, кто умеет копировать файлы. Хоть один человек найдется" Чей-то голос возле телефона: "Не доделал свою работу – пусть приезжает и доделает" После препирательств, программист решает нанести визит и обнаруживает следующую ситуацию:
Ситуация 3. В качестве резервной копии ежедневно в течение года на дискету переносился ярлык с рабочего стола. Эта информация вызывает у пользователя скептическое отношение, потому что: "Мы проверяли: щелкали по этому файлу прямо на дискете – программа запускалась, наши данные были". Вышеизложенное наводит программиста на размышления:
Размышление 4. Хорошо было бы законодательно ввести сертификацию пользователей. Но можно проще - если поиск, перемещение или переименование файла оказывается непреодолимой трудностью, спросить: "Когда на собеседовании при приеме на работу Вас спросили, владеете ли Вы компьютером, что Вы ответили?". Нет, так нельзя - слишком обидно.
Размышление 5. Помощь, которую оказывает программист, напоминает сеанс психоанализа. Исцеление достигается восстановлением неприятных воспоминаний, которые были вытеснены из сознания. Программист (после долгих часов выпытывания по телефону мельчайших подробностей): "Что произошло в мире, в стране, в офисе, с того момента, когда данные на экране были, и до того момента, когда Вы опять взглянули на монитор?" Пользователь: "Я чистил клавиатуру".
Размышление 6. Еще аналогия с психоанализом. То, что пользователь видит, и то, что он произносит, напоминает метод свободных ассоциаций. Пользователь: "Я нашел файл. Он у меня в "Столе заказов"." На самом деле файл находится на рабочем столе. Другой пользователь: "Мы работаем с демо-версией и не можем набрать платежное поручение. Программа говорит, что это демонстрационный пример, и свои реквизиты вводить нельзя" Программист: "Не может быть такого сообщения, потому что я его не писал. Прочитайте текст дословно". Пользователь (медленно, с паузами): "Она говорит: "Это демонстрационный пример. Свои реквизиты вводить нельзя". В оригинале было сообщение combobox-а: "Введенный текст не соответствует ни одному из элементов списка".
Ситуация 4. Программист, гордый своей предусмотрительностью, пишет на дискете: "Пощелкать Мой компьютер – Диск 3,5 (А) – ReadMe.txt". Через час звонок: "Дискету вставлять бумажкой вверх или бумажкой вниз?".
Ситуация 5. Пользователь сообщает, что в определенном отчете вместо индивидуального налогового номера Сидорова С.С. программа печатает "ааа". Программист приезжает, смотрит на распечатанный отчет и видит, что до середины листа принтер выводит разумный текст, который заканчивается словами "Индивидуальный налоговый номер", а ниже до конца листа следует бесконечный ряд "ааавввссс…". Пользователь невозмутимо добавляет: "А в другом отчете она вместо суммы "Начислено с начала года" печатает "ааа"."
Размышление 7. Еще страшные слова – "У нас". Их произносит пользователь, когда хочет убедить, что законы природы или законы логики не пересекают порог его офиса. Программист регулярно слышит об учете "наличных" и "безналичных" продаж. Он возражает, что "наличными" или "безналичными" могут быть только оплаты. Он приводит пример: "Если накладная оплачена частично наличными, частично через банк, частично бартером, какая это продажа?". Ответ: "У нас так не бывает". Разумеется, существуют общие для всех правила игры, они называются бухгалтерским учетом. Но если ограничится только им, круг пользователей невероятно сужается, и в "Минимальных аппаратных требованиях" надо писать: "32Мб, 200мГц, бухгалтер". Жизнь требует "управленческого учета", и тут бетонный фундамент аксиом сменяется болотистой почвой субъективности.
Диалог 3. Программист (примирительно): "Давайте пока не говорить о таких технических мелочах как размер окна, цвет шрифта…" Пользователь: "Да, и цвет шрифта" Программист: "Что - "цвет шрифта"?" Пользователь: "Не устраивает. Почему он черный?"
Размышление 8. Конечно, подобные нарекания теряют смысл, если в программе реализованы средства саморазработки. Но на практике эти инструменты бессильны без штатного программиста, получающего зарплату. И выходит, что служат они только для передачи ему части ответственности и труда. Полученный результат будет соответствовать затратам времени, денег и эмоций на содержание специалиста. Очень вероятно, что "адаптация" под конкретного пользователя (если дело зашло дальше зеленного шрифта и логотипа в бланке документа) обозначает замену верного алгоритма ошибочным: "У нас для каждого покупателя действует свой курс валюты" (так может это назвать скидкой?) "У нас ювелирный магазин, и должно быть два поля "Количество": для штук и грамм" (так может быть вес – это потребительское свойство изделия, такое же, как изготовитель или проба?) Так может проблема в амбициях: принять или не принять решение разработчика?
Размышление 9. Поскольку с бухгалтерской программой работают ежедневно с утра до вечера, все неполадки операционной системы или оборудования, предписываются ей. Пользователь: "Ваша программа не запускается" Программист: "Что происходит после того, как Вы щелкаете по ярлыку?" Пользователь: "Я не могу найти ярлык" Программист: "Их расположение на рабочем столе могло измениться. Не спешите. Поищите." Пользователь: "Я вообще не вижу фотографию, которая у меня всегда здесь была. Только черный экран, а на нем белые буквы. Я жду уже двадцать минут, а ничего не меняется." Интерпретация событий "задним числом" может связать возникновение любой проблемы с любой кнопкой в программе, если она была нажата на той же неделе. Пользователь жалуется, что при работе с программой зависает компьютер. Программист бормочет оправдания и выезжает на место происшествия. На месте пользователь уточняет, что компьютер зависает, даже если программу запустили и ушли на перерыв. И даже если ее выключили, то он потом зависает весь день. Диагноз: греется процессор.
Ситуация 6. Пользователь (она) упорно называет список товаров "базой данных". В кульминации своего рассказа о кознях вероломной программы: "А когда она, ничего не сказав, удалила все: и названия, и документы, и реквизиты, муж сказал: "Хочешь, я поеду к ним, набью морду?"". (даже Word говорит: "Слово с ярко выраженной экспрессивной (негативной, иронической) окраской") Спустя время, программист восстанавливает события. Набрав ряд наименований в справочнике объектов учета, пользователь закрыл это окно, пощелкал по другим меню и решил вернуться к работе. Что нажимать? Конечно – "Файл"/"Создать базу данных". Все пусто, все удалено!
Ситуация 7. Случай не единичный. Поступает сообщение о том, что дата не редактируется – программист проверяет формат даты, региональные стандарты и т.д. Жалуются, что не заполняется количество – программист исследует администрирование прав пользователей и т.д. Разгадка всегда одна – NumLock.
Диалог 4. Пользователь: "У меня на компьютере уже есть одна программа. Не страшно, если их будет две?"
Диалог 5. Пользователь: "Мы скачали из интернета Вашу программу. Она спрашивает регистрационный номер" Программист: "Он выдается после оплаты лицензии. Вы уже платили?" Пользователь: "Мы платили" Программист: "Скажите, от кого должны были поступить деньги, чтобы я Вас нашел" Пользователь: "Мы платили провайдеру за интернет!"
Размышление 10. Неопытный, но доброжелательный, пользователь – друг, товарищ и брат. Опасаться же следует таких представителей этого лагеря: "Творец" – прежде, чем взглянуть на демо-версию, на бумаге будет нарисована схема "Что нам надо". Листа А-4 едва хватает на то, чтобы заново открыть принцип двойной бухгалтерской проводки. Хуже было, когда пользователь, которого обязали освоить работу с программой, со словами: "Я давно думал об этой задаче" достал папку с рукописью. Другой тип – "Запуганный": Программист: "Вы же понимаете, что если не пересчитать суммы в единую валюту, их невозможно складывать, вычитать" Пользователь: "Я-то понимаю, но давайте я позову к телефону своего директора, Вы сами ему скажете"
Диалог 6. Пользователь: "Сколько человек работают у вас в штате?" Программист: "А у Вас?" Пользователь: "Я просто хочу представить себе, насколько у вас солидная фирма." Программист: "Крайне не солидная. Но можно оценить саму программу, выгрузив ее с нашего сайта" Пользователь: "А где гарантия, что она не будет отправлять мои данные через интернет в отдел по борьбе с экономическими преступлениями?"
Диалог 7. Пользователь: "У нас каждый день пропадают данные. Утром все в порядке, вечером смотрим: того, что я набирала, нет у Светы; того, что она – нет у меня. И мы набираем недостающие документы" Программист: "Вы работаете с одной базой данных по сети?" Пользователь: "Да" Программист: "Посмотрите путь к этому файлу" Пользователь: "С:ПрограммаБазаДанных.mdb" Программист: "А теперь пересядьте на место Светы и посмотрите там" Пользователь: "С:ПрограммаБазаДанных.mdb. Ну и что?"
Ситуация 8. Пользователь рассказывает по телефону про невероятные глюки. Вплоть до того, что безо всяких действий со стороны человека, появляются сообщения "Действительно удалить?". Программист не верит, подозревает, что это просто человеческая невнимательность. А зря. Разгадка такова: разъем клавиатуры, подключенной через переходник, болтался. В текстовых полях появлялся бессмысленный текст, мгновенно открывались и закрывались какие-то окна и т.д. Клавиатуру сменили – прошло.
Диалог 8. Пользователь: "Нам надо, чтобы в приходной накладной распечатывалась сумма в ценах закупки и в ценах продажи. Это чтобы узнать прибыль. Иначе нам эта программа вообще не нужна" Программист: "Как же Вы собираетесь узнать прибыль?" Пользователь: "Мы садимся с бухгалтером в конце месяца, отмечаем, какие закупки полностью закончились, складываем по ним суммы закупки, суммы продажи, затем их вычитаем" Программист: "А не проще посмотреть в программе сразу результаты хозяйственной деятельности: прибыль, рентабельность?" Пользователь: "Но если компьютер "накроется", то мы сядем с бухгалтером…"
Диалог 9. Пользователь: "Давайте, я буду грамотно ставить задачи, а Вы их реализовывать. Я понимаю, что все остальные будут моими идеями пользоваться, но я готов делиться ими бескорыстно"
Размышление 11. Форум на сайте или переписка по e-mail, в силу своей заочности и анонимности, превращают флегматика в сангвиника, а сангвиника – в состояние аффекта. Если текст заканчивается более чем одним вопросительным или восклицательным знаком - это не к добру. В следующем послании речь идет о бесплатной демо-версии и оплате услуг почты: "Я недавно получил Ваш диск. Спасибо. Однако будет просьба на будущее, упаковывать диск в специальный конверт (с воздушной подкладкой), потому что футляр разбился. На почте данные конверты есть. Следующее, что меня интересует, так это что программа почему то не локализована под украинское законодательство, а именно почему все на русском языке, вы в какой стране живете и работаете??? Так что, мне нужна для показа людям и самому себе программа на украинском языке и украинскими документами (!!! второй раз за диск я платить не собираюсь !!!). Есть в городе ряд предпринимателей, которых заинтересовала бы Ваша программа, но получается показывать им нечего, да и объяснять почему так происходит у меня желания нет. В данной ситуации получается, что я выбросил деньги. Что Вы можете по данному поводу сказать?"
Размышление 12. Для каждого ремесла есть название. А в "сфере информационных технологий" - и системный администратор, и программист, и мастер по ремонту - это "компьютерщик". Звучит таинственно и неопределенно. Чувствуется, что компьютер, хоть он и "персональный", принадлежит только своему повелителю, как бубен – шаману.