🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

Легко и просто

June 5, 2012 in Engineering philosophy

Программисты склонны путать представления о внутренней и внешней простоте своих программ.

Более того, часто я вижу предпочтение внутренней простоты перед внешней. Например, если тебе нужно предоставить возможность редактирования статей на сайте, ты решишь вставить обыкновенную TEXTAREA и предложишь клиенту изучить HTML, “это ведь несложно”.

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

Сложно написать алгоритм автоматического определения выдержки и диафрагмы в фотоаппарате. Легко нажать спусковую кнопку и снять классную фотографию.

Легко вывалить на пользователя простыню из полей для заполнения структуры данных. Но легко заполнить красиво продуманную, простую форму. Которую сложно спроектировать.

(Когда ты представляешь простую форму, о чем ты думаешь - о структурно простой форме из полей да подписей, или о простой в использовании форме с подсказками и проверками?)

Легко загружать параметры статьи на блоге из внедренного в неё фрагмента YAML. Сложно редактировать эти параметры при публикации (чтобы не говорили, а нажать кнопку “сохранить” в онлайн-редакторе WordPress все равно проще, чем опубликовать статью через Jekyll.)

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

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

Предлагаю в своей работе ценить также и внешнюю простоту применительно к другим.

Buy me a coffee Понравился пост? Купи мне кофе