Да, есть толпа, которая называет чёрное белым MVP — MVC. И Stanford University туда же. На Stackoverflow есть заплюсованный ответ, что MVP — это разновидность MVC. Смотря что считать контроллером.
Вопрос в том: мы с вами что можем сделать? Ну, я дополню пост инфой из данного обсуждения. И всё? Если да, то куда мы против Стэнфорда.
Одним выстрелом не получится! У каждого своя голова. Сам Страуструп говорил, что он знает ООП «на троечку» (цитату сейчас не могу найти, но смысл такой).
Вот и переводи после этого статьи. :) Значит, Cocoa MVC — вовсе не MVC…
Про детей, боюсь, поздно думать, потому что в Стэнфорде уже 4 года учат именно так (и без приставок типа «Cocoa MVC»).
Если брать те же примеры из документации Apple, то у них контроллеры очень разные. Толстые и тонкие, на любой вкус. Поэтому в статью, помимо обзора нескольких паттернов для чайников, я добавил призыв думать своей головой. Может быть, его надо подкрепить какими-то другими примерами — если есть идеи, пишите.
P.S. Просьба не кидать тапками, но вот читаю Фаулера, не вижу ничего криминального в MVP.
Задумка-то хорошая
To approach MVP I find it helpful to think about a significant mismatch between two strands of UI thinking. On the one hand is the Forms and Controller architecture which was mainstream approach to UI design, on the other is MVC and its derivatives. The Forms and Controls model provides a design that is easy to understand and makes a good separation between reusable widgets and application specific code. What it lacks, and MVC has so strongly, is Separated Presentation and indeed the context of programming using a Domain Model. I see MVP as a step towards uniting these streams, trying to take the best from each.
— Результаты первой итерации тестирования. Какие мы сделали выводы?
— Результаты второй итерации тестирования. Какие мы сделали выводы?
…
— Конечный интерфейс.
Первые два пункта не менее важны, чем последний. Эта мысль очень согласуется с моим некоторым опытом тимлида/ПМ: когда представляешь решение, ключевую роль имеет обоснование данного решения, в данном случае исследование и выводы из него. Тем самым включается голова у заказчика, он начинает думать, анализировать (а не просто прикидывать, крут ли UI). Вот об этом human-centred design.
Есть ощущение, что ты слишком подстраиваешься под заказчика, чего ему, может быть, не надо. «Как — не надо?!!» Что я имею в виду: вот разница между двумя вопросами заказчику:
— Вам какие нравятся шары, красные или зелёные?
— Мы провели исследование, юзеры при виде зелёных шаров чаще испытывали чувство удовлетворения. Оставляем зелёные? Или исследуем дальше по подгруппам, имеет ли смысл показывать одним красные, а другим зелёные?
P.S. Кроме «чувства удовлетворения», могут быть любые другие UX-метрики, о которых на WUD много говорили, ждём материалы докладов, media_magnit обещала, что выложат.
Но в конце я не понял: где тут про юзабилити? Мы типа провели коридорное тестирование — что будем делать с его результатами? Что если они сломали нам мозг? Что если юзер совсем не такой, как мы представляли? Да, согласен, можно так провести «тестирование», что оно точно не сломает наши изначальные шаблоны. Так его и проводят очень многие, что неправильно.
И дальше. Показываем заказчику проект. Если мы говорим про юзабилити, то ему нужно показать:
— Результаты первой итерации тестирования. Какие мы сделали выводы?
— Результаты второй итерации тестирования. Какие мы сделали выводы?
…
— Конечный интерфейс.
Тогда это будет серьёзный разговор, а не «о вкусах не спорят».
P.S. Копирайты ставить не буду, они есть у меня в профиле, в предыдущих постах.
А если серъезно, то людям просто неприятно сообщать плохие новости.
Скажу ещё серьёзнее: нужно хорошо работать над собой, чтобы регулярно сообщать отказы.
Мне пришлось за полгода сообщить примерно 50 отказов (хотя я не HR). У нас очень высокие требования к тесту, поэтому каждый второй спрашивает: «почему?» и иногда в довольно резкой форме, т.к. он потратил несколько часов на тест. Нужны хорошие нервы, чтобы после десятков таких «почемучек» продолжать сообщать отказы.
Эта строчка не имеет силы, если стороны не договорились о процедуре определения того, выполнены ли требования, учтены ли рекомендации. (Это следует из раздела 8, который не попал в пост.)
Нет процедуры => невозможно сказать, ГОСТ выполнен или нет.
1. Сам процесс: тимбилдинг, мозговой штурм, непредсказуемые юзеры, сжатые сроки.
2. Почти постоянное наблюдение со стороны профессионала. Из поста:
Тьюторы и жюри — UX-десант из компании «Киноход», за что им огромное спасибо! Без них это состязание было бы пустой тратой времени.
Имеет смысл применять в жизни тот единственный подход, о котором я сказал: «слушай юзеров». Вот мне (тупому юзеру) сегодня дизайнеры пытались объяснить, куда я смотрю. Вот что они пытались — не узнать, а объяснить. Хотя до этого рассказывал им услышанное на WUD: каждая юзер-стори — это гипотеза, которая тщательно проверяется.
И, наконец, обфусцировать константу "ptrace" (домашнее задание). Всю эту инфу прислал автор одной статьи, которая лежит в песочнице и очень ждёт инвайта.
Надеюсь, paz0r не против. :) Остальные участники, кто не с хабра, если есть что добавить, пишите на почту dev@x128.ru.
Задание на пол-листа A4. Вкратце:
Парень Андрей хочет пригласить девушку Лизу в кино. Скажем, в центре Москвы. Лиза любит мелодрамы. Понятно, места на последнем ряду, желательно диванчики. Ну и после кино где-то погулять или в кафе посидеть.
Андрею нужно такое приложение для смартфонов. Коридорное тестирование: ловишь людей и показываешь бумажные прототипы на листах А4 (лист = 1 экран), демонстрируешь «переходы» между ними. Внимательно следишь за их реакцией и пытаешься отделить свои шаблоны от того, что видишь (см. пост).
Ожидаемый результат:
1. Какие сделаны выводы из 1-го тестирования?
2. Какие сделаны выводы из 2-го тестирования?
3. Само приложение на больших листах — см. последнее фото в посте.
На всё полтора часа, примерно три brainstorm-итерации по полчаса: проектируем, рисуем, тестируем.
Мы решили, что 5 человек — слишком большая команда для одного прототипа… А если честно, у нас просто разделились мнения, и мы (без всяких конфликтов) стали рисовать один базовый вариант и один «концепт», постоянно обмениваясь мнениями и лаконичностью. Концепт существовал на протяжении двух итераций и служил обкатке альтернативных решений. Поэтому у нас было почти в 2 раза больше времени, чем у других команд.
В итоге, кстати, получилось два таба: первый соответствует юзабилити базового варианта (Андрей начинает с выбора фильма), второй — юзабилити концепта (Андрея больше интересует карта Москвы). Именно «Андрей», а не «юзер», т.к. в каждый момент времени нужно максимально конкретизировать задачу, чтобы никаких «Фильм 1», «Фильм 2» или «здесь будет карта».
Больше ничего выдающегося про наш подход сказать не могу. Подход один: слушай юзеров. Это только кажется, что они все белые и пушистые квадратные.
Да, есть толпа, которая называет
чёрное белымMVP — MVC. И Stanford University туда же. На Stackoverflow есть заплюсованный ответ, что MVP — это разновидность MVC. Смотря что считать контроллером.Вопрос в том: мы с вами что можем сделать? Ну, я дополню пост инфой из данного обсуждения. И всё? Если да, то куда мы против Стэнфорда.
Одним выстрелом не получится! У каждого своя голова. Сам Страуструп говорил, что он знает ООП «на троечку» (цитату сейчас не могу найти, но смысл такой).
Про детей, боюсь, поздно думать, потому что в Стэнфорде уже 4 года учат именно так (и без приставок типа «Cocoa MVC»).
Если брать те же примеры из документации Apple, то у них контроллеры очень разные. Толстые и тонкие, на любой вкус. Поэтому в статью, помимо обзора нескольких паттернов для чайников, я добавил призыв думать своей головой. Может быть, его надо подкрепить какими-то другими примерами — если есть идеи, пишите.
P.S. Просьба не кидать тапками, но вот читаю Фаулера, не вижу ничего криминального в MVP.
// Не реклама, все вакансии заняты. :)
Инженеров
AppleNeXT, плодами которых пользуются инженеры Apple, я только хвалю:Ну, то, что я Жене перед выступлением объяснял. Из тестового задания:
© Макс Ткачук paz0r, ладно уж. :)
Первые два пункта не менее важны, чем последний. Эта мысль очень согласуется с моим некоторым опытом тимлида/ПМ: когда представляешь решение, ключевую роль имеет обоснование данного решения, в данном случае исследование и выводы из него. Тем самым включается голова у заказчика, он начинает думать, анализировать (а не просто прикидывать, крут ли UI). Вот об этом human-centred design.
Есть ощущение, что ты слишком подстраиваешься под заказчика, чего ему, может быть, не надо. «Как — не надо?!!» Что я имею в виду: вот разница между двумя вопросами заказчику:
— Вам какие нравятся шары, красные или зелёные?
— Мы провели исследование, юзеры при виде зелёных шаров чаще испытывали чувство удовлетворения. Оставляем зелёные? Или исследуем дальше по подгруппам, имеет ли смысл показывать одним красные, а другим зелёные?
P.S. Кроме «чувства удовлетворения», могут быть любые другие UX-метрики, о которых на WUD много говорили, ждём материалы докладов, media_magnit обещала, что выложат.
Но в конце я не понял: где тут про юзабилити? Мы типа провели коридорное тестирование — что будем делать с его результатами? Что если они сломали нам мозг? Что если юзер совсем не такой, как мы представляли? Да, согласен, можно так провести «тестирование», что оно точно не сломает наши изначальные шаблоны. Так его и проводят очень многие, что неправильно.
И дальше. Показываем заказчику проект. Если мы говорим про юзабилити, то ему нужно показать:
— Результаты первой итерации тестирования. Какие мы сделали выводы?
— Результаты второй итерации тестирования. Какие мы сделали выводы?
…
— Конечный интерфейс.
Тогда это будет серьёзный разговор, а не «о вкусах не спорят».
P.S. Копирайты ставить не буду, они есть у меня в профиле, в предыдущих постах.
Вы делаете HR'ов лучше. :)
Скажу ещё серьёзнее: нужно хорошо работать над собой, чтобы регулярно сообщать отказы.
Мне пришлось за полгода сообщить примерно 50 отказов (хотя я не HR). У нас очень высокие требования к тесту, поэтому каждый второй спрашивает: «почему?» и иногда в довольно резкой форме, т.к. он потратил несколько часов на тест. Нужны хорошие нервы, чтобы после десятков таких «почемучек» продолжать сообщать отказы.
Заявлено так. Очень хотел сравнить, но не нашёл полного IS'ходника дешевле, чем 4.5 килорублей.
Нет процедуры => невозможно сказать, ГОСТ выполнен или нет.
1. Сам процесс: тимбилдинг, мозговой штурм, непредсказуемые юзеры, сжатые сроки.
2. Почти постоянное наблюдение со стороны профессионала. Из поста:
Имеет смысл применять в жизни тот единственный подход, о котором я сказал: «слушай юзеров». Вот мне (тупому юзеру) сегодня дизайнеры пытались объяснить, куда я смотрю. Вот что они пытались — не узнать, а объяснить. Хотя до этого рассказывал им услышанное на WUD: каждая юзер-стори — это гипотеза, которая тщательно проверяется.
#include <sys/ptrace.h>не работает на реальном устройстве. Решение:Далее в функцию
main()добавить:И, наконец, обфусцировать константу
"ptrace"(домашнее задание). Всю эту инфу прислал автор одной статьи, которая лежит в песочнице и очень ждёт инвайта.@x128.ru.Задание на пол-листа A4. Вкратце:
Парень Андрей хочет пригласить девушку Лизу в кино. Скажем, в центре Москвы. Лиза любит мелодрамы. Понятно, места на последнем ряду, желательно диванчики. Ну и после кино где-то погулять или в кафе посидеть.
Андрею нужно такое приложение для смартфонов. Коридорное тестирование: ловишь людей и показываешь бумажные прототипы на листах А4 (лист = 1 экран), демонстрируешь «переходы» между ними. Внимательно следишь за их реакцией и пытаешься отделить свои шаблоны от того, что видишь (см. пост).
Ожидаемый результат:
1. Какие сделаны выводы из 1-го тестирования?
2. Какие сделаны выводы из 2-го тестирования?
3. Само приложение на больших листах — см. последнее фото в посте.
На всё полтора часа, примерно три brainstorm-итерации по полчаса: проектируем, рисуем, тестируем.
Мы решили, что 5 человек — слишком большая команда для одного прототипа… А если честно, у нас просто разделились мнения, и мы (без всяких конфликтов) стали рисовать один базовый вариант и один «концепт», постоянно обмениваясь мнениями и лаконичностью. Концепт существовал на протяжении двух итераций и служил обкатке альтернативных решений. Поэтому у нас было почти в 2 раза больше времени, чем у других команд.
В итоге, кстати, получилось два таба: первый соответствует юзабилити базового варианта (Андрей начинает с выбора фильма), второй — юзабилити концепта (Андрея больше интересует карта Москвы). Именно «Андрей», а не «юзер», т.к. в каждый момент времени нужно максимально конкретизировать задачу, чтобы никаких «Фильм 1», «Фильм 2» или «здесь будет карта».
Больше ничего выдающегося про наш подход сказать не могу. Подход один: слушай юзеров. Это только кажется, что они все белые и пушистые
квадратные.