CLI ☠

Dec. 22nd, 2015 03:57 pm
ermouth: (Default)
[personal profile] ermouth

Я сегодня имел счастье поюзать vi – и переплевался в очередной раз от CLI и сопутствующих тулов. После этого у меня состоялся занятный диалог в тви:

Снимок экрана 2015-12-22 в 14.01.26

Во избежание недопонимания, я не против CUI вообще, но я резко против CLI. По моему глубокому убеждению засилье CLI снижает качество программного обеспечения и в целом тормозит всю отрасль.

Огромное количество отличного софта просто не доходит до массового пользователя из-за отсутствия человечьего UI. То-есть, случается софтинка давно уже вышла из детского состояния и обросла крутыми фичами – а так и пребывает в виде CLI-утилиты, даром, что ключей на 10 экранов.

Звоночки

Вообще, превращение списка ключей в дерево или разбухание ключей больше чем на полэкрана хэлпа – верный признак того, что пора с CLI подзавязывать и делать человечий UI.

Ещё хороший признак – если команды перестали совсем напоминать человеческую речь, пусть и существенно “туземную”. Полно утилит, которые абсолютно бесполезны, пока им не припишешь пару строк ключей из бессмысленных наборов букв.

Тут есть промежуточное решение, групповые ключи типа –O2, вместо –falign-jumps, –falign-functions и далее по списку. Но это уже полшага к UI.

Мифы

Я несколько раз имел переписки разной длительности и накала о сабже с самого разного уровня инженерами. Не зависимо от адекватности остальных суждений одна мысль всегда присутствовала – дескать, UI это непременно сложно.

Так вот, оно миф.

Хороший UI, да при этом современно выглядящий – да, это сложно. Но “модный” вид решительно не нужен для утилиты, у которой весь зоопарк CLI-ключей мапится на пару-тройку групп радио с чекбоксами – и сделать эти радио с чекбоксами совершенно не проблема же.

Бесспорно, есть целый класс случаев, когда CLI-наилучшее, а иногда – и вовсе единственно пригодное решение. Вот только расширять этот класс за счёт случаев “разработчику было лень” – это некомильфо. А именно так нередко и происходит.

Ещё один миф – что научиться делать хороший UI как-то очень сложно.

Я несколько раз над этим и сам размышлял, и с состоявшимися UI-дизайнерами говорил. Общий знаменатель – научиться не столько сложно, сколько долго. Это соображение совсем не узкоцехового плана – чтобы научиться делать хорошо всё что угодно, надо это сделать много раз.

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

Итого

Уважаемые софтвэа девелоперы, не ленитесь, делайте UI к вашим CLI – и дано будет вам ))

Date: 2015-12-22 10:40 pm (UTC)
From: [identity profile] ermouth.livejournal.com
У меня вообще нет скриптов. Меня когда что-то повторяющееся донимать начинает, я гуй рисую )

Date: 2015-12-22 10:43 pm (UTC)
From: [identity profile] morfizm.livejournal.com
и пишешь имплементацию UI automation - автораспознавания и кликания на GUI контролы других apps?

Date: 2015-12-22 10:50 pm (UTC)
From: [identity profile] ermouth.livejournal.com
Нет, конечно, хотя я пробовал. Это чепуха.

Соврал я тебе про скрипты, есть они у меня – просто внутри приложений обычно. Скажем, твой таск с фотками я бы забатчил фотошоповским скриптом. Но я бы его не писал, а _записывал_ с UI.

Хотя, если что-то сложное, я и написать могу. Просто у меня основной язык ‘скриптования’ – js.

Date: 2015-12-22 11:30 pm (UTC)
From: [identity profile] morfizm.livejournal.com
Т.е. ты хочешь, чтобы (а) гуёвые утилиты таки provide'или API для автоматизации, и (б) чтобы GUI дублировал все параметры этого API, типа, тебе так удобнее записывать, чем с консоли --help читать?

Получается, что для тебя GUI это learning & discovery tool. Тут мы сталкиваемся с ещё одной проблемой in general developers community: с тем, что если человек хороший разработчик конкретного тула, это совсем не обязательно означает, что он хороший разработчик learning приложений. Это как бы отдельный domain knowledge - уметь писать учебные штуки. Талантливые UX дизайнеры это умеют, но редко они в одном лице и девелоперы. А если же делать продукт в огромной команде где есть разделение ролей, там будет куча оверхеда, будет дорого стоить, будут резать фичи лишь бы было поменьше фич и т.п.

Opportunity, наверное, в том, чтобы либо работать в паре (UX-дизайнер и программер), либо научить программера быть UX-дизайнером. Добавить этот курс в университетскую программу. Ну и научить комфортно клепать быстрый GUI. Во времена Delphi был момент, когда среднестатистическому девелоперу наклепать GUI было комрофтно - он делался быстро, выглядел опрятно, легко инсталлился и работал. Сейчас, по-моему, с этим стало *хуже*: UI как бы отделился в нечто сложное и громоздкое.

Profile

ermouth: (Default)
ermouth

November 2021

S M T W T F S
 123456
78910111213
14151617181920
21 222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 21st, 2026 06:03 pm
Powered by Dreamwidth Studios