Categories:

Софтверное мышление 2

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

Я сказал про универсальные роботы, хотя таких роботов у нас-то и нет. Дойдя до этой точки, я начал думать - а что же я хотел сказать?

Наверное такое
- Если нужно придумать проект, надо прикинуть случаи, с которыми он может столкнуться. И выбрать сначала решение для наиболее частых случаев. Если на этом делается бизнес (не мой случай), то и этого может хватить. Затачивать под все варианты невозможно даже в программах. Жизнь всегда богаче.

Но если есть выбор - можно решить железом или софтом - то выбор софта имеет такие преимущества
- сколько бы он не стоил, он легко тиражируется, низводя стоимость и скорость копии до ничтожных величин
- его очень легко менять

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

Софтверный подход - он про постоянный поиск пути. Шутка.

Никаких обобщений впредь. Только эвристики*

*Эвристика - (здесь) не доказанное утверждение, которое дает положительный результат на достаточно большом количестве опытов, чтобы его и дальше можно было тупо придерживаться, пока не упрешься в конкретные лимиты