Previous Entry Share Next Entry
maper

Инструкции к программам. Нужны ли они сегодня.

В то время, когда я был действующим программистом (с 1963 года) и руководителем программистских коллективов, на меня огромное впечатление произвела книга Ф.Брукса "Мифический человеко-месяц". Там, при обсуждении важности программной документации, упоминалась закономерность, обнаруженная в самолетостроении (цитирую по памяти) - самолет начинает летать, когда вес проектной документации превышает вес самолета.

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

Первое правило постепенно потеряло актуальность уже в 80-ых. Сегодня невозможно представить себе пользователя Microsoft Word, который полностью прочел инструкцию (на самом деле все разделы Справки) по этой программе. Хотя пользователей этой программы, скорее всего, десятки миллионов. Главным умением любого человека, использующего компьютерные программы (неважно, для профессиональной или частной деятельности) становится умение быстро найти в Справке или просто в интернет-поиске информацию о том, как сделать то, что ему нужно сделать. Правда, при этом за кадром остается важнейшее соображение о том, что пользователь не всегда знает, что именно ему нужно сделать, а если и думает, что знает, то он в этом не всегда прав.

Но буквально в последние годы я заметил, что взаимодействие с используемыми нами программами переходит на следующий этап. Полных (исчерпывающих) инструкций к некоторым программам просто не существует. В некоторых случаях их не существует потому, что программа, о которой идет речь, представляет собой не застывший объект с конечным, хотя и очень большим, набором функций, а развивающийся (часто без участия создателей) организм, поведение которого даже создатели не всегда могут предсказать точно. Хорошим примером является Siri - робот, хорошо знакомый пользователям iPhone, включая мою 11-летнюю дочь. Я уже не удивляюсь, когда слышу вечером ее голос: "Сири, установи будильник на 7 утра". А если, обращаясь к Siri, сказать просто "Тук-тук", то выяснится, что она, якобы, знакома с мультфильмом "Каникулы в Простоквашино".

Но даже для программ, которые не вовлечены в явный процесс самообучения, найти полную инструкцию (исчерпывающий набор команд и реакций на них) представлятся затруднительным и такие инструкции, возможно, не существуют. Примером является Яндекс Навигатор. При выборе конечной точки маршрута можно указать (цитирую инструкцию)
https://yandex.ru/support/navigator/concept/voice.xml

Скажите «Поехали» и назовите конечную точку маршрута. Названием точки может быть:


  • имя точки из списка Избранное (например, «Домой»);

  • адрес (название улицы и номер дома, например «Льва Толстого, 16»),

  • топоним (например, «Нескучный сад»).

Мы с водителем несколько раз пытались обозначить точку в Избранном БАГЕТНАЯ МАСТЕРСКАЯ. Но на команду ПОЕХАЛИ БАГЕТНАЯ МАСТЕРСКАЯ программа вела в ближайшую багетную мастерскую, а не в названную так точку. Мне не удалось найти в инструкции правило о том, что если название точки совпадает с выражением, имеющим смысл в запросе поиска (ресторан, химчистка, ремонт часов, багетная мастерская), то значение в Избранном игнорируется. То есть этот факт был установлен опытным путем.   Поэтому нами было придумано называть точки НОМЕР ЧЕТЫРЕ, НОМЕР ПЯТЬ и так далее. После чего команда ПОЕХАЛИ НОМЕР ЧЕТЫРЕ исполнялась ожидаемым образом.

В левом верхнем углу главного экрана iPhone отображается одна или несколько звездочек - чем их больше, тем выше сила сигнала от обслуживающей вас сотовой вышки. Информацию о том, как сделать, чтобы вместо нескольких звездочек было число, характеризующее силу сигнала, можно найти в интернете, например http://yablyk.com/342125-kak-vklyuchit-cifrovoj-indikator-urovnya-signala-v-status-bare-iphone/ но я не смог найти подобной инструкции на официальном сайте apple.  Часто такой метод (как сделать нечто, не описанное в официальном руководстве) называют лайфхаком.

На основании этого и множества подобных примеров я задумался над вопросом о том, применяется ли сейчас второе правило при разработке программных продуктов хотя бы  в  отношении программной документации для разработчиков. Я интуитивно чувствую, что ответ положительный и подавляющее большинство лайфхаков - это утечки из программной документации разработчиков для внутреннего употребления. Если я ошибаюсь, то мир может столкнуться с огромным количеством программ, не являющихся, по определению Ф.Брукса
https://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%87%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA%D0%BE-%D0%BC%D0%B5%D1%81%D1%8F%D1%86#.D0.9F.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.B0_.D0.B8_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.BD.D1.8B.D0.B9_.D0.BF.D1.80.D0.BE.D0.B4.D1.83.D0.BA.D1.82 программным продуктом. Последствия могут быть весьма серьезными.

?

Log in

No account? Create an account