вторник, 17 ноября 2009 г.

Все сразу получить невозможно

AVL начал переводы97 Things Every Software Architect Should Know”. Это подборка статей об архитектуре программного обеспечения. Статьи небольшие: одна статья – один аспект, поэтому читается легко, здесь вам не академические мануалы в стиле Фаулера.

Как и обещал AVL, все сразу получить невозможно. Но… Можно даже сказать но! AVL слово держит и новые переводы выдает более чем регулярно: буквально каждые 2-3 дня появляется новый перевод, причем 2-3 дня перерыва это максимум, частенько и по одному переводу за день!

Во-первых, переводы действительно весьма качественного уровня. Что уже само по себе ценно. Во-вторых, может быть “старички” и не так уж много найдут нового в этих статьях – но все же приятнее находить на могучем и богатом. Ну, и в третьих повторение мать учения – иногда не лишним будет и перелистать эти статьи. Отрезвляет, знаете ли…

PS: давно собирался написать про инициативу AVL`а. Но как-то руки все не доходили! А тут аккурат последний перевод “Все сразу сделать невозможно” привел в чуйство от излишнего запала в разработке некоторых новых фич в Aml Pages, ибо нехер нефиг (а то чую, определенный нездоровый троллизм начал меня доводить до ползучего фичеризма).

AVL`у – виват и самое искреннее спасибо! Больше переводов – хороших и разных. В общем, рекомендую всем! Кто знаком с изложенными мыслями – получит удовольствие от перевода и возможности повспоминать боевую молодость. Кто нет – глядишь, и пригодится до того, как все описанное прочувствуете на собственной шкуре.
Полный список переводов см. здесь.

четверг, 12 ноября 2009 г.

Распространение софта студенческим телеграфом

Заходил к гости к родному дедуле: как дела, покалякать о том - о сём, да и вообще. Пока закипал коньячок чаек, меня тут же прислонили к делу - с фигов ли девелопер простаивает – приводили в чувство капризный Microsoft`овский офис.

Пока подогревался чаек, дедуля наворачивал какую-то красоту в своем любимом Excel. Я, собственно, рядом. Ну, и хочешь, не хочешь, и мой взор периодически падает на экран. И вдруг… Оп-па! Вижу до боли знакомый курсор с флагом активного языка. Присматриваюсь, и правда, курсор знакомый, и ведет себя точь в точь как и моя Aml Maple – то бишь в текстовом курсоре в любом месте показывается активный язык ввода (раскладка клавиатуры).

Спрашиваю деда: че мол за нах, че за красота?
Прослушал лекцию (дед-то у меня профессор), что это мол “оно само” и очень удобная штука, показывает мол язык ввода. Ну, думаю, приплыли – здрасти вам конкуренты. Шмыг сюда по винде, шмыг туда – упс, действительно работает моя Мапля, только версия постарее.

А я Маплю отродясь на дедовом компе не ставил. Откуда она там взялась, одному господу богу известно. Ну да у дедули за компом половина студентов перебывала. И т.к. студенты люди все больше молодые, то бишь продвинутые хакеры, то и налаживают ему ноутбук, кто во что горазд. Ну и судя по версии Мапли, по месту установки и неверным настройкам, точно студентова работа. Оптимизаторы, блин :)

PS: пререкались с дедом на тему копирайта минут пять, а то и десять. Я деду мол, “хех, моя ведь софтина”. А он ни в какую: мол оно само, и ты тут не причем, и вообще “ври больше”. Убедить его удалось: только “секретными” ключами командной строки для быстрой визуализации Мапли, и гордо красующимся на экране диалогом “О программе”. Иначе б не в жисть не поверил бы.
Вот так собственный же софт и уходит в народ, наворачивает кружок другой  - используя студенческий телеграф - и возвращается к авторам же. Призадумаешься однако…

пятница, 6 ноября 2009 г.

Умное меню

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

  • наблюдаем на экране команды меню. Пока вроде все обычно, не правда ли!?!
  • Щелкаем по командам меню. Опять же, не что-то из ряда вон выходящее. Знаем, плавали!

И вдруг, вуаля! Команды меню реагирует на щелчки мыши, но меню автоматически не закрывается. См. скриншот ниже.

Умное меню: команды реагируют на щелчок, но меню НЕ закрывается автоматом!

Поясню фишку! Это меню для выбора показываемых столбцов в таблице. Стандартное виндовское меню при щелчке по команде с галочкой обычно галочку поставит или уберет, но в любом случае меню закроет автоматом. Но обратите внимание – здесь задача другая: в большинстве случаев нужно за один раз отметить ни один столбец, а несколько. В обычном случае придется открывать меню столько раз, сколько нужно столбцов. Здесь же всё иначе: команды с названиями столбцов реагируют на щелчок, но меню не закрывается! Вы можете продолжать отмечать столбцы. Ну, а изменения в свою очередь вступят в силу, когда вообще уйдем из меню.

Но! Стандартное меню в винде такого делать не позволяет. Не верите? Попробуйте такое закодить! Традиционно подобный выбор реализуется через отдельный диалог, но любой диалог изначально уже само по себе полное гавно! не лучшее решение. Здесь же реализовано просто зергутно: и диалога никакого нет, и наглядность соблюдена, и меню всегда под рукой, и наконец решена главная проблема меню – сделан этот самый множественный выбор без закрытия.

Как увидел, аж позеленел от зависти и губы сами начали произносить “сцуки… но умные!” (есть мнение что иногда в этом блоге бывал и автор этой софтины, и уж скриншот-то свой , он узнает… Иван, в данном случае это комплимент – решение на пятерку с плюсом).

В прошлом посте аккурат писал про отложенные фичи в Aml Pages. Дык вот одна из отложенных фич – категории, аккурат и уперлась в возможность множественного выбора. В прошлых версиях выбор как раз был одиночным, и под него было написано ух какое умное меню: все из себя owner-draw, с иконками, с цветами, шрифтами и все такое. И меню это решало свои задачи выбора на раз, пользователи были вполне довольны. Возможность же выбрать несколько элементов одновременно в проблему пользовательского интерфейса и уперлась. В бизнес-логике никаких проблем с этим нет, все продумано, все написано. Но вот UI… Весь прошлый одиночный выбор был завязан именно на меню, а меню мульти-выбора не дает. Так что оставалось перепроектировать пользовательский интерфейс, причем достаточно объемную его часть. А это задачка не простая и не быстрая – поведение-то поменяется напрочь, надо полностью переанализировать требования пользователя. На этом-то все и застряло.

А тут на тебе такое-растакое меню :) И если удастся его сделать – то не придется переписывать мерено-немеренно пользовательского интерфейса, а просто доточить уже имеющееся до ума, тем более, что этим меню пользователям как раз довольны. Тут только два варианта: или все же сделать аналог, или разочароваться в себе и запить с тоски, причем надолго.

Но у этого меню есть нюансы: так хитро реагирует на щелчки только само подменю “столбцы”. Все остальное меню ведет себе стандартно – клик и закрылось. Выглядит “умное” подменю, точно также, как и все остальные. А это очень не просто эмулировать внешний вид полностью, всегда есть 33 нюанса, какой-нибудь да будет упущен. Так что для полного сходства остается только одно – не подменять бутафорским муляжом, а делать именно меню. Вот тогда и будет выглядеть все идентично безо всяких лишних усилий.

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

Вот такой вот бывает развеселый ГУЙ. Причем не бутафорский, не эмуляция в стиле “нарисуем очень похоже”, а самый что ни на есть разнастоящий, родной, можно даже сказать влитой, ГУЙ. Он и “выглядит как утка”, и “крякает как утка”, и “летает как утка”, да потому что он и есть разновидность “утки обыкновенной”, а разница только в способе “захода на посадку”. Вот такие любопытнейшие головоломки преподносит иногда пользовательский интерфейс.

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

среда, 4 ноября 2009 г.

Одна фича – один релиз!

Уф, дело к ночи – готовь калачи! Сбылась мечта девелопера – русский релиз новой версии Aml Pages упал на сайт! А то, чуялось мне всё, мерещилось, что уже попер “ползучий фичеризм”. А боюсь я его пуще огня и багов кромешных. Нет тюрьмы, хуже чем в своей голове. А П.Ф. это не проста тюрьма, это прям Алькатрасс эдакий :)

Очень давно наблюдаю один и тот же эффект. Чем больше впихивается фич в одну версию, тем тяжелее релиз. Мозги начинают разбрасываться вразнобой, и вместо того чтобы сосредоточить все силы на вылизывании кода, начинаешь кидаться из стороны в сторону. А в результате – один большой комбайн, который делает многое. И всё это “многое” одинаково херово нехорошо.

  • Фича одна и только одна: сосредотачиваемся на единственной фиче и уж делаем ее – так делаем. Пусть не всем нужна именно эта фича, но кому нужна – получают ее в доведенном до ума виде.
  • Use-case подход: сосредоточение на единственной фиче позволяет максимально использовать use-case аналитику. Больше внимания тратим не на херь техническую нюансы решения, а на use-case анализ. Продумываем и делаем до конца пусть один, но вполне четкий сценарий использования софтины. И клиент получает не набор бессвязных приблуд, а некоторый, вполне конкретный способ решения своих вполне конкретных задач (следует читать: “некоторый, вполне конкретный стимул поделиться денюжками”).
    К слову говоря, вот именно сейчас отложил пару наиклевейших идей, только потому, что никак толком не вырисовывалась ясность в вопросе: как и зачем это будет использоваться юзерами. А главное: пока мужественно забил на эти клевые придумки – а это было непросто, потому как клёвые - и в голове идеи доточились, и варианты решений появись. А рванул бы как на сто метров – точно делов бы наворотил.
  • Быстрый релиз равно быстрый feedback: при быстром релизе пользователи раньше получают финальную версию. Все просто: несомненно бету качают значительно меньше, чем финальную версию. Поток возрастет – возрастет и feedback. А все таки сотни и тысячи пользователей наверняка смогут предложить любопытных мыслей больше, чем десятки хоть и маститых бета-тестеров.
  • Быстрый релиз равно быстрый баг-фикс: фичи фичами, но от багфикса в новой версии никуда не деться. А значит, старинные пользователи получат и более быстрый баг-фикс. Чем плохо?
  • Огонь и движение: ударим новой версией по бездорожью и конкурентам. Пусть версия и не революционная, но все равно – “а шоб не дремали”. Пока новая версия “прикрывает нас огнем”, можно спокойно “окопаться” и поразмышлять над будущим движением вперед.
  • Как так? Нарушаем-с? если не отметить, то все написанное будет полуправдой (что есть “наглая ложь”). Сколько раз нарушал это правило быстрого релиза, вот ровно столько раз в жопе ней самой и сидел. Ни разочка меня расплата не миновала. Неспроста же!?!

Один релиз – один день: это еще одно сугубо эмпирическое правило. Правда, оно уже и не только, да и не столько к самой разработке как таковой относится, поэтому о нем как-нибудь отдельно.

P.S. просто не могу молчать: убить мало этот пилять Сбербанк! С кризисом они мать-иво борются! Платеж от 29 июля… Знаете когда деньги пришли? Седьмого сентября! Нормально, да!?!
Ладно, продолжаем разговор – “Адские клоуны. Часть вторая”. Платеж от 5 октября, сегодня 4-ое ноября. Как вы думаете, пришли денюжки!?! Может убрать их из способов платежей нах!?!

суббота, 24 октября 2009 г.

MobileLive – блог о юзабилити

Новый блог – MobileLive. Новый, по крайней мере для меня, блог про юзабилити и пользовательский интерфейс. Пока статей не очень много, но в целом направленность очень порадовала. Давно искал!

Что отдельно понравилось, так это “золотая середина”. Статьи и в меру содержит теории, но и вполне подробно описаны и живые, конкретные ситуации. Ну, поехали по порядку.

Что хорошо: последние выпуски посвящены прототипированию пользовательского интерфейса. Хватит теории, перейдем к практическим занятием. Как-то доводилось заниматься прототипированием UI, ох и натрахался я тогда. Думается мне, размышляется, что-то не то я делал, и не так, да еще и наверное не туда. Поэтому-то и любопытны статьи с фактическим материалом, со ссылками, с примерами.

Что плохо: пока не видно ссылок на конкретный софт для прототипирования UI. А нужны, ой как нужны! Хочется взглянуть, чем пользуется профессионал. Любое обучение ведется на примерах – “смотри и делай как я”. Всегда и во все времена так учили – начиная от первобытных людей на охоте, и заканчивая вполне современными аспирантами и не на очень-то охоте. Но думается, что недостатки эти временные. Вопросы заданы – обещали в следующих постах.

Что ужасно: началось все с анонса в форуме пользовательского интерфейса на КЫВТ.ру. Но впоследствии из блога создалось впечатление, что автор женского пола – “я уделяла… я занималась”. Чего, между прочим, из поста на КЫВТ.ру ну никак не следовало.
Кто ж так делает!?! Нужно ж было сразу в посте недвусмысленно намекнуть, что автор женского пола. Это хоть и не столь очевидный, но для старожилов более чем известный прием: хочешь ответов на КЫВТ.ру – прикинься бабой милой девушкой! Проверено не по разу – прием безотказный! Вплоть до второго аккаунта на КЫВТ… (это все шутка, но нужно ж было к чему-то придраться:).

А вообще блог более чем порадовал – жду продолжения с нетерпением.

Напоследок пару комментариев по делу, что понравилось, а что нет, и почему “нет”. Чтобы не тянуло на засраную хвалебную “журналистки-заказную” рецензию. Глядишь и ASPа (автор блога) прочтет этот пост – авось инфа и сгодится.

GUI я занимаюсь в софте, причем в десктопном – здесь вам не сайты! Причем писать этот самый “гуй” я как-то привык ручками, прямо в коде, на помойку все эти формы да бильдеры (“формовыми гуями прославиться нельзя” ©)
Муторно, оно конечно муторно. Но занятие это благодарное , только когда точно знаешь чего писать, когда перед глазами есть видение, есть какой-то прототип. А вот когда оного нет, боже упаси прототипировать это на каком-нить C++ – работа мама не горюй, долгая и медленная. Но главное, когда прототип завершается, то результат летит в помойку, т.к. получилось не то. На колу мочало, начинай сначала.
Все логично – прототипирование занятие итеративное. Но с такой скоростью прототипированием можно заниматься ну очень долго, что ни в какие ворота. Перепробованы всякие связки для такой работы – но как-то всё не то. Поэтому и хочется ссылок на конкретный софт для прототипирования UI, хочется уже пощупать ручками…

Чтобы самому уж не быть сугубо “тетеретиком нашего движения” приведу пример. Буквально сейчас, за последние недели жестко встала проблема как раз с протипированием двух новых фич в UI. Без прототипа точно никуда – в этой задаче и так дай бог если треть от силы ясна. И что!?! А ничего – воз и поныне там, не сделано ни черта! Просто не знаю как и выкручиваться!

И еще. Не стоит скатываться до статей некоторых (не будем показывать пальцем) сайтов по юзабилити. Уж больно у них статьи какие-то либо в лес, либо по дрова. Или уж вода водой – азбучные истины. Повторение, конечно, мать учения, но не в 30-ый же раз в первый класс!?! Ну прочитаны, прочитаны! уже и Купер, и Раскин, и Тидвелл, и Головач и еще много чего – так что начинать совсем уж “с алфавита” уже неинтересно. Или уж наоборот – сплошные заметки с “полей боёв” – получается какой-то треп в курилке, экий междусобойчик. Либо так, либо сяк – а посредине ничего нету. Дайте ж инфы “второклассникам” - “арифметику” уже вроде как прошли, хотелось бы перейти к “алгебре”…

Итого: мне лично очень понравилось! Задеты вопросы, которые и сам себе не раз задавал – да вот с ответами у меня пока как-то не очень!
2ASPa: С_П_А_С_И_Б_О! Так держать! Больше блогов – хороших разных!

четверг, 22 октября 2009 г.

Avangate-2

В продолжение предыдущего поста про чудеса в решете в Avangate. Avangate все же отозвался на письма в тех. саппорт. Пока мое удивление по меньшей мере не убавляется.

Вопрос первый: "как мне изменить цены на конкретные лицензии конкретных продуктов, не шаманя с параметром QTY, которые отвечает за число копий. Ответ получен:  предложили прогуляться в раздел расширенных цен (advanced prices). Вы, конечно, будете смеяться, но там в очередной раз узрел незабвенную надпись “This is feature is unavailable in Your account”.
Странные дела творятся, о хоббиты. Запрос в саппорт отправлялся непосредственно из панели управления, и уж чего-чего, а информация о моем аккаунте уж точно присутствовала в запросе… Если что предложили обращаться к моему account-менеджеру. Ну, пожалуй, (допустим) я и не против, но пока это уже третье письмо, а информации как мне поможет в этом вопросе эти самые advanced prices как не было, так и нет.

Второй вопрос: как удалить свой собственный продукт из этой самой панели. Ответ прост: пользователь не может ничего удалить. Он может только отключить продукт, сделать его неактивным. Теперь в моем аккаунте значится как минимум один продукт “Моя Прога Нах X.YY” с заведомо ошибочной информацией, правда все-таки отключенный. И еще четыре продукта “Моя Прога”, “Моя Прога Хоум” и.т.д. также с достаточно мутноватой политикой ценообразования, которую хорошо бы сменить – а в идеале снести нафиг и сделать заново.
Откуда возникает необходимость наблюдать эти продукты в отключенном (disabled) состоянии, вместо того, чтобы просто удалить – совершенно непонятно. Казалось бы, удали продукт и  будет всем счастье: сервер Avangate не будет заниматься лишней, и абсолютно бесполезной работой, ну а пользователь в свою очередь не рискует впопыхах да в запале отредактировать отключенный продукт (это запросто: когда висит сплошной список “Прога Хоум”, “Прога Персонал” и.т.д. – самым банальным образом промахнуться строчкой в списке не сложно).

Пра-а-а-адалжаем разговор (© Карлсон). В поддержку отправлено еще запросов, причем в том же самом непосредственном стиле, в каком и были написаны их ответы. Что мне даст фича advanced prices, и зачем ее мне рекомендовать, если она ни черта не может мне дать, по причине своей отключенности. И\или как пользователь по фразе “The feature is unavailable” сможет выстроить единственно верные предположения о предназначении фичи, и что это то, что ему и надо?

PS: безусловно, ирония в этом посте прослеживается невооруженным взглядом. И вполне, может быть, что я еще не достаточно погряз в общении с саппортом, и возможно не до конца (или единственно) верно формулирую свои вопросы.
Всё так! Всё вполне именно так и может быть на самом деле. Но мне можно! Я пользователь, а они саппорт. А пока никакой полезной информации все еще получено не было. Все это вполне стандартные “отписки”.

PPS: Наш паравоз вперед летит, а в Plimus остановка! :)) Пока, лично у меня, с разработкой и доводкой этой самой “Моя Прога Нах” время терпит. Хелпы надо дописать, что-то “порешить” с версией по умолчанию (portable или все-таки с инсталлером), статистику кое-какую хотел по западным пользователем собрать…
В общем, есть мёллер время есть. Но оно конечно! Но, как в том анекдоте про нос заднице, есть и нюансы.

  1. Продукт больше ориентирован на европейцев, посему наверное было бы значительно интереснее сотрудничать и с европейской конторой (полагал, что это желание взаимное).
  2. Судя по статистике с сервера, мытьем ли катанием, но европейцы уже скачивают новую триальную версию, несмотря на то, что ее даже нет в аглицкой части сайта.
  3. От пользователей вопросы “куда грузить бабло” уже поступали! (ключевое слово “уже”).
  4. Первый заказ уже прошел. Человек просто сбухты-барахты не туда и не то проплатил, даже меньше запланированной цены. Но, куда как проще, было порадовать пользователя ключом, чем объяснять про Avangate. Если бы последние чесались быстрее, возможно это был бы именно их заказ.

Можно, конечно и подождать – кто ж спорит! Только куда как проще зайти в Plimus, и все сделать там, не засоряя себе мозг таким содержательным общением!

суббота, 17 октября 2009 г.

Avangate

Сорок минут искал в Avangate как удалить продукт… Не нашел! Может я и из бронепоезда, и не туда смотрел, а может вусмерть меня доставший за последние дни больной зуб все-таки оказал влияние на мои мыслительные возможности… Но все-таки 40 минут это уже слишком. Меня это потрясло до основания! Зачем? Для чего так сделано?

Вспомнился пост на RSDN: что “Avangate просит денег за каждую фичу в аккаунте”. Действительно так. Не по разу за эти сорок минут нарывался на “this feature is unavailable in Your account”. Ни пояснений что за фича, ни что она мне даст, ни тем более ссылок как получить фичу. Маркетинг, конечно, маркетингом – но не слишком ли!?! “Пассажиров клиентов не нужно линчевать без особой на то необходимости” (© Остап И. Бендер).

Отправил запросы в тех. саппорт Авангейта. Пол дня прошло – ни ответа, ни привета. Хоть бы тикет прислали, мол “да, запрос принят“? Призадумался, а не поспешил ли завязываться на Avangate…

UPS: продолжение истории в этом посте.