💾 Archived View for spline-online.ru › blog › 20241121-kiss.gmi captured on 2024-12-17 at 10:04:09. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

KISS

2024-11-21 17:27:13

Создайте систему, которой сможет пользоваться дурак, и только дурак захочет ею пользоваться. -- Принцип Шоу

KISS (акроним для "Keep It Simple, Stuipid" – "Оставь это простым, тупица") – принцип проектирования, принятый в ВМС США.

Впервые встречается в английсокм примерно в 1938 году. Этот принцип утверждает, что большинство систем работают лучше, оставаясь простыми. Поэтому при проектировании простота должна быть одной из ключевых целей и следует избегать ненужных сложностей.

В мир программного обеспечения этот принцип пришёл без изменений. Простые системы надёжнее, так как имеют меньше точек отказа и проще понять их устройство. Простые программы реже ломаются. Пресловутый Unix way во многом преследует те же цели: программа должна решать одну задачу и делать это хорошо, а идеи Дуга Макилроя позволили объединять программы в цепочки, когда вывод одной программы может быть вводом для другой (это очень упрощённое описание конвейеров (pipes)).

Этот принцип, в некотором смысле, носит философский характер. Насколько нужно сохранять простоту той или иной системы? Конечно, всегда хочется иметь систему настолько простой, насколько это возможно. Не даром в последние лет десять так активно используют микросервисную архитектуру вместо монолитной, когда система поделена на относительно простые части, отвечающие за узкий круг задач, вместо создания системы в виде одной большой сущности.

Больше особо рассказывать об этом принципе нечего. Оставь это простым. Однако, позволю себе ещё растечься мыслью, так сказать.

Корпорации и коммерческие организации, в стремлении повысить свои продажи, убеждают пользователей, что компьютер не сложнее тостера. Подходы вроде "One Button Operation" порой скрывают от пользователя огромные комплексные решения за простым и симпатичным пользовательским интерфейсом. Однако, всё таки стоит держать в голове, что компьютер существенно сложнее тостера.

У такого подхода имеется неоспоримое преимущество: пользователь может сесть перед машиной и почти без обучения начать решать свои задачи вместо того, чтобы тратить время на чтение документации и изучения идей, лежащих в основе той или иной системы. Но у всего есть цена: KISS вынуждает пользователя изучать то, с чем он работает, но имеет минимум скрытых процессов и простое внутреннее устройство, позволяя самостоятельно решать возникшие проблемы. Сложные системы позволяют пользователю решать свои задачи, пользуясь простым и интуитивным (хотя, на самом деле это не так — интуитивность заключается в выработке у пользователя определённых стереотипов при использовании систем; попробуйте научить пользоваться компьютером на уровне уверенного пользователя свою бабушку и вы поймёте что я имею в виду) интерфейсом, но имеют накладные расходы в виде большого потребления ресурсов машины на все уровни абстракций, необходимых для такой системы, а проблемы, с которыми пользователь может столкнуться, в большинстве случаев или нерешаемы или требуют недюжей технической подготовки.

Недавно, в одном чате был традиционный холивар на тему редакторов кода. И хотя он носил больше шуточный характер, меня пытались убедить, что VSCode простой редактор. Если задуматься об его устройстве, то язык не поворачивается называть его простым. В его основе лежит Electron – технология создания пользовательских приложений на базе веб-технологий. Говоря простым языком – основой приложения служит браузер. Если обратиться к спецификации веб-движка, то можно обнаружить, что по своему объёму она в несколько раз превышает спецификацию актуальных процессоров фирмы Intel. Плохой пример простоты. Но для пользователя мы имеем "простой и понятный" текстовый редактор. Какая разница, что для своей работы он требует машину, в сотни тысяч раз (по моим скромным оценкам это число сильно занижено) мощнее тех, с которыми человечество успешно летало на Луну и запускало беспилотные аппараты, достигшие поверхности Венеры?

Что же выбрать: сложные системы, где пользователь запоминает ритуалы и заклинания, которые помогают достигать цели, или простые системы, где пользователь сам, подобно волшебнику, составляет заклинания для достижения своих целей? Благодаря закону Мура (который на самом деле лишь приближённое к реальности наблюдение), мы сейчас можем использовать и то и другое. Каждый выбирает сам. Лично я предпочитаю находить баланс, выбирая KISS там, где это возможно.