Александр Бурьяк

Программная критика

bouriac@yahoo.com На главную страницу
1. Введение. Литература.

1. Введение.

Программная критика -- аналог литературной, театральной, музы- кальной и т. п. критики, применяемый в отношении компьютерных программ. Соответственно много более важный. Но и значительно менее востребованный. Точнее, воспринимаемый почти всеми в штыки. Причины этого отторжения следующие. Производителям программного обеспечения критика его не нужна, потому что для них "чем хуже, тем лучше": чем тяжеловеснее и замороченнее их программный продукт, тем надёжнее увязает в нём потребитель, тем больше зависимость потребителя от продавца и соответственно тем выше у продавца доход. Главное -- не сильно отличаться в недостатках от своих конкурентов. Критиковать по делу товар конкурентов тоже нет смысла, потому что все реально весомые недостатки этого товара свойственны также товару того, кто мог бы погнать на конкурентов волну. Потребители программного обеспечения вроде как заинтересованы в трезвом взгляде на его природу, но им тоже надо пускать кому- то пыль в глаза, то есть, среди прочего демонстрировать свою передовитость, своё владение новейшими, трендовыми компьютерными инструментами. Дурное (и в конечном счёте разрушительное) в современном программировании: 1. Избыточность компьютеризации: стремление всунуться с компьютерами везде, где только можно. 2. Ненужное усложнение компьютерных программ. 3. Сохранение и расширение зон беспорядка (это скорее идёт от нарастающей неспособности устанавливать и поддерживать порядок, а не преследует какую-то цель). 4. Ориентация на развлечение и охмурение пользователя, на удержание его в состоянии недоинформированности и умственной недоразвитости. 5. Нацеленность на увеличение зависимости и подконтрольности пользователя: на то, чтобы он... - имел потребность в регулярной поддержке от производителей компьютерных программ; - был подключён к компьютерной сети, общался и делал свои дела по возможности через эту сеть; - держал свои данные вне своего компьютера, на серверах -- там, где к ним есть доступ посторонних. 6. Принуждение к обновлению программного обеспечения: старые продукты, форматы, протоколы остаются без поддержки. Надолго остановиться на каком-то уровне их развития нельзя: надо двигаться вместе со всеми пользователями и разработчиками в мутную паскудную даль. Можно позволить себе лишь держаться немного сзади. Стоит ли за всем этим большой зловещий план (деструктивный или имеющий целью установление тоталитарного "мирового господства"), сказать трудно. Скорее всего такого плана нет (но бдеть в этом направлении надо!), а то, что получается, -- результат сложения и огромного множества частных проявлений "слишком человеческого": гениотства, корысти, коллективного усердия профессионально изо- щрённых дураков -- больших узких специалистов в искусственной преходящей ерунде. Попробуем рассмотреть лес за деревьями. * * * В фильме "Иностранец" с Джеки Чаном и Пирсом Броснаном ирландс- кие террористы хотели взорвать пассажирский самолёт, подсунув в лэп-топ одному из пассажиров аккумулятор, в который была спрятана взрывчатка. Лэп-топ при этом оставался вполне рабочим. Я не счи- таю, что такой вариант размещения взрывного устройства -- наду- манный, легко обнаруживаемый (не ради лищних хлопот теперь в аэропортах на просвечивании требуют помещать лэп-топы в отдельные корытца). Как известно, были случаи, когда взрывались даже "нор- мальные" аккумуляторы мобильных телефонов. То есть, в принципе не надо даже помещать в аккумулятор обычную мощную взрывчатку, а можно всего лишь применить в нём что-то, способное вдобавок взо- рваться. И потом при случае воздействовать на это что-то посредс- твом радиосигнала. Самолёта слабый взрыв не разнесёт, но оставить кое-кого с посеченной физиономией, без зрения, слуха и пальцев сможет вполне, а это пострашнее будет, чем простой отрыв головы. И напомним себе, что любой лэп-топ имеет WiFi связь, то есть, в принципе может подключаться к внешнему чему-то там без вашего ведома, даже если вы не воткнули в этот лэп-топ провода компью- терной сети. А ещё ведь на каждом лэп-топе есть видеокамера и микрофон, то есть вас в принципе могут смотреть и слушать, даже когда вы этого не хотите. Лично у меня оба указанных устройства заклеены пласты- рем -- на всякий случай -- но люди говорят, что для нейтрализации микрофона это не достаточно. И с радиоизлучениями у нас тоже тот ещё туман. В компьютере радиоизлучатель имеется: тот, который обеспечивает WiFi. Какие-то режимы радиоизлучения менее вредны для организма, какие-то -- более. А полезных, вроде, ещё не нашли. И вот с какого рожна не подозревать, что имеется возможность порадиоизлучать на вас так, что у вас потом в организме что-то начнёт дисфункционировать, а то и вовсе отвалится, а объяснят это побочным действием ковида или скрытой дурной наследственностью? Это паранойя? Может быть. Только она вообще-то плохо сочетается с гедонизмом, сибаритством и наклонностью посмеяться, характерными для людей моего склада. Скорее, это результат уважительного отно- шения к "художественной правде" в голливудской продукции и сравни- тельно неплохого, наверное, знания человеков и их истории: если имеется возможность скрытно делать какие-то гадости, некоторые мимо этого не пройдут. Если честно, я, может, и бы сам на кое- кого под настроение при случае порадиоизлучал (шибко доставучих людей хватает), но в совсем приватном порядке делать это техниче- ски очень сложно, да и недосуг. * * * Я не думаю, что кто-то намеренно делает пользовательские интерфейсы невнятными, двусмысленными, сложными, дезориентирую- щими, недостаточно информирующими, плохо воспринимаемыми визу- ально. Хотя кто их знает. Какой-то смысл во вредительстве есть: если больше проблем и сложностей у юзеров, то юзеры медленнее работают и чаще ошибаются. Значит, юзеров будет больше (= будет больше продаж компьютеров и программ), и зависимость юзеров от прставщиков программ будет прочнее. Вряд ли создатели плохих компьютерных программ работают так в интересах медиков (чтобы у тех было больше клиентов и чтобы росли продажи лекарств, очков и т. п.) Достают синонимы. К примеру "Enter", "Save", "Submit", "OK", "->", "Write", "Get", "Next", "Sign in" и др. Уж остановитесь на чём-то одном. Лично меня устроит "Enter" -- как на клавиатуре. Вот ещё никчемные вариации: "User Id", "Accessor Id", "Account". А ещё меня раздражают "Download" и "Upload": я должен напря- гать соображение по поводу того, где у них "up" и где "down". Лично мне было бы много понятнее "Send" и "Receive". В одной популярной программе корпорации Micrisoft я увидел рядом две опции: "Sigin in" и "Sign up". Я всю жизнь работаю с английским, но этот язык мне не родной, и я не понимаю разницы между "in" "up" в данном контексте. Ещё пример из того же ряда: "Login" и "Logon". Обычно попадается что-то одно, и ты за себя более-менее спокоен. Но вот ты сталкиваешья с программой "Citrix Gateway", а там на одной "плошке" (ладно, в одном pop-up window -- или НА окне?: оно ж без рамки...) есть и "Logon", и "Log in" -- и оба текста "работают" непонятно как: то ли кликать на них надо, то ли просто принимать их к сведению. А то ещё бывают сложности с "обратной связью": ты кликаешь, а система -- молчок. Может, она начала что-то делать тихой сапой, а может, и нет. Надо хладнокровно ждать, а не дёргаться с повтор- ными кликами, срочным перечитыванием инструкции и т. п. Но потом, правда, может прийти сообщение, что тебя выкинули из процесса, потому что ты слишком медленно двигался: время вышло, "timeout". Ещё я неоднократно сталкивался со следующим: тащусь в Google с вопросом, как сделать в такой-то системе то-то, а Google, норовя- щий помочь, достаёт точно такой или очень похожий вопрос из своих запасников, что означает, что задаю его я далеко не первым. Ну, и кто же тут у нас неполноценный: я со товарищи по проблеме -- или разработчик малопонятной системы? А вдобавок достали новомодные фильмы-инструкции про то, как что сделать в бестолковой системе. Неужели не ясно, что если понадо- бился такой movie, значит, система КРИВАЯ и надо её переделывать? Когда не было фильмов-инструкций, люди старались делать свои про- граммные продукты понятными для пользователя, теперь же считают, что это не обязательно, поскольку можно будет выложить в сеть фильм-пояснение. Отдельно раздражают русифицированные версии программных продук- тов. Они лезут под руку помимо моей воли: намеренно я у себя ру- сифицированных программ никогда не устанавливаю. Хотя бы потому что если что-то сдохло и надо слать картинку экрана забугорному спецу, чтобы он помог, русифицированная картинка для него беспо- лезна. Или потому что User Guide всё равно на английском, а он должен соответствовать тому, что на экране. Скажите, вот хоть кому-нибудь помешало знание английского? Ну так считайте англоязычные программные продукты поводом для изу- чения английского языка и средством поддержания языковых навыков. А ещё почти до белого каления доводит, когда одни и те же вещи называются по-разному в разных местах в пределах одной программы, а я как раз пытаюсь сообразить, как с ней работать. Для гениота- разработчика такой горе-программы эти разные названия -- возмож- но, давно любимые синонимы, но не для меня. Я ищу одно, а вижу другое. И я ведь знаю, что большинство названий в программирова- нии -- это чисто условности ("винчестер" и пр.), из буквального смысла которых вряд ли выведешь сколько-нибудь точное представле- ние о том, что же там ими обозначается. * * * В старые добрые времена всякие сообщения об ошибках, результа- тах, событиях выскакивали посреди экрана в pop-up windows -- и цветом они были поярче, чтобы выделяться на фоне остального, ина- че ж ты мог бы их пропустить. Начиная, наверное, с Windows 10, это уже не так: пошла мода выдавать сообщения в каком-нибудь углу экрана или окна и вдобавок не выделять их цветом (или выделять слабо), а то даже показывать их ВРЕМЕННО (не успел среагировать -- твоя проблема). С учётом того, что экраны стали побольше и позахламлённее, а у многих трудоголиков появилось даже по несколько мониторов, пропускать эти сообщения стало очень легко. * * * Названия программных продуктов, инструментов, технологий зачас- тую даются не так, чтобы более точно отражать функциональность назывеммого и делать названия более удобными в пользовании, а с манипулятивно-сбытовыми целями, в соответствии с текущей модой и текущим набором buzz-words. В результате эти названия слабовато информируют, затрудняют ориентирование в массе всё более накапли- вающейся всякой всячины. Подгаживает по этой части маркетинговый подход: ориентация на сбыт, а не на создание высококачественного продукта, который, кстати, может и не понравиться поnенциальным покупателям -- если выполнен не в модном ключе, не позволяет покупателzc самbм, в свою очередь, пускать с его помощью кому-то пыль в глаза, сорри, практиковать маркетинг). * * * А то ещё такое паскудство в моду вошло (где-то с 2020 г.): "управляющие элементы" на экране не видны, пока не подведёшь курсора к месту, где им надо бы быть. Полагаю, обосновывают это непотребство так: экран не захламляется, на нём чуть больше места (на 2%, да?) для чего-то другого. В реальности результат такой: я должен ПОМНИТЬ, где что располагалось в старые добрые времена, и тыкать в эти места на всякий случай курсором. То есть, если я чего-то не вижу на экране, это ещё не значит, что его там и быть не может: надо ещё на всякий случай поводить там-сям курсором, всматриваясь, не выскочит ли что. А где-то ж какая-то дрянь кичится тем, что придумала новый "визуальный эффект". Разновидность указанного зла: "кнопки" не выделяются в виде прямоугольничков, от этих кнопок присутствуют на экране только надписи или "иконы", а кнопочность (прямоугольнички) появляется в лучшем случае только при подведении курсора. Ты должен ДОГАДЫВАТСЯ, что такой-то текст или такая-то "икона" на экране -- "кнопочные": для вызова на экран или для инициирования чего-то там, а не для обозначения того, что уже было вызвано. * * * Захотел я раз узнать, что у меня за лэп-топ (при покупке, ко- нечно, знал, но это было давно, и документация теперь засунутая невесть куда) и столкнулся с тем, что от меня это держат в тайне. На корпусе написано только "Lenovo", а поконкретнее нет даже мелкими символами на донышке. Попробовал я выяснить это изнутри, а заодно уточнить ключевые параметры -- и в очередной раз столк- нулся с тем, что в операционной системе Windows такие вещи распи- ханы по всяким закоулкам, в которые непонятно как добираться. Между тем эти данные бывают нужны довольно часто. Надо бы сделать так, чтобы они все вызывались на один экран (на ВЕСЬ, а не в оче- редное дурацкое маленькое окошко) одним нажатием клавиши (скажем F10). Лично мне эпизодически требуется (или может быть интересно) такое: - точное название марки компьютера; - объём оперативной памяти; - объём основной памяти; - заполненность основной памяти; - MAC-адрес компьютера (кстати, что эта аббревиатура означает?!); - тип и версия операционной системы; - быстродействие; - масса компьютера; - размер экрана (ну не удерживаются у меня в голове всякие такие цифирки в дюймах, а линейка показывает в сантиметрах, а пересчитывать мне лень); - дата производства компьютера. Чтобы выяснить, как до чего из этого списка добраться в опера- ционной системе, я бываю вынужден лезть в интернет -- и по тому, как достраивает мои ключевые фразы поисковик, отчётливо видно, что испытываю затруднения далеко не я один. Так изучили бы вы эти запросы, умственно деформированные. Я же вашего дерьма не выбирал из какого-то длинного ряда конкурирующих продуктов по признаку наименьшей дерьмовости: вы мне его по сути навязали. Несколько существующих альтернативок -- по сути такое же (если не большее) дерьмо, только по-своему. Собственно, в основном потому и дерьмо, что у потребителей всё равно нет выбора. А ещё потому дерьмо, что благодаря вашему влиянию сложилась дерьмовая парадигма программи- рования -- и даже делания компьютеров (скажем, я хочу иметь на корпусе лэп-топа выключатель, который делает заведомо невозможны- ми какие-то взаимодействия компьютера с чем-то извне -- через проводную сеть и Wi-Fi -- а у вас же такого выключателя нет, а регулярно втыкать/вытаскивать штекер проводной сети -- разболта- ется разъём: он у вас хлипкий, к такому не приспособлен (думаю, это так делается специально, чтобы мы, юзеры, не увлекались отсоединением себя от Большого Брата)). * * * Типичнейшее юзерское действие -- воткнуть в свой новый лэп-топ наушники с микрофоном. И что, вы думаете, что звук сразу же пой- дёт? Ой, вы наивны, как дети. Наушники-то, может, и заработают сразу, а вот с микрофоном начнётся морока в Windows-овском стиле. Вы и в интернет за подсказками напрасно слазаете: подсказки-то будут, да не те. Вдобавок, возможно, к не совсем вашей версии операционной системы (или же они будут русифицированные, тогда как у вас англоязычный вариант операционки), так что вы не будете узнавать картинки. * * * Про ужасы клавиатуры в современных персональных компьютерах. Начало им было положено в IBM PC (где они хотя бы были прости- тельны как наивные первые попытки), а IBM PC частью унаследова- ла их от IBM 360. И это -- в мире, где обожают трындеть про эргономику, прогресс и непреодолимую любовь к юзерам. Наощупь все клавиши одинаковы по шершавости и выпуклости, что сильно затрудняет работу с ними вслепую. Вообще, хоть кто-то заботится о том, чтобы и вслепую на них было удобно работать? Я думаю, НЕТ (иначе были бы какие-то признаки помимо двух едва прощупываемых дурацких бугорков на клавишах "F" и "J"). Просто некоторые клавиатуры СЛУЧАЙНО оказываются менее неудобными для этого, чем другие. Раздражают неодинаковости в размещении на разных компьютерах клавиш "Enter", стрелочных, Backspace, Del, Ins, PageUp, PageDown, Home, End. А ещё привносят свою долю напряжения клавиши "CapsLock", "NumLock", "ScrollLock" и "Function": индикаторы их состояния очень неброские, и проверять их всякий раз неудобно. Из-за всякого такого лично у меня, наверное, процентов 10 бара- банения по клавишам получается мимо и требует переделки скромных результатов. Особенно часто оказывается включённым не тот регистр (клавиша CapsLock). * * * Теперь о дебильностях русификации компьютеров. Надо сказать об этом прямо. Я НЕ ПОНИМАЮ почему некоторые ОДИНАКОВЫЕ символы в русской и английской раскладках клавиатур располагаются на РАЗНЫХ клавишах (и имеют разный код). Вот эти преступные символы: . , : " ' ? / Ну почему было не сделать, как с вот этими символами, которые располагаются одинаково в обеих раскладках?: * % - _ + + = ( ) Зато сильно досаждает то, что русская "С" располагается там же, где латинская "C". Когда тискаешь на эту клавишу как на единст- венную в какой-нибудь порции ввода, то не понимаешь сходу, какая буква получается: латинская или русская. Надо либо вводить ещё какую-то букву -- для идентификации раскладки клавиатуры -- либо смотреть, какая надписюлька светится микроскопическими буквочками среди прочей хрени в уголке экрана: РУС или ENG. В эпоху IBM PC, в начале 1990-х, таки имелась одна программа для редактирования, которая высвечивала на экране красную рамку, если была включена русская раскладка клавиатуры. Уж рамки-то не замечать было невозможно. А ещё была программа (или та же самая?!), в которой если ты нечаянно ввёл текст при ошибочной раскладке клавиатуры, то можно было этот текст выделить и потом перевести на правильную раскладку одним нажатием клавиши. Но это всё зачем-то было оставлено в светлом прошлом. Когда сталкиваешь- ся с подобными вещами раз за разом, всё труднее отпихиваться от подозрения, что это не просто проявления неизбывной (точнее, даже нарастающей -- из-за массовой деградации) руководящей глупости, а что таки имеется ТАЙНЫЙ ПЛАН уморения человечества через завали- вание его ненужными сложностями, чтобы все люди (кроме избранной сволочи, может) жили в постоянном стрессе, злились, болели, недосыпали и не имели времени задумываться, а куда же всё это идёт. * * * В программах самые нужные настройки обычно запрятываются чёрт знает куда: чтобы добраться до них, надо сделать кучу переходов, причём названия этих переходов могут быть слабо связанными с тем, что ожидается в конце (классический пример: в операционной систе- ме Windows, чтобы сделать компьютеру stop, надо кликать на кнопке "Start"). Режимы по умолчанию почему-то самые неподходящие: де- монстирующие какие-то эффекты и facilities, которые лично мне совсем ни к чему и про которые я бы никогда и не узнал по своей инициативе. И мне надо ломать голову над тем, как их ОТКЛЮЧИТЬ. И, между прочим, я не думаю, что я какой-то повышенно бестол- ковый: я думаю, что моя бестолковость приблизительно на среднем уровне. Да, я ленивый, с плохой памятью, избегаю читать User Guides, отвлекаюсь на посторонние вещи, имею дурную наклонность к скорочтению (не всматриваюсь в каждую букву). НО ВЕДЬ Я ТАКОЙ ДАЛЕКО НЕ ОДИН. Ой, а даже если бы нас таких было мало -- что из того? Вы же любите нянчиться с разными инвалидскими меньшинствами (пандусы всякие делать им, на тротуары укладывать плитку с выпук- лостями и т. д.), вот и няньчьтесь с нами тоже, мы к этому гото- вы. * * * Откуда берётся компьютерное дерьмо, в котором человечество вот- вот утонет? Берётся оно из сложного замеса хапучести, жлобства, глупости, простоватой старательности и психических отклонений, включающих гениотство и трудоголизм. На руководящие должности в сколько-нибудь крупных (= старых, авторитетных, задающих тон) компьютерных фирмах выдвигаются в основном дети состоявшгося крупного начальства, его верные пособ- ники и гиперактивщики (не сильно опасные в аспекте подсиживания). Маленькими начальниками иногда также назначаются гениоты (буде такие заводятся) и трудоголики-эскаписты (эти попадаются чаще). Толковые креативные щепетильные люди в такой среде чувствуют себя не вполне уютно, а индивиды с масштабным мышлением и стратегичес- ким замахом оказываются и вовсе белыми воронами и более-менее выживают лишь при условии, что держат язык за зубами. Потому что в цене не способность видеть глубинные проблемы, предлагать ради- кальные основательные решения на благо всех человеков и революци- онно переть против стадного серого большинства, а наоборот, спсобность подхватывать buzz-words, быть в трендах, пользоваться модными коммуникационными инструментами, тараторить, хорошо впа- ривать, быстро и чётко производить манипулятивную ерунду. Вообще, выглядеть очень передовым, в крайнем случае просто быть знатоком какой-нибудь сложной хрени, популярной в текущем сезоне, и непре- менно демонстрировать не холодный скепсис, а бурный оптимизм. По- тому что компьютерные дела -- это на 90% либо очковтирательство чистой воды, либо серьёзнейшие трудовые подвиги, направленные на решение псевдопроблем (= проблем, которых не было бы вовсе, если бы кто-то не находил для себя удобным наживаться на их как бы решении, а вместо этого действовал стратегичнее, систематичнее и с установкой на построение светлого будущего с чётко определённым оптимумом компьютеризации). За дополнительными деталями можно обратиться к блистательным произведениям Сирила Паркинсона. Уточним некоторые понятия. Гиперактивщик -- это, как правило, не более толковый и энергич- ный индивид (хотя иногда бывает и не без этого), а более поверх- ностный, менее разборчивый, охотнее подхватывающий buzz-words и имеющий какое-то шило в заднице (= скрытый стимул, заставляющий особенно сильно стремиться проявить себя и взобраться по социаль- ной лестнице). Чем меньше индивид РОЕТСЯ в корнях проблем, чем меньше знает (= учитывает) и чем больше подражает (тяготеет к трендам), тем легче он выстреливает всякие решения, на первый взгляд, возможно, более-менее годные. Трудоголик-эскапист -- индивид, прячущийся от жизни в работе. В профессиональной области он хоть что-то из себя представляет, вне её он -- никто: скучнейшая потреблятская личность, необустроенная или псевдообустроенная. Работа позволяет трудоголику самоутверж- даться, коротать дни, отделяющие от смерти, получать положитель- ные эмоции от достигаемых трудовых результатов, как правило, поддерживающих и наращивающих современный производственно-потреб- лятский абсурд. Гениот -- гениальный идиот: он бывает чрезвычайно эффективен в какой-то особо узкой трудовой области, требующей памяти, усидчи- вости, комбинаторного мышления, что вполне сочетается с явным общим недоразвитием психики вообще и мировоззрения в частности. Под чутким руководством такой индивид бывает незаменим и в состоя- нии случайно приносить даже прорывные результаты, а под нечутким руководством он всего лишь плодит ненужные компьютерные сложнос- ти, которые ему чем-то оказываются шибко приятными. Менеждеры, определяющие направления работ и базовые технические решения, в своих умопостроениях используют в основном не адекват- ные представления, основывающиеся на обширных личных впечатлениях и надёжных чужих мнениях, а фикции, складывающиеся под влиянием манипулятивных информационных воздействий (рекламы и пр.). В ком- пютерном мире и в окрестностях оного все всем более-менее втирают очки и сами при этом исходят из представлений, частью основываю- щихся на втёртых очках. Фикции трутся о фикции и порождают новые фикции. В сухом остатке -- псевдопрогресс: трудовое перенапряже- ние, испорченное зрение, дурные последствия сидячего образа жиз- ни, накопление бесполезных сложностей, приближение глобальной катастрофы природопользования. Менеджеры нижнего звена, недавно вышедшие из программеров и тесно контактирующие с программерами, в состоянии сохранять чуть большую адекватность суждений о компьютерных делах, но чем даль- ше эти менеджеры от непосредственной программерской работы, тем схематичнее и наведеннее их суждения. А если такие менеждеры про- буют прислушиваться к "мнениям экспертов", то в основном натыка- ются на гиперактивщиков, трудоголиков-эскапистов, гениотов, а то и вовсе имитаторов. Правильный программер консервативен, критичен, ленив, минимали- стичен, осторожен и подолгу (не медленно, а много!) соображает. Он любит порядок, основательные подходы, долгоиграющие решения. И что, велика доля таких программеров? Их мизер. Основная масса про- граммирующего контингента -- жертвы посредственного образования и рекламной промывки мозгов, держатели клюва по ветру, игроманы, интернет-зависимые с моралькой западоидских потребленцев. В лучшем случае -- старательные дисциплинированные работники не без способ- ностей и здравого смысла, вовлечённые в чепуховую деятельность, потому что реально нужные, прорывные проекты и реально блистатель- ные лидеры с революционным замахом не попались им на жизненном пути. Человека делают обстоятельства. Один и тот же индивид при раз- ных обстоятельствах ведёт себя очень по-разному. Те же говнокоде- ры при более правильной постановке дела приносили бы пользу лю- дям, но компьютерная отрасль как целое сегодня тяжело больна мани- пулизмом, абсурдом и безответственностью. И она всё более увязает в сложностях, ею же и порождаемых. * * * Варианты возникновения новых потребностей в программировании: 1. Решили компьютеризовать область деятельности, в которой прежде как-то справлялись без компьютеров или которой вообще не было, поскольку некоторые задачи/возможности прежде не существовали или были незначительными, но потом возникли либо стали весомее -- в результате псевдопрогресса. 2. Где-то что-то слишком раздулось, оказалось слишком наворочен- ным и потребовало "примочек" для справления со сложностями. 3. Соприкоснулось несколько программных "мастодонтов", и понадо- билось обеспечить обмен данными между ними. 4. Вознамерились составить кому-то конкуренцию в какой-то облас- ти и создали "мастодонта", альтернативного уже существующим "мастодонтам" (заодно породили задачу обмена данными между новым "мастодонтом" и существующими). Новый "мастодонт" раз- рабатывается с учётом опыта эксплуатации существующих "масто- донтов", но в целом, как правило, оказывается не лучше или не намного лучше их, однако всё равно удаётся отвоевать часть рынка, используюя настырную манипулятивную рекламу и сбытовые трюки. * * * Правильная компьютерная программа... - называется так, что из названия понятно, зачем она; - имеет правильное назначение; - отвечает своему назначению; - быстро разрабатывается; - легко сопровождается; - удобна для пользователей. Программа имеет правильное назначение, если общественная польза от неё перевешивает причиняемый ею общественный вред. Спрос на программу -- не показатель её правильности: на наркотики тоже есть спрос. К примеру, компьютерный вирус -- программа, как пра- вило, вредная. Компьютерная игра, отнимающая у людей время, но не развивающая у них чего-то значимого, окупающего теряемое время, -- вредная тоже. Программа отвечает своему назначению, если делает то, ради чего задумывалась, причём делает эффективно, то есть, с окупанием затрат на разработку, продажу, сопровождение, обучение и т. п. Программа разрабатывается относительно быстро, если изначально более-менее правильно... - установлены требования к ней; - выделены ресурсы; - выбран прототип; - подобран инструментарий разработки; - собран и организован коллектив; - определена структура; - выбран вариант оформления кода; - выбрана технология руководства работами. Программа легко сопровождается, если она... - хорошо документирована; - единообразно написана; - имеет стройную структуру, продуманные названия компонентов; - имеет хорошо структурированный и комментированный код; - имеет продуманную технологию сопровождения, адекватную уровню сложности программы. Программа удобна для пользователей, если она... - не требует длительного изучения; - позволяет быстро находить в ней то, что нужно; - не провоцирует пользователя на ошибки; - защищает пользователя от ошибок; - позволяет легко выявлять ошибки пользователя исправлять последствия его ошибок. В программировании есть такие правильные вещи, которые требуют дополнительных затрат, и есть такие, которые дополнительных за- трат не требуют, а являются всего лишь оптимальным выбором из не- скольких приблизительно равнозатратных вариантов. Причины отклонений от "правильного пути" в программировании: - незнание, неопытность; - нестратегичность и несистематичность мышления; - лень; - несогласованность усилий, низкий уровень организованности коллектива; - жертвование правильным ради необычности внешнего вида; - жертвование правильным ради ускорения разработки. * * * Общее. 1. Пользовательский интерфейс программы должен быть рассчитан не на среднего пользователя, работающего в комфортных условиях, а на пользователя, который плохо подготовлен, недогадлив, невни- мателен, слабовато видит, может быть сбит с толку ошибочными аналогиями, устал, торопится, работает в условиях помех (шума и пр.). 2. Действия пользователя должны быть по возможности обратимыми. 3. Рискованные действия пользователя должны быть по возможности протоколируемыми. 4. Пользователь должен иметь пперед глазами или в шаговом доступе (через нажатие клавиши F1) всю информацию, которая может быть нужна ему для принятия решений, ожидаемых от него программой. Сообщения на экране. 1. На экране должно быть только то, что требуется пользователю для выполнения работы. В крайнем случае -- ещё и то, что требуется программисту, чтобы понять, какая часть программы работает или не хочет работать. Любой декорум на экране от- влекает внимание, а значит, замедляет работу пользователя и ухудшает её качество. Надо красиво оформлять необходимое. 2. Если для создания программы применена какая-то универсальная основа, то не задействованные в программе части пользовательс- кого интерфейса этой основы не должны быть видны пользователю. Другими словами, пользователю должно попадаться на глаза только то, что может ему понадобиться с большой вероятностью, и является доступным либо становится доступным при некоторых условиях. 3. Если программой предлагается выбор, то пользователю должны быть заведомо известны -- или сообщены программой -- основания для этого выбора, чтобы пользователь не гадал и не выяснял в интернете, а чего эта программа от него хочет. 4. Если действие необратимо, об этом должно быть ясное преду- преждение: не простой запрос подтверждения, а пояснение последствий действия, которые могут быть нежелательными. 5. Если действие займёт или может занять много времени, об этом должно быть ясное предупреждение. 6. Любое сообщение выдаваемое программой пользователю, должно выражаться в понятиях пользователя, а не в понятиях разработ- чика программы. Из сообщения должно быть ясно, что делать пользователю или хотя бы в каком точном месте искать указание на то, что делать. Любое нетривиальное выражение, появляющееся на экране и могущее оказаться непонятным для пользователя, должно быть пояснено в хорошо структурированном описании программы или в вызываемой экранной подсказке. 7. Информация в сообщениях об ошибках должна быть достаточной для исправления этих ошибок. Обратная связь. 1. Реакция на нажатие клавиши или на клик должна быть быстрая: с задержкой менее 1 сек. 2. Реакция программы на нажатие клавиши или на клик должна быть заметная и понятная. Пользователю должно быть очевидно: 1) получилось ли нажатие, получился ли клик; 2) была ли попытка совершить программой требуемое действие, (был ли инициирован требуемый процесс) в результате нажатия/клика; 3) идёт ли инициированный процесс, на какой стадии он находится, не "висит"ли программа; 4) с каким результатом завершились действие, процесс. Обеспечение единообразия. 1. Чем больше новая версия программы похожа внешне на предыдущую версию, тем меньше сложностей у пользователя. Все визуальные отличия должны иметь веские основания. Похожие вещи должны иметь похожий смысл. 2. Чем больше программа похожа внешне на другие программы, тем пользователю легче осваивать её. 3. Чем больше программа похожа внутренне на другие программы, тем программисту легче править и развивать её. Именоване сущностей на экране. 1. Чем меньше функционально не оправданного разнообразия, тем лучше. Одинаковые сущности должны иметь одинаковые названия, одинаковые визуальные представления, одинаковое визуальное расположение относитетльно друг друга -- в пределах прграммы, семейства программ, типа программ и т. п. Программа, семейство программ более удобны для пользователя тогда, когда они не являют собой свои особые мирки, а очень похожи на то, что пользователь уже знает. Следует избегать синонимов. Один и тот же компонент (тип компонента), одно и то же действие (тип действия) должны иметь одинаковые именования в как можно более широкой области. К примеру, если для обозначения удаления используется "Delete", то не должно быть никаких "Remove", "Erase", "Drop" и т. п. Если для обозначения ввода взято "Enter", то надо обходиться без "OK", "Submit, ""Apply", "Next" и т. п. Если повелось употреблять "UserId", то следует воздерживаться от "User", "Account" и т. п. 2. Названия разных сущностей в пределах одного рабочего поля, одной задачи, одной технологии, одной предметной области должны достаточно различаться между собой, чтобы не вызывать путаницы. Надо принимать в расчёт, что люди не склонны вчитываться, воспринимают слова как целое, а не побуквенно, и обращают больше внимания на первые буквы и на длину слов, а небольшое различие в порядке букв в середине слова может остаться незамеченным. Размещение элементов пользовательского интерфейса на экране. 1. На виду у пользователя по возможности должно быть всё то и только то, что требуется ему для решения текущей задачи. Может быть совокупно представлено то, что требуется для решения последовательности задач или набора взаимоисключа- ющих задач, но в этом случае сущности, относящиеся к какой либо задаче, должны быть сгруппированы, визуально отделены от сущностей, относящихся к другим задачам. 2. Порядок расположения компонентов должен по возможности соответствовать порядку их применения. Последовательность: слева направо, сверху вниз. 3. Порядок относительного расположения компонентов должен быть постоянным (если изменение этого порядка не является весомо полезным для работы): он облегчает поиск нужных компонентов и защищает от ошибочных действий в отношении них). 4. Поля, обязательные для заполнения при вводе данных, должны отличаться от полей, не обязательных для заполнения. Названия предприятий и их программных продуктов. 1. Название предприятия, производящего программный продукт, должно по возможности отражать функциональную особенность этого предприятия, если она есть, и/или должно иметь удобное сокращение -- для применения в названиях продуктов этого предприятия. 2. Название программного продукта должно в наибольшей степени выражать его функциональность. Нефункциональным должно быть только краткое обозначение предприятия. 3. Название новой функциональности должно в наибольшей возможной степени опираться на уже существующие распространённые понятия. 5. Название новой функциональности не должно быть защищаемым товарным знаком. 6. Обозначение семейства продуктов, если оно используется в названии продукта, должно отражать особенность этого семейства. Никаких рекламных Turbo, Rational, Smart и т. п. Внутреннее устройство программных продуктов. 1. Одинаковые компоненты разных частей продукта (а лучше и разных продуктов) должны иметь одинаковые названия. Если из-за этого возможна путаница, названия компонентов должны включать в качестве префиксов или аффиксов названия частей. 2. Схожие компоненты должны иметь названия, построенные по одинаковому принципу. 3. Совместно используемые названия должны быть хорошо различимы визуально. Если названия похожи, их неодинаковые компоненты должны быть как можно ближе к началу набора символов или находиться в самом конце его. ................................................................. .................................................................

20. Литература.

Купер, Алан "Психбольница в руках пациентов".

Возврат на главную страницу            Александр Бурьяк / Программная критика