Я сегодня имел счастье поюзать vi – и переплевался в очередной раз от CLI и сопутствующих тулов. После этого у меня состоялся занятный диалог в тви:
Во избежание недопонимания, я не против CUI вообще, но я резко против CLI. По моему глубокому убеждению засилье CLI снижает качество программного обеспечения и в целом тормозит всю отрасль.
Огромное количество отличного софта просто не доходит до массового пользователя из-за отсутствия человечьего UI. То-есть, случается софтинка давно уже вышла из детского состояния и обросла крутыми фичами – а так и пребывает в виде CLI-утилиты, даром, что ключей на 10 экранов.
Звоночки
Вообще, превращение списка ключей в дерево или разбухание ключей больше чем на полэкрана хэлпа – верный признак того, что пора с CLI подзавязывать и делать человечий UI.
Ещё хороший признак – если команды перестали совсем напоминать человеческую речь, пусть и существенно “туземную”. Полно утилит, которые абсолютно бесполезны, пока им не припишешь пару строк ключей из бессмысленных наборов букв.
Тут есть промежуточное решение, групповые ключи типа –O2, вместо –falign-jumps, –falign-functions и далее по списку. Но это уже полшага к UI.
Мифы
Я несколько раз имел переписки разной длительности и накала о сабже с самого разного уровня инженерами. Не зависимо от адекватности остальных суждений одна мысль всегда присутствовала – дескать, UI это непременно сложно.
Так вот, оно миф.
Хороший UI, да при этом современно выглядящий – да, это сложно. Но “модный” вид решительно не нужен для утилиты, у которой весь зоопарк CLI-ключей мапится на пару-тройку групп радио с чекбоксами – и сделать эти радио с чекбоксами совершенно не проблема же.
Бесспорно, есть целый класс случаев, когда CLI-наилучшее, а иногда – и вовсе единственно пригодное решение. Вот только расширять этот класс за счёт случаев “разработчику было лень” – это некомильфо. А именно так нередко и происходит.
Ещё один миф – что научиться делать хороший UI как-то очень сложно.
Я несколько раз над этим и сам размышлял, и с состоявшимися UI-дизайнерами говорил. Общий знаменатель – научиться не столько сложно, сколько долго. Это соображение совсем не узкоцехового плана – чтобы научиться делать хорошо всё что угодно, надо это сделать много раз.
Простые вещи начинают получаться сразу, сложные – чуть погодя. Прикручивание UI к несложным CLI-тулам в этом плане дело благодарное, такие интерфейсы как раз несложные.
Итого
Уважаемые софтвэа девелоперы, не ленитесь, делайте UI к вашим CLI – и дано будет вам ))

no subject
Date: 2015-12-22 10:40 pm (UTC)no subject
Date: 2015-12-22 10:43 pm (UTC)no subject
Date: 2015-12-22 10:50 pm (UTC)Соврал я тебе про скрипты, есть они у меня – просто внутри приложений обычно. Скажем, твой таск с фотками я бы забатчил фотошоповским скриптом. Но я бы его не писал, а _записывал_ с UI.
Хотя, если что-то сложное, я и написать могу. Просто у меня основной язык ‘скриптования’ – js.
no subject
Date: 2015-12-22 11:30 pm (UTC)Получается, что для тебя GUI это learning & discovery tool. Тут мы сталкиваемся с ещё одной проблемой in general developers community: с тем, что если человек хороший разработчик конкретного тула, это совсем не обязательно означает, что он хороший разработчик learning приложений. Это как бы отдельный domain knowledge - уметь писать учебные штуки. Талантливые UX дизайнеры это умеют, но редко они в одном лице и девелоперы. А если же делать продукт в огромной команде где есть разделение ролей, там будет куча оверхеда, будет дорого стоить, будут резать фичи лишь бы было поменьше фич и т.п.
Opportunity, наверное, в том, чтобы либо работать в паре (UX-дизайнер и программер), либо научить программера быть UX-дизайнером. Добавить этот курс в университетскую программу. Ну и научить комфортно клепать быстрый GUI. Во времена Delphi был момент, когда среднестатистическому девелоперу наклепать GUI было комрофтно - он делался быстро, выглядел опрятно, легко инсталлился и работал. Сейчас, по-моему, с этим стало *хуже*: UI как бы отделился в нечто сложное и громоздкое.