Давеча safinaskar задал мне следующий вопрос в личной беседе:
Здравствуйте, видел вашу статью про банкоматы habrahabr.ru/post/217337. У меня вопрос: почему интерфейс всех банкоматов такой антиюзерфрендли, такой одинаковый и такой «жёсткий», в отличие от других автоматов (скажем, автоматов Qiwi)? Я имел дело с банкоматами Сбербанк, Росбанк и Мой банк (сейчас обанкротился).

Правильно ли я понимаю, что ПО для обычных автоматов (напр. Qiwi) — это самое обычное ПО, разрабатываемое также, как обычно разрабатывается ПО. Легко внести изменения в софт, пишется обычными инструментами под обычные ОС (напр. Windows), учитывается UX и иногда бывают баги.

А ПО для банкоматов пишется один раз и навсегда (в целях безопастности), безопастность ставится превыше UX. Так? И отсюда проблемы с UX?

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

Если я не ошибаюсь, банкомат сперва просит ввести пин, затем сумму и только потом проверяет пин на правильность. Почему так?


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

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



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

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

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

Я сам редко пользуюсь банкоматами, а банкоматами чужих банков не пользуюсь вовсе, поэтому сказать не могу. Но думаю, что это так. Скорее всего, наиболее распространены в России банкоматы фирмы Wincor, работающие по протоколам NDC/DDC с некоторыми Wincor-овскими расширениями. Поэтому поговорим про них.

Надо сказать, спецификации за 2013 год (последняя версия спецификации, которую я видел) не сильно отличаются от спецификаций за 2003 год. В основном устарели некоторые сомнительные возможности, появилась возможность внедрять HTML страницы на экраны. Впрочем, такая возможность у нас еще не поддержана, так что ничего про это не знаю, вполне сносные сценарии реализуются картинками. Не сказать, что прям так убого выглядит. И потом, неужели вам хочется видеть вездесущюю рекламу еще и в банкомате? Она там есть, конечно же, но хотя бы не такая настырная и, как правило, на главном экране, а не внутри сценария.

А ПО для банкоматов пишется один раз и навсегда (в целях безопастности), безопастность ставится превыше UX. Так? И отсюда проблемы с UX?

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

Если я не ошибаюсь, банкомат сперва просит ввести пин, затем сумму и только потом проверяет пин на правильность. Почему так?

Потому что проверкой ПИН-а занимается хост. Банкомат не может выполнить эту операцию (вообще говоря, протоколы NDC/DDC имеют такую возможность, но надо помнить, что они зарождались в том момент, когда понятия «информационная безопасность» не существовало).

Разумеется, можно сделать отдельный запрос на проверку ПИН-а в начале сценария, но это дополнительный запрос на сервер и увеличение времени ожидания. Хотя это используется — например, если необходимо разрулить сценарий на разные ветки для чужих карт, принадлежащих системе НСПК и совсем чужих карт. Провести такую классификацию может только хост.

Для своих же карт лишний запрос может слишком замедлять обслуживание. Например, в сети банкоматов, обслуживаемых нашей системой, есть банкоматы, у которых в пике нагрузки транзакции идут каждые 2 минуты, с разных карточек, причем, как правило, одна транзакция на карточку. Замедлять сценарий вдвое ради того, чтобы предупредить человека, что ПИН неверный? Это еще и дополнительная нагрузка на хост — ведь по стандарту PCI DSS проверкой пинов должен заниматься отдельный железный сервер, а ПИН в любой случае будет проверятся еще раз при выполнении операции, согласно тому же PCI DSS.

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

Комментарии (89)


  1. safinaskar
    18.07.2015 11:56
    +2

    Спасибо большое! :)


  1. alan008
    18.07.2015 13:23
    -2

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


    1. Frespot
      18.07.2015 13:58
      +6

      Вы удивитесь, но иногда моё общение с банкоматом заканчивается на странице «какие купюры есть в банкомате».


    1. Shirixae
      18.07.2015 14:59

      Вдогонку: а если вы снимаете (ну вот пришлось) деньги не в банкомате своего банка, а в каком-нибудь другом? Тоже комиссия не заинтересует?


      1. WorksIsGone
        18.07.2015 20:46
        +4

        Чаще всего, комиссию никто не может показать, т.к. состоит не только из локальной величины.
        0 комиссии могут позволить себе локальные объединения банков.
        Более-менее комиссию могут угадать локальные банки, не входящие в вышеназванные объединения.
        А в случае, если банк зарубежный, да еще конвертация валют… Фиг кто скажет точную сумму, которую спишут со счёта.


        1. Mear
          18.07.2015 20:59
          +2

          Как я понимаю, комиссий бывает несколько:
          1) Комиссия вашего банка при снятии наличных в банкоматах стороннего банка (прописано у вас в договоре)
          2) Конвертация валюты на стороне ПС (тоже наверняка где то это фиксируется и предоставляется в открытом доступе)
          3) Комиссия банка, кому принадлежит банкомат
          Вот последнее вам банкомат и будет показывать (при её наличии), так как (1) и (2) вы можете знать заранее, а вот (3) — нет. Т.е. он вас предупреждает о том, что с вас будет взята дополнительная комиссия сверх ваших договорных обязательств с домашним банком. Такая комиссия даже обычно отдельным платежом проходит.


          1. WorksIsGone
            18.07.2015 21:29
            -1

            >2) Конвертация валюты на стороне ПС (тоже наверняка где то это фиксируется и предоставляется в открытом доступе)

            запрос к эмитенту: «WTF, что за курс у вас такой сказочный, и как его узнать заранее?»
            был перенаправлен к PS: «я-не-я, корова не моя, за курсы конвертации отвечает платёжная система»
            на запрос к PS: «WTF, что за курс у вас такой сказочный, и как его узнать заранее?»
            был ответ: «я-не-я, компьютер сам считает, в зависимости от обьёмов сделок и прочих ураганов на Сатурне, примерно оценить можете на xe.com»
            Спасибо! (=


            1. Mear
              18.07.2015 21:41
              +2

              Ну, я в своё время вполне нормально в Альфа Банке узнавал и комиссии и курсы. Может у вас банк какой то не такой? :)


    1. DrPass
      18.07.2015 16:42
      +3

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


      1. cep1
        18.07.2015 23:53
        +1

        интерфейс банкомата, в общем-то, практически не заставляет пользователя делать каких-либо лишних телодвижений

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


        1. Cobolorum
          18.07.2015 23:55

          Длина пина задается в FIT таблице. По умолчанию так можно делать только на своих бинах. На чужих бинах так делать нельзя.


        1. ctapnep
          19.07.2015 02:45
          +1

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

          Я даже задавал сей вопрос в своем банке. Но был послан :(


          1. Speakus
            19.07.2015 05:15

            Чуть больше подробностей плиз. Что за банк? Чей банкомат? Как послан? А если первые 4 цифры неправильно ввести?


            1. ctapnep
              19.07.2015 06:22
              +2

              Bank of America. Банкомат не помню чей, но такое случалось уже несколько раз, в Аргентине, в Израиле, в Голландии…
              Послан — спросили ушли-ли у меня какие-то деньги со счета кроме того, что я сам лично снял. Нет? Ну значит нет проблемы. Спасибо, до свидания.
              Если неправильно ввести, то не дает денег. Проверил.


              1. ssneg
                20.07.2015 18:46

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


                1. ctapnep
                  20.07.2015 20:33
                  +1

                  в «родном» банкомате не принимает. А в чужом — да, собственно об этом я и говорю, что принимает 4. Но это таки полный идиотизм. Особенно с точки зрения защищенности.

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

                  P.S. У меня была точно такая ситуация. В 94-м году ставил linux на сервер у нас на факультете. Для рута поставил длинный и сложный пароль. Вторым символом в пароле был восклицательный знак. А библиотека проверки паролей символы после восклицательного знака не принимала. И в систему можно было войти рутом с паролем из одной буквы.


                  1. Speakus
                    21.07.2015 05:59
                    -1

                    Ну пин то в отличии от пароля не побрутфорсишь — карта сразу будет заблокирована.


                    1. ctapnep
                      21.07.2015 19:43

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


                      1. DrPass
                        22.07.2015 10:34

                        ПИН нигде не хранится. Я уже смутно помню детали, но ПИН считается по какому-то алгоритму с учётом предоставленных платежной системой ключей. Потом к полученному значению добавляется хранимое в базе смещение, благодаря которому реализована смена ПИНа.


                        1. ctapnep
                          22.07.2015 17:48

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


      1. safinaskar
        19.07.2015 00:14

        Объясняю, что там «неюзерфрендли»: geektimes.ru/post/258978/#comment_8707936


  1. dimas
    18.07.2015 14:22
    +1

    Как-то смущает утверждение что больше всего винокуров, т.к. в Москве (да, я знаю что за МКАДом тоже жизнь есть), я и забыл когда пользовался банкоматами, отличными от NCR.

    Сразу оговорюсь, что мои знания времен еще OS/2 на этих банкоматах.

    Если правильно помню, раньше была возможность минимально проверить пин по упрощенной чексумме от заскирдованного пина… Самого то пина, ни в открытом ни в закрытом виде на магнитной полосе нет…

    Опять-таки про ПО. В тех же банкоматах NCR можно было полностью поменять софт, построив билд. В него же запахивались все «тяжелые ресурсы». Сценарии же (список скринов, какие кнопки на нем можно нажать, какую картинку показать и куда переходить по каким условиям, можно было залить удаленно.

    Картинки с заставками мы добавляли еще в 97-м или 98-м, возможность вставлять видео кажется еще в 99-м…

    Чаще всего проблема со скринами, их дизайном и обновлением — деньги. Разработчики допсофта или обслуживающие организации за построение нового билда в мое время брали заметные деньги, поэтому некоторые банки пользовались тем что есть, пока они могут обрабатывать нужные сценарии, «и так сойдет»…

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


    1. Valle
      18.07.2015 20:57

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


      1. netto
        18.07.2015 23:29

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


    1. netto
      18.07.2015 22:24

      > я и забыл когда пользовался банкоматами, отличными от NCR.

      Странное утверждение. Сейчас в Москве ставится огромное количество китайских Nautilus. Все новые банкоматы Сбера — они, а также многие более мелкие банки — тоже их берут.


      1. dimas
        18.07.2015 22:28

        Это не странное утверждение, а мое личное наблюдения. Сбером, к счастью, пользоваться не приходится :)

        Ну и китайские — это таки не винкор.

        Если есть доступная статистика — я бы с интересом ознакомился.


    1. areht
      18.07.2015 23:58

      > Если правильно помню, раньше была возможность минимально проверить пин по упрощенной чексумме от заскирдованного пина…

      1) заскирдованного?
      2) сейчас у банков есть услуга установки пина, разве можно при этом ческумму проверять?


      1. dimas
        19.07.2015 22:45

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


        1. ssneg
          20.07.2015 18:47

          «Заскирдированный» — это win :)


  1. navion
    18.07.2015 15:50
    +5

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

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


  1. ababich
    18.07.2015 22:17
    +1

    видел на экране перезагрузку банкомата, вроде у всех ОС Windows NT
    это правда? (речь идет об Украине)


    1. foxmuldercp
      18.07.2015 23:23
      +1

      Все зависит от вендора и поколения банкомата, я встречал пару раз нечто очень пахнущее графикой MSDOS, но это было очень давно. Полуось была, потом Win9x, 2k, XP… что на совсем свежие ставят — не знаю.
      Насколько я знаю очень активно брали Б/Ушные банкоматы. Как сейчас не знаю, давно отошел от этой сферы.


      1. ababich
        19.07.2015 07:40

        1)странно, что вопрос оси вообще не возник ни в комментариях, ни в статье
        2)мне интересно — вот NT например — за нее платить не надо, она наверное такая древняя, что не лицензируется?
        3)а там же в банкомате еще и винчестер есть наверняка :))))


        1. safinaskar
          19.07.2015 14:00
          +1

          Если ОС слишком древняя — то её нельзя легально купить вообще. Ни бесплатно, ни за деньги. Скажем, вы не можете сейчас купить Windows XP


          1. DrPass
            19.07.2015 14:09

            Не совсем так. Лицензия Майкрософт разрешает использовать старые версии при покупке лицензии на новую версию, при условии установки их с лицензионных носителей. А что касается производителей банкоматов, там вообще иная картина. На корпоративном рынке действуют индивидуальные договорённости, и Microsoft не откажет Siemens в поставке Windows XP, если тем она понадобится.


        1. foxmuldercp
          19.07.2015 22:08

          ну, как бы в стоимость банкомата стоимость операционки тоже входит, а там embedded/oem скорее всего.
          ну не только винчестер — всякие флешки или чипы памяти, я не очень вникал, но в компьютерах, управляющих станками винчестера тоже есть.


      1. dimas
        19.07.2015 22:47

        MS DOS видел только в итальянских оливетти, в ИБМовский диеболдах, и NCR-овских (они же AT&T) поначалу была OS/2 2.x, потом трешка. На вторых позже пошла винда.


        1. ctapnep
          19.07.2015 23:42

          Зависит от того какой год на дворе. 25 лет назад во всех банкоматах был DOS :)
          Просто потому, что вариантов не особо было. А сейчас уже у всех что-то поумнее, наверное.

          Но таки 20 лет назад в тех банкоматах с которыми я работал стоя обычный (вот совсем обычный) десктоп. С хардом, с флопиком, с сетевушкой и интерфейсом Х.25. Хорошие были времена…


          1. dimas
            19.07.2015 23:47

            В NCR-ах стоял таки не совсем обычный десктоп… там как минимум была специфическая периферия для управления железками, а вот сетевушки да, можно было ставить простые ne2000, как и x25-е карты, лишь бы драйвера были да найти ISA-шную «елку», так как напрямую не поставить было…

            Мы сначала скупили в 97-м все елки что нашли, потом пришлось даже заказать на производстве :)

            Были там еще и неготорые фишки в биосе, чтобы простой человек не мог ни забудется с дискет, ни клавиатуру подключить… (да, оно хакалось, но для этого надо было много чего знать :)


            1. ctapnep
              20.07.2015 15:52

              Переферия — это понятно, что специфическая. Деньги все-таки банкомат выдает из кассет, а не на цветном принтере печатает :)
              А вот про BIOS ничего не помню, наши сервисники постоянно и с дискет грузились и, понятное дело, клавиатуры подключали. А как иначе обслуживать-то?


              1. dimas
                20.07.2015 15:55

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


  1. centrist
    18.07.2015 23:56

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

    Но с софтом довольно часто такое ощущение что мы в 90х…
    Причем видно что разработчики банкоматов не стоят на месте — в последнее время везде появляется тачскрин, прием денег. Но — все усовершенствования в основном хардварные и проще управлять не становится.
    Подозреваю что разработка хардварной части гораздо дороже софтовой, но экономят именно на софте.
    Похоже, что ситуация такая, как на рынке смартфонов до выходя на него apple — никому ничего не нужно, всё устраивает всех участников рынка кроме пользователей. А пользователь вынужден есть что дают…


    1. navion
      19.07.2015 03:15

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


    1. dimas
      19.07.2015 22:49

      Тачскрин и прием денег (еще в конвертах) в банкоматах был еще в конце 90-х, начале нулевых, сам участвовал в запуске в 98-м персоны75 с кэшином…

      Экономят чаще всего банки, банкоматы могут работать и по десять лет и больше…


  1. safinaskar
    19.07.2015 00:12

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

    Моё мнение частично основано на замечательной книге Алана Купера «Психбольница в руках пациентов», которую должен прочитать каждый айтишник. Цитата оттуда:

    Что получится, если скрестить компьютер с банком?
    Компьютер! Всякий раз, снимая деньги в банкомате, я сталкиваюсь с одним и тем же угрюмым и сложным поведением, столь присущим компьютерам. Если я сделаю малейшую ошибку, банкомат блокирует всю транзакцию и вышвырнет меня из процесса. Я должен вытащить карту, снова вставить ее, повторно набрать свой PIN-код, а затем повторить запрос. Обычно и ошибка-то не моя, это компьютер банкомата дипломатично сбивает меня с толку. Он постоянно спрашивает, с какого счета я хочу снять деньги — с текущего, с депозитного или же с валютного — хотя счет у меня всего один, текущий. Я постоянно забываю, какого типа у меня счет, и такой вопрос сбивает меня с толку. Примерно раз в месяц я безо всякого умысла выбираю депозитный счет, и адская машина бесцеремонно заставляет меня начать все сначала. Чтобы отказать в снятии денег с депозитного счета, машина должна знать, что у меня такого счета нет, но она предлагает мне этот счет в качестве одного из вариантов. Единственная разница между мной, когда я выбираю банковский счет, и пилотом рейса 965, выбравшим «ROMEO»,- в масштабах последствий.
    Кроме того, банкомат налагает «суточное ограничение» в размере двухсот долларов. Если я совершу все шаги — наберу свой код, выберу тип счета, укажу сумму — и это будет, скажем, сумма в 220 долларов, компьютер бесцеремонно откажет в проведении операции, грубо проинформировав меня, что я превысил суточное ограничение. Он не сообщит мне, каково это ограничение, и не позволит узнать, сколько денег на моем счету, и не даст возможности указать другую, меньшую, сумму. Он просто выплевывает мою карту и предоставляет мне возможность повторить процесс с самого начала, при том, что я обладаю ровно той же информацией, что и минуту назад, а очередь за мной растет, волнуется и вздыхает. Банкомат точен и правдив, но совершенно бесполезен.
    Этот банкомат следует заложенным в него правилам, и я тоже вполне готов им следовать, но это уж слишком компьютерный подход — не сообщить мне о правилах, дать мне противоречивые сведения, а затем бесцеремонно наказать меня за то, что я эти правила по незнанию нарушил. Такое поведение — столь типичное для компьютеров — не присуще им от природы. По сути дела, от природы компьютерам ничего не присуще: они просто действуют, повинуясь программе. А программы пластичны так же, как человеческая речь. Человек может говорить грубо или вежливо, угрюмо или любезно. Так же легко, как человек способен вежливо говорить, компьютер может уважительно и с почтением себя вести. Требуется лишь, чтобы кто-нибудь объяснил, каким образом. К сожалению, программисты не слишком успешно учат компьютеры подобным вещам.
    <...>
    Банкомат из главы 1 отказывается от ответственности при помощи подтверждений точно так же, как программы для настольных компьютеров. Когда я вставляю карту, банкомат требует подтвердить, что я вставил карту. Когда я запрашиваю наличные средства, он требует подтвердить, что я хочу снять деньги. Когда я набираю сумму, требует подтвердить, что я набрал сумму. Почему бы машине просто не довериться мне? Почему просто не выполнить транзакцию?
    Она может дать мне возможность прервать транзакцию в любой момент гораздо более простым способом. Будь у этого банкомата обычная большая красная кнопка ОТМЕНА, которую я мог бы нажать в любое время, банкомат мог бы предполагать, что я разумен, осознаю, чего хочу и что делаю, вместо того чтобы считать меня глупым, некомпетентным и не имеющим четкого представления о своих желаниях.
    Уверен, что некоторые из пользователей этого банкомата действительно глупы и некомпетентны, однако никому — даже глупым и некомпетентным людям — не нравится, когда их считают глупыми и некомпетентными. Кроме того, подобное отношение к клиенту никогда не вызывает у него привязанности и положительных эмоций.
    Исправить эту проблему несложно. Программа должна поместить слова «Снятие со счета» вверху экрана и не стирать их на протяжении всей транзакции. Затем она должна отобразить на экране «$1.50» — стоимость операции — и также не стирать. Затем она должна добавить слова «Идет проверка» наряду с номером моего счета, балансом и ограничениями на изъятие средств и оставить всю эту информацию на виду. Таким образом, когда зайдет речь о сумме, я буду уже хорошо информированным потребителем, а не жертвой допроса. Я могу принять решение: указать сумму, обладая знанием об ограничениях, о средствах, о возможностях и о приличиях.

    Так вот, идеальный банкомат должен работать так:
    • У него должен быть тачскрин :)
    • После ввода карты он должен спросить пин-код. Если он неправильный — сразу об этом сказать
    • Далее сразу показать на экран сумму на счету. Да, это небезопастно, т. к. люди в очереди смогут увидеть, сколько денег на счету. А ну и что? Лишь 1% пользователей банкомата до такой степени заботятся о безопастности, что не хотят показывать сумму на экране. Пусть этот 1% пойдёт в банк и попросят, чтобы конкретно у них сумма не отображалась сразу после ввода пин-кода. А у всех остальных 99% пусть отображается
    • Эта сумма должна быть видна на экране на протяжении всей дальнейшей сессии
    • И т. д. :)

    Другие автоматы (например, Qiwi) тоже не идеал правильного UX, но они подходят к этому идеалу гораздо ближе, чем банкоматы.

    Недавно я снимал в банкомате Сбербанка деньги с карточки другого банка. При вводе суммы банкомат сказал, что максимальная сумма для снятия, скажем, 7 000 рублей. И ниже были две кнопки: «Выдать» и «Выдать с разменом». И надпись: «Размен доступен только при сумме начиная с (скажем) 20 000 рублей». И зачем тогда там кнопка «Выдать с разменом», если я всё равно больше 7 000 снять не могу? Собственно, после этого случая я и задал свой вопрос хабраюзеру Mingun


    1. DrPass
      19.07.2015 02:30
      +4

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


      1. Speakus
        19.07.2015 05:27

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


        1. DrPass
          19.07.2015 12:00
          +1

          Ну а зачем их снимать регулярно с карты по чуть-чуть? Я тоже держу деньги на карте. Какое-то количества кеша бывает нужно — за стоянку платить или там на рынке свежих помидорчиков/картошечки купить. Но ради этого я ведь не буду постоянно мотаться к банкомату. Снял какую-то сумму на наличные расходы, и пользуюсь ей в течении двух-трех недель. А в остальном все равно везде удобно расплачиваться самой картой.


          1. Speakus
            19.07.2015 16:13

            Ну а зачем их снимать регулярно с карты по чуть-чуть?

            Кто-то снимает мало, чтобы не было искушения истратить. Не все предпочитают картой расплачиваться. Пенсионеры еще есть. Да мало ли причин. Просто учтите, что не все живут так как Вы.


          1. vlivyur
            20.07.2015 10:09
            +1

            Плачу почти везде картой. Тех 400-900 рублей, что я снимаю за раз, хватает на пару недель (в основном это всякого рода автобусы/троллейбусы). Мимо банкоматов хожу каждый день. Если знаю что понадобится наличка — дополнительно зайти за ней не проблема. Не люблю ковыряться в кошельке в поисках нужной суммы денег.


    1. Speakus
      19.07.2015 05:42

      2. после ввода карты надо не пин код запрашивать, а показать какие купюры есть в банкомате. Точнее на одном экране это сделать.
      2. на том же экране должна быть надпись «English» и никаких дополнительных вопрос про язык.
      3. нет. Количество денег, на своей карте, вы знаете из СМС-ок.
      во всех экранах должна быть кнопка «закончить работу и вернуть карту».
      Ну и тупак: «банкомат берет 0 руб дополнительной комиссии. Продолжить? да-нет» — очевидно излишен на многих банкоматах. Кто может нажать «нет» при таком диалоге — я ума не приложу. Просто добавить эту инфу в экран выбора суммы снятия и все.


      1. Mixim333
        19.07.2015 20:29

        Сам разрабатывал ПО для платежного терминала и прекрасно помню такое правило: «Если в фискальнике нет чековой ленты, то терминал должен сообщить об этом клиенту и лишь при его дальнейшем желании продолжить работу!», т.е. если терминал не выдал клиенту чек, то это является нарушением какого-то там правила (не юрист, точно не скажу) и владельца терминала могут за это наказать (да, знаю, что многие компании, например QIWI, нарушают это правило), так что информирование о 0 комиссии, возможно, тоже какое-то правило.

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


        1. dimas
          19.07.2015 22:53

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

          Вы случайно не путаете клиентский чек и фискальник?


          1. Mixim333
            20.07.2015 19:12

            Нет, не путаю. ККМ\фискальник — это как раз устройство, которое печатает чеки.


            1. dimas
              20.07.2015 22:11

              Ну тогда уж либо ККМ с фискальной памятью, либо фискальный регистратор.

              Понял, теперь то, что раньше банально называлось чековый принтер с фискальной памятью красиво назвали фискальный регистратор :)


        1. Speakus
          19.07.2015 23:19

          так что информирование о 0 комиссии, возможно, тоже какое-то правило.

          1. В моем «предложении» собственно информирование о 0 комиссии остается.
          2. Эти правила пишут люди — они не спущены с неба на скрижалях.
          3. Про чек правило разумное, однако все диалоги об отсутствии чека, что мне попадались, были сделаны после запроса пина, а разумно его показывать до.


          1. ctapnep
            21.07.2015 05:10

            а зачем мне показывать дурацкие диалоги про чек, если потом окажется, что мои запросы изначально не предполагали печати оного?


            1. Speakus
              21.07.2015 05:55

              Most popular case — снятие с банкомата денег. Оптимизировать UI следует именно под этот case.


              1. ctapnep
                21.07.2015 19:54

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


      1. umniks
        20.07.2015 09:33

        2. Какая разница, какие купюры есть? Если человеку нужно снять деньги, он что ли будет бегать искать банкомат, в котором есть конкретные купюры?
        Если мелких нет, то достаточно на этапе снятия написать «минимальная сумма 500р».
        Если нет крупных, то это очень уж редкий случай, когда нужно снять столько, что например 500-ками будет долго и неудобно. Да и у большинства банков есть дневные лимиты, так что ситуация «срочно нужно снять 2млн» не возможна.

        3. СМС не у всех подключены, да и все равно не запоминается точная сумма, то есть придется доставать телефон смотреть.


        1. Speakus
          20.07.2015 09:50

          2. Разница в том, что, лично я, часто встречаю ситуацию когда в банкомате есть только 5000 купюры, а большиство людей, кстати, снимает тысячу или две на текущие расходы. Да и на карте (особенно у пенсионеров) не всегда имеется 5000 рублей.
          3. Про смс спорить не хочу. Просто не считаю что безопасности бывает много.


        1. vlivyur
          20.07.2015 10:22
          +1

          Какие может и не нужно, но минимально возможную сумму стоит показывать. Только не говорить 100 рублей, когда она у тебя в единственном экземпляре. А 5000 даже в крупном городе может быть долго неразменной, особенно в воскресенье до обеда.


    1. usa
      19.07.2015 17:36

      Уже придумано image


    1. vlivyur
      20.07.2015 10:31

      Идеальный банкомат должен работать так:
      У него не должно быть тачскрина :)
      Это убожество умудряется тормозить когда тычешь в экран (ну или какие-то действия выполняет, но виду не подаёт) и то ли ты нажал на кнопку, то ли до банкомата не дошло, то ли вот эти кнопки с боков экрана не просто так ;)
      Ах да, есть ещё очень близорукие люди, которым в нужное место экрана сложно попасть.


  1. cep1
    19.07.2015 00:24
    +1

    Может быть, знающие люди объяснят, почему, когда я хочу пополнить счёт мобильного телефона через банкомат/терминал, я должен предварительно выбрать мобильного оператора, которому принадлежит номер, хотя когда я звоню другу на мобильный со своего телефона, я не должен предварительно выбирать мобильного оператора, на номер которого я звоню?


    1. FilimoniC
      19.07.2015 02:46
      +2

      Потому что

      • Номер может быть не у того оператора, который кажется по коду (например, прямой номер или мигрировавший)
      • ОпСоСы периодически продают куски пулов друг другу, это значит что нужно следить за актуальностью пулов, а это почти невозможно в реальном времени
      • С учетом вышеперечисленного снижается нагрузка на проверку хостом наличия номера. Например, если 925 не подошел по «Мегафону», то что, проверять у всех? ОпСоСов у нас достаточно много


      1. ctapnep
        19.07.2015 03:34
        +2

        таки позвонить можно, причем в реальном времени найти не только оператора, которому принадлежит номер, но и найти оператора в сети которого этот номер находится в данный момент (может быть на другом конце Земли), а вот деньги перевести — уже никак? При том, что это совсем не обязательно должно быть в реальном времени, могут и через 5 минут дойти.
        Не, не убедительно :)


        1. navion
          19.07.2015 17:11

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


          1. ctapnep
            19.07.2015 23:19

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


    1. vlivyur
      20.07.2015 10:23

      А если мне долг старому оператору оплатить нужно?


      1. cep1
        20.07.2015 11:13
        +1

        Это исключительная ситуация. С этим вопросом можно обратиться к оператору.


  1. ctapnep
    19.07.2015 03:16
    +2

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

    2. надо действительно пользоваться только услугами банкоматов одного банка, чтоб появилась мысль, что во всех банкоматах используется одинаковый софт. Потому как минимальный личный опыт ясно показывает, что софт ОЧЕНЬ разный.
    Но в пределах одного банка — да, софт одинаковый. Но это таки логично.

    3. Пин довольно часто проверяется первым. НО! это оправдано только для карт своего банка. С картами своего банка вообще можно много чего делать. У нас, например, пин вообще проверялся прямо в банкомате (карты с чипом). Но в общем случае, когда карта может оказаться «чужой», то много чего по-другому не сделаешь. Я протокол не знаю, но, кажется, там в принципе нет варианта «проверить пин». Только «дай денег с такого счета с таким пином». И в ответ или «да» или «нет».

    Ну и таки я за 20 лет встретил только один банкомат, с интерфейсом которого не смог разобраться. Но там в принципе не было знакомых языков интерфейса и таки программисты вместо стандартных «неудобных» интерфейсов решили сделать что-то оригинальное. В других случаях с банкоматами на испанском или немецком я справлялся совершенно без проблем. Так что неудобность современных интерфейсов банкоматов, мне кажется, она несколько преувеличина. Надо просто учитывать, что ситуации с которыми приходится сталкиваться пользователям несколько шире, чем «родная карта, родной банк, родной интерфейс».


    1. Zzzuhell
      20.07.2015 09:13

      один раз отдаться сторонней фирме, получить у них софт и больше с ними дела не иметь не получится

      Поддержу.
      В заглавной статье было сказано, что банк «не занимается разработкой ПО для своих банкоматов, иначе пришлось бы держать штат сотрудников для этого». В достаточно крупных банках отдел информатизации не только сопровождает железо и ПО, но и пишет его.
      В частности, в Сбербанке его достопамятная АС «Филиал» была самописная.


  1. rocket
    19.07.2015 13:53

    Зачем после ввода пин-кода требуется нажатие клавиши «ввод»? Зачем это лишнее действие? Я встречал всего лишь один банк (забыл какой), где в банкоматах после ввода четырех цифр пин-кода не нужно нажимать «ввод». И это было очень удобно. Почему бы всем так не сделать?


    1. SaturnYar
      19.07.2015 16:10
      +1

      Например, потому что пин-код может состоять не только из 4 цифр.


      1. rocket
        19.07.2015 16:11
        +1

        Как часто и где такое встречается? И, главное, зачем?


        1. SaturnYar
          19.07.2015 16:17
          -1

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


    1. dimas
      19.07.2015 22:55
      +1

      Хотя бы потому, что клиент с тремором рук, попадающий периодически по соседним кнопкам, очень быстро получит блокировку карты…


      1. Sovent
        20.07.2015 23:16

        Пин-код не отображается на экране; какая разница для человека с тремором будет на экране три чёрных точки или четыре перед тем, как пин-код отправится на сервер?


        1. dimas
          20.07.2015 23:19

          Вы не поверите, но для того, чтобы понять что нажал не на ту кнопку, необязательно видеть что ввел :)


          1. Sovent
            20.07.2015 23:38
            -1

            Разница в одну кнопку. К тому же, по кнопке «ввод» тоже нужно попасть.


            1. dimas
              20.07.2015 23:42
              +2

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

              Могу только ответить то же самое «нажать всего одну кнопку» ентер, причем можно даже вслепую (я и пин вслепую набираю), это повод требовать ее убирания для всех?


      1. cep1
        21.07.2015 10:59
        -1

        Можно сделать на карте пометку, что у её владельца проблемы с координацией, и для такой карты не проверять пин-код автоматически после ввода последней цифры, а ждать нажатия кнопки Ввод.


        1. DrPass
          21.07.2015 11:08

          На банкомате кнопки размером с пятак. Если человек смог дойти до банкомата, то координации для того, чтобы попасть по таким кнопкам, у него будет достаточно. Кроме того, если набрал код ошибочно, а банкомат автоматически перешел на следующий экран, можно нажать «Отмена», и банкомат вернёт карту без проверки ПИНа, и соответственно, без засчитывания ошибочной попытки. Поэтому это совершенно надуманная, несуществующая проблема.


  1. darthslider
    20.07.2015 11:12

    Ох, у нас зарплатные карты ФондСервисБанка. Вот уж образец юзер анфрендли.
    Прятать проверку баланса на 2-й уровень меню при свободных местах на 1-м уровне это ужас. После проверки баланса появляется вопрос, мол еще будут операции? Что бы ты ни нажал карта возвращается. Ну то что ни о каком выборе купюр речи не идёт это понятно, но то, что в выдаче из быстрых сумм нет 1000 рублей это удивительно.


    1. dimas
      20.07.2015 22:14

      Вот что уж точно ужос-ужос-ужос, так это проверять баланс в банкомате :)

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

      Нормальные банкоматы при выборе произвольной суммы пишут минимальную и максимальную сумму, из которых можно понять максимальную и минимальную купюры, и соответственно скорректировать сумму, если нужны мелкие…


      1. darthslider
        21.07.2015 10:55

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


  1. mmMike
    21.07.2015 11:41
    +1

    К слову, по поводу PIN.
    Максимальная длина PIN в стандартных PIN-блоках — 12 цифр.

    Стандартный Visa алгоритм проверки PIN по PVV предполагает использование только первых 4-х цифр PIN. Можно ввести c PIN клавиатуры от 4-х до 12, но все что > 4 будет проигнорировано при проверке в HSM эмитента.

    Большинство эмитентов (точнее ПО у эмитентов) использует для проверки on-line PIN именно Visa PVV алгоритм.

    UPI (Сhina) требует 6 цифр PIN. Да еще, для большей радости вендоров, эти цифры обязательны и участвуют в проверке PIN.
    Китайцы они такие… Как специально добавили несколько подводных камней для желающих начать работы с их картами. Хотя и много взяли у Visa, но «творчески переработали».

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


    1. ctapnep
      22.07.2015 17:54

      Аригинально. Позволить ввести 12-символьный пин, а использовать только 4 первых — это замечательно.
      Но зато хоть ясно как оно работает. Спасибо