March 21st, 2008

Не думай о секундах свысока

 
Зачем знать географию, когда есть извозчики?
(краткое содержание фрагмента диалога,
«Недоросль», Фонвизин)

 

А действительно, представьте, что вам куда-то надо доехать на такси. Вот вы садитесь в машину и привычно называете адрес. Вместо того, чтобы сорваться с места и домчать вас куда надо, таксист спрашивает: «а по какому маршруту ехать». Вы ему: «да через третье кольцо». Такстист: «ни фига, давайте подробно». Вооружившись сборником карт вы за полчаса прокладываете подробный маршрут, но таксисту и этого мало. Теперь он спрашивает, с какой скоростью в каком месте ехать. Что делать, когда встречается пробка. Объезжать? Ждать? Тоже в каждом месте отдельно. Где делать остановки, чтобы вы могли выйти покурить. Каким бензином заправить машину. По какой цене его покупать и где. Какое масло залить. За сколько секунд да поворота включать поворотный сигнал. Сколько колёс установить на машину. Простой вопрос? Тогда ещё сколькими винтами их прикрутить и на сколько оборотов поворачивать каждый. Каким сверлом просверлить недостающие дырки. В какие моменты пути следует включить дворники, а когда и вовсе выйти и протереть стекло тряпкой.

На ваш недоумённый вопрос «какого хрена?» таксист ответит, что дикий вы, батенька, знать ничего не желаете. А ведь чтобы воспользоваться услугами такси, надо хорошо разбираться в вопросе. Даже странно, что таксисты так не делают. Ведь делают же так разработчики программ. И ничего, всё нормально. Достаточно только заклеймить потенциального пользователя «ламером» и он, устыдившись, заткнётся и возьмёт, что есть. Не отстают от разработчиков программ и разработчики приборов. В том числе и бытовых. Читайте инструкции, граждане, повышайте свой культурный уровень.

Вообще программу, написанную юным дарованием, обладающим недюженным талантом и ещё более недюженной самооценкой («я – гуру, а вы все – старичьё») весьма легко с первого же взгляда отнести в группу программ, написанных юными дарованиями. Точнее, было бы легко, если бы часть более взрослых дарований не грешила бы иногда тем же самым. Условие необходимое, но не достаточное: программа юного дарования будет стремиться затребовать от пользователя все необходимые настройки на каждой итерации процесса её использования. Причём, затребовать в полной мере, не размениваясь на попытки угадать наиболее вероятные настройки и предложить их хотя бы как начальный вариант в диалоге настроек.

Юное дарование, оно же как думает: откуда я могу знать, что нужно пользователю? У меня есть мощный алгоритм, а пользователь пусть задаст все нужные ему параметры. В этом гибкость. Не надо лишать пользователя гибкости. Юные дарования вообще очень часто говорят о гибкости.

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

Что вышло в результате? Дорога вместо часа заняла двое суток, из которых 90% времени была потрачена на подбор параметров, а ещё 9% на исправление ошибок при их выборе. Стало ли быстрее? Нет. Стало гораздо медленнее. С большой вероятностью клиент вообще послал таксиста в баню и пошёл искать вменяемого таксиста.

Так оно и есть, при использовании чего либо, пользователь знает нюансы используемого хуже, чем его разработчик. Нюансы, конечно, знать весьма полезно. Однако полезно оно, когда альтернативой является плевание в потолок или просмотр новостей по первому каналу. В ряде же случаев пользователь на деле является разработчиком более сложной вещи. Клиент таксиста мог быть академиком, который ехал на постановку эксперимента века и таксист своим «неламерским» подходом потратил ценное время академика, в ином случае бы потраченное на эксперимент. Пресловутая гибкость в случае с такси академику нафиг не сдалась. Ему надо было просто попасть в свой институт. Пусть не самым идеальным способом, а просто одним из наиболее быстрых – таксист ведь в среднем действительно знает более быстрый способ, нежели его клиент.

Collapse )

Кратко про С++ и прочий низкий уровень

 

Говорят, что при правильном использовании любого языка всё будет отлично работать. Говорят, что ошибки проистекают от непрофессионализма, а язык и средства разработки тут не при чём.

Представьте, что определённая последовательность звуков вызывает конец света. Насколько медленнее стали бы говорить даже профессиональные ораторы.

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