Софтверное мышление 2
Вообще любые обобщения легко разбиваются примерами из жизни. Поэтому я абсолютно не возражаю против того, чтобы мой предыдущий пост был разгромлен, так как он оформлен как обобщение, как некое универсальное правило.
Я сказал про универсальные роботы, хотя таких роботов у нас-то и нет. Дойдя до этой точки, я начал думать - а что же я хотел сказать?
Наверное такое
- Если нужно придумать проект, надо прикинуть случаи, с которыми он может столкнуться. И выбрать сначала решение для наиболее частых случаев. Если на этом делается бизнес (не мой случай), то и этого может хватить. Затачивать под все варианты невозможно даже в программах. Жизнь всегда богаче.
Но если есть выбор - можно решить железом или софтом - то выбор софта имеет такие преимущества
- сколько бы он не стоил, он легко тиражируется, низводя стоимость и скорость копии до ничтожных величин
- его очень легко менять
Тогда "софтверный принцип" - это скорее про то, что задачи не надо решать целиком и тем более в лоб. Посмотрите, может быть эту огромную кучу снега можно объехать? А на следующем уровне планирования - может быть вообще можно поехать по другой улице? А ступенькой выше - "может быть, имеет смысл продавать это в Калифорнии, а тут мы просто дешево экспериментируем?"
Софтверный подход - он про постоянный поиск пути. Шутка.
Никаких обобщений впредь. Только эвристики*
*Эвристика - (здесь) не доказанное утверждение, которое дает положительный результат на достаточно большом количестве опытов, чтобы его и дальше можно было тупо придерживаться, пока не упрешься в конкретные лимиты
Я сказал про универсальные роботы, хотя таких роботов у нас-то и нет. Дойдя до этой точки, я начал думать - а что же я хотел сказать?
Наверное такое
- Если нужно придумать проект, надо прикинуть случаи, с которыми он может столкнуться. И выбрать сначала решение для наиболее частых случаев. Если на этом делается бизнес (не мой случай), то и этого может хватить. Затачивать под все варианты невозможно даже в программах. Жизнь всегда богаче.
Но если есть выбор - можно решить железом или софтом - то выбор софта имеет такие преимущества
- сколько бы он не стоил, он легко тиражируется, низводя стоимость и скорость копии до ничтожных величин
- его очень легко менять
Тогда "софтверный принцип" - это скорее про то, что задачи не надо решать целиком и тем более в лоб. Посмотрите, может быть эту огромную кучу снега можно объехать? А на следующем уровне планирования - может быть вообще можно поехать по другой улице? А ступенькой выше - "может быть, имеет смысл продавать это в Калифорнии, а тут мы просто дешево экспериментируем?"
Софтверный подход - он про постоянный поиск пути. Шутка.
Никаких обобщений впредь. Только эвристики*
*Эвристика - (здесь) не доказанное утверждение, которое дает положительный результат на достаточно большом количестве опытов, чтобы его и дальше можно было тупо придерживаться, пока не упрешься в конкретные лимиты