Search
Write a publication
Pull to refresh
0
0
Сергей @cep1

User

Send message
Можно сделать на карте пометку, что у её владельца проблемы с координацией, и для такой карты не проверять пин-код автоматически после ввода последней цифры, а ждать нажатия кнопки Ввод.
Это исключительная ситуация. С этим вопросом можно обратиться к оператору.
Может быть, знающие люди объяснят, почему, когда я хочу пополнить счёт мобильного телефона через банкомат/терминал, я должен предварительно выбрать мобильного оператора, которому принадлежит номер, хотя когда я звоню другу на мобильный со своего телефона, я не должен предварительно выбирать мобильного оператора, на номер которого я звоню?
интерфейс банкомата, в общем-то, практически не заставляет пользователя делать каких-либо лишних телодвижений

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

… вроде бы хотят
Проект
Хочу спроектировать заново взаимодействие пользователей с банкоматами Сбербанка.
Подробности лучше всего раскрывает переписка с претензионной службой банка.
Переписка
Вопрос Клиента:
Добрый день! Вот уже третий раз я совершаю платежи за коммунальные услуги с
помощью банкомата Сбербанка и каждый раз у меня возникают трудности при
работе с банкоматом. Трудности возникают и у других пользователей банкомата, из-за
чего в офисе образуются очереди более 10 человек и время ожидания
составляет более получаса. Я считаю, что взаимодействие банкомата с пользователями
спроектировано плохо, если для работы с банкоматом требуется, чтобы рядом с
банкоматом стояла сотрудница Сбербанка и объясняла, как им пользоваться.
Пользоваться банкоматом Сбербанка меня вынуждает только отсутствие
альтернативы. Если вам важно мнение ваших клиентов и вам интересно знать,
что именно плохо в работе банкоматов, я вам напишу отдельно.

Ответ Клиенту:
Уважаемый Сергей Викторович!
ОАО «Сбербанк России», рассмотрев Ваше обращение, сообщает следующее.
Прежде всего, позвольте поблагодарить Вас за то, что Вы нашли время и
поделились с нами впечатлениями от обслуживания в Сбербанке. Для нас очень
важно знать мнение клиентов о предоставляемых банком услугах, ведь это
позволяет находить и исправлять существующие ошибки или вносить изменения в
процессы для повышения качества обслуживания.
В соответствии со Стратегией розничного бизнеса Сбербанка России ожидается,
что к 2014г. большая часть операций будет проводиться через удаленные каналы
обслуживания, к которым относятся банкоматы и терминалы. Учитывая
вышеизложенное, сотрудники рекомендуют пользоваться наиболее удобными и
совершенными способами осуществления операций. Осуществление платежа через
устройство самообслуживания производится по желанию клиента и не является
обязательным.
Специалисты филиалов банка всегда готовы оказать клиентам консультационную
и практическую помощь при их самостоятельной оплате квитанций с помощью
устройств самообслуживания(УС).
На постоянной основе осуществляется комплекс мероприятий по обеспечению
надлежащей работы систем УС. К сожалению, процесс перестроения
сопровождается определенными трудностями и требует определенного времени на доработку.
Для удобства обслуживания в проведении операций по оплате услуг через
информационно-платежные терминалы и производить точные расчеты (до копеек)
по платежам Вы можете с использованием банковской карты.
Кроме того, в целях сокращения Вашего времени, Клиенту нашего Банка
предлагается воспользоваться альтернативными услугами, например: оформить в
подразделении Банка ф.? 190, сеть Интернет — «Сбербанк Онл@йн».
Приносим извинения за причиненные неудобства и выражаем надежду, что наши
разъяснения помогут Вам в дальнейшем успешно воспользоваться нашими
услугами.

Вопрос Клиента:
Добрый день!
Вынужден повторно обратиться в вашу службу, поскольку на моё предыдущее
обращение 000912-2013-005578 получил формальную отписку. В своём обращении
я писал:
Я считаю, что взаимодействие банкомата с пользователями спроектировано
плохо, если для работы с банкоматом требуется, чтобы рядом с банкоматом
стояла сотрудница Сбербанка и объясняла, как им пользоваться.
На что вы мне ответили в частности:
Специалисты филиалов банка всегда готовы оказать клиентам консультационную
и практическую помощь при их самостоятельной оплате квитанций с помощью
устройств самообслуживания(УС).
Тем самым вы подтверждаете тот факт, что взаимодействие банкомата с
пользователями спроектировано плохо.
Как пользователь банкомата, расскажу вам, как, по-моему мнению, должна
происходить оплата квитанции.
Кратко:
1. Подошёл к банкомату;
2. Оплатил;
3. Ушёл;
Теперь второй пункт чуть подробнее:
1. Поднёс квитанцию к сканеру штрих-кода;
2. На экране отобразился текущий платёж, а именно:
2.1. Категория платежа кратко: электричество, газ, вода и т.д.
2.2. Период платежа, например, февраль 2013 года;
2.3. Сумма к уплате;
3. Также на экране отображается вежливое приглашение добавить ещё платёж
или приступить к оплате. Это просто текстовое сообщение, никаких кнопок типа
«Добавить платёж» или «Оплатить».
4. Сигналом к началу оплаты будет засовывание денег в купюроприёмник. Если
оплата производится с помощью карточки, деньги должны списываться по
умолчанию перед вытаскиванием карточки.
Если уж компьютеры так умны, то не лучше ли научить их общаться с
человеком, чем учить людей общаться с компьютером?

Ответ Клиенту:
Уважаемый Сергей Викторович!
ОАО «Сбербанк России», рассмотрев Ваше обращение, сообщает следующее.
Мы понимаем, как важно для наших клиентов быстро и оперативно осуществлять
необходимые банковские операции, но банкоматы являются сложными
техническими устройствами.
Банк постоянно работает над улучшением качества обслуживания устройств
самообслуживания.
На постоянной основе осуществляется комплекс мероприятий по оптимизации
работы системы дистанционного обслуживания. По данным ответственного
подразделения, в настоящее время проводятся необходимые мероприятия по изменению интерфейса
на устройствах самообслуживания (для удобства клиентов).
Ваши замечания и предложения, указанные в обращении, приняты во внимание.
Благодарим Вас за то, что обозначили проблемы, сложившиеся при оказании
услуг в УС.
Приносим извинения за доставленные неудобства.

Как видим, 2014 год благополучно прошёл, а воз банкомат и ныне там.

Польза
Хорошее проектирование взаимодействия
  • позволит людям не чувствовать себя идиотами, оплачивая счета;
  • сократит время стояния в очереди;


Мотивация
  • получить новые знания и упорядочить существующие;
  • попасть в профессиональную среду;
  • поменять сферу деятельности;
  • сделать платежи через терминалы легкими и удобными;

[голосом Н. Н. Дроздова]
Перед вами знойная саванна. Почти голая, почти безжизненная. Но встречается кое-какая растительность и голодные травоядные.
— Но чу! Кто это там притаился в зарослях?
— Кажется, это бенгальский тигр! Эти хищники чувствуют свою добычу на расстоянии и способны преследовать её.

Код
function Spirit(){	
};


function LifelikeWorldSpirit(map, legend) {
  var grid = new Grid(map[0].length, map.length);  
  this.grid = grid;  
  this.legend = legend;
  
  map.forEach(function(line, y) {
    for (var x = 0; x < line.length; x++)
      grid.set(new Vector(x, y),
               elementFromChar(legend, line[x]));
  });
  
  var gridOfSpirit = new GridOfSpirit(map[0].length, map.length);
  this.gridOfSpirit = gridOfSpirit;
  
  map.forEach(function(line, y) {
    for (var x = 0; x < line.length; x++)
      gridOfSpirit.setSpirit(new Vector(x, y),
               new Spirit);
  });
}

LifelikeWorldSpirit.prototype = Object.create(LifelikeWorld.prototype);

LifelikeWorldSpirit.prototype.turn = function() {
   this.gridOfSpirit.forEach(function(spirit, vector) {    
     spirit.plantSpirit = 0;    
     spirit.meatSpirit = 0;    
  }, this);
   
  var solved = [];    
  this.grid.forEach(function(critter, vector) {    
   // var spirit = this.gridOfSpirit.getSpirit(vector);
    if (critter.typeOfSpirit && solved.indexOf(critter) == -1) {      
      this.solveSpirit(critter, vector);
      solved.push(critter);
    }
  }, this);
  
  acted = [];
  this.grid.forEach(function(critter, vector) {
    if (critter.act && acted.indexOf(critter) == -1) {
      acted.push(critter);
      this.letAct(critter, vector);
    }
  }, this);
};


LifelikeWorldSpirit.prototype.solveSpirit = function(critter, vector) {  
  if (critter) {
    var areaToSolve = [vector];
  	this.solved = []; 
    this.solveSpiritR(critter.typeOfSpirit, critter.spiritValue, areaToSolve, 1, 3);    
  };
};


LifelikeWorldSpirit.prototype.solveSpiritR = function(typeOfSpirit, spiritValue, areaToSolve, step, dist) {  
  var nextAreaToSolve = []; 
  var mes = '';
 
  if (step <= dist) {      
    areaToSolve.forEach(function(start){  
      for (var dir in directions) {
        var target = start.plus(directions[dir]);       
        if (this.grid.isInside(target)) {       
          if (charFromElement(this.grid.get(target)) == ' '){
          var targetSpirit = this.gridOfSpirit.getSpirit(target);          
          if (this.solved.indexOf(targetSpirit) == -1){            
            nextAreaToSolve.push(target);                    
            this.solved.push(targetSpirit);                                
            targetSpirit[typeOfSpirit] += spiritValue;          
          };
        };
      };
    }; 
  }.bind(this)); 
    
    this.solveSpiritR(typeOfSpirit, spiritValue/2, nextAreaToSolve, step + 1, dist);
  };
};


function GridOfSpirit(width, height) {  
  this.spaceOfSpirit = new Array(width * height);
  this.width = width;
  this.height = height;
};

GridOfSpirit.prototype = Object.create(Grid.prototype);

GridOfSpirit.prototype.getSpirit = function(vector) {
  return this.spaceOfSpirit[vector.x + this.width * vector.y];
};

GridOfSpirit.prototype.getSpiritValue = function(vector, typeOfSpirit) {
  return this.spaceOfSpirit[vector.x + this.width * vector.y][typeOfSpirit];
};

GridOfSpirit.prototype.setSpirit = function(vector, spirit) {
  this.spaceOfSpirit[vector.x + this.width * vector.y] = spirit;
};

GridOfSpirit.prototype.forEach = function(f, context) {
  for (var y = 0; y < this.height; y++) {
    for (var x = 0; x < this.width; x++) {
      var value = this.spaceOfSpirit[x + y * this.width];
      if (value != null)
        f.call(context, value, new Vector(x, y));
    }
  }
};

View.prototype.findSpirit = function(typeOfSpirit) {  
  var maxSpiritValue = 0;
  var bestDir = null;
 
  for (var dir in directions){
     var target = this.vector.plus(directions[dir]);
    if (this.world.grid.isInside(target)){          
        var curSpiritValue = this.world.gridOfSpirit.getSpiritValue(target, typeOfSpirit);    
      if (curSpiritValue > maxSpiritValue) {
        maxSpiritValue = curSpiritValue;
        bestDir = dir;
      };
    };
  };

  if (maxSpiritValue > 0)  
    return bestDir
  else 
    return this.find(" ");  
};

actionTypes.grow = function(critter) {
  critter.energy += 1;
  return true;
};

function Plant() {
  this.energy = 3 + Math.random() * 4;  
  this.typeOfSpirit = "plantSpirit";
  this.spiritValue = 1000;
};

function SmartPlantEater() {
  this.energy = 50;
  this.typeOfSpirit = "meatSpirit";
  this.spiritValue = 2000;
};


function SmartPlantEater() {
  this.energy = 30;
  this.direction = "e";
  this.typeOfSpirit = "meatSpirit";
  this.spiritValue = 2000;
}
SmartPlantEater.prototype.act = function(context) {
  var space = context.find(" ");
  if (this.energy > 110 && space)
    return {type: "reproduce", direction: space};
  var plants = context.findAll("*");
  if (plants.length > 1)
    return {type: "eat", direction: randomElement(plants)};
  if (context.look(this.direction) != " " && space)
    this.direction = space;
  return {type: "move", direction: this.direction};
};


function Tiger() {
  this.energy = 100;
  //this.typeOfSpirit = "hanterSpirit";
  this.spiritValue = 2000;
};

Tiger.prototype.act = function(context) {
  var space = context.find(" ");
  if (this.energy > 205 && space)
    return {type: "reproduce", direction: space};
  var meat = context.find("O");
  if (meat && this.energy < 100)
    return {type: "eat", direction: meat};
  var spirit = context.findSpirit("meatSpirit");
  if (spirit)
    return {type: "move", direction: spirit};
};


Plant.prototype.act = function(context) {
  if (this.energy > 30) {
    var space = context.find(" ");
    if (space)
      return {type: "reproduce", direction: space};
  }
  if (this.energy < 30)
    return {type: "grow"};
};

animateWorld(new LifelikeWorldSpirit(
  ["####################################################",
   "#                 ####         ****O            *###",
   "# O * @   ##                 ########        O  **##",
   "#   *    ##                            ****     ***#",
   "#   *   ##*                        ##########   ***#",
   "#      ##***  *         ****                     **#",
   "#* **  #  *  ***      #########        @         **#",
   "#* **  #      *             **#   *              **#",
   "#     ##              #       #  ***          ######",
   "#*                    #       #   *           # O  #",
   "#*       @            #  ######                 ** #",
   "###          ****          ***         O        ** #",
   "#  *    O                                       *  #",
   "#   *     ##  ##  ##  ##               ###      *  #",
   "#   **         #              *       #####     *  #",
   "##  **        O#  #    ***  ***        ###      ** #",
   "###*      O      #   ***** O          O      @ ****#",
   "####################################################"],
  {"#": Wall,
   "@": Tiger,
   "O": SmartPlantEater,
   "*": Plant}
));
Где-то читал, что в средние века можно было купить алгоритм решения уравнения для какого-нибудь частного случая, чтобы потом отличиться во время математического турнира, этакий готовый «рецепт». Когда учился в школе, было ощущение, что нам преподают математику в виде готовых рецептов, не рассказывая о том, для каких целей потребовался тот или иной метод. Возможно, эта традиция пришла из средних веков.
И тогда субъект будет тыкать в монитор пальцем со словами – помидор.

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity