Примечание. Скопировано из моего блога Awell Health (я там больше не работаю)
Каждое решение проблемы можно оценить по эффективности (т. е. насколько легко его реализовать) и результативности (т. е. насколько хорошо оно решает проблему).
Представлено в формате 2 на 2 (как я, хороший маленький бывший консультант по вопросам управления):
Обратите внимание на две вещи:
- корреляция между эффективностью и результативностью противоречит здравому смыслу
Это нелогично. Да, простые решения проще в реализации и
более эффективны! Причина в том, что они:
- легче изменить (потому что их легче понять)
- менее хрупкий (поскольку ошибки прячутся во мраке сложности*)
2. Мой опыт рисования 2 на 2
Обратите внимание на следующие две вещи:
1. Связь между эффективностью и результативностью противоречит здравому смыслу
Это противоречит здравому смыслу. Да, простые решения проще в реализации и
более эффективны! Причина в том, что они:
- легче изменить (потому что их легче понять)
- менее хрупкий (поскольку ошибки прячутся во мраке сложности*)
2. Мой опыт рисования 2 на 2
Целенаправленная практика, в жизни нет коротких путей.
Итак, почему разработка программного обеспечения сложна? Просто каждый раз выбирайте наиболее эффективное и действенное решение и идите кушать торт.
Причины, по которым программисты часто усердно работают вместо того, чтобы наслаждаться чаем:
- Это тяжелая работа, чтобы найти наиболее эффективное и действенное решение. Там полно неопределенности, много шаришь в темноте. Вы не делаете видимых успехов…
- Мы, программисты, любим писать код. Нет ничего подобного. Расширение вашей интенциональности с помощью машины**… рай. Так что же нам делать? Мы выбираем первое решение, которое приходит нам в голову, и реализуем его. Мы упускаем самое простое решение.
Так должны ли мы всегда откладывать внедрение решения до тех пор, пока не найдем самое простое и наиболее ценное решение?
Нет, потому что время разработки = время поиска +время реализации
Где
время поиска = время поиска решения
Время реализации = время реализации решения
Поэтому, если вы продолжите искать лучшее решение в какой-то момент, нахождение времени решения затмит любое время реализации.
Поэтому нужно найти баланс.
Столкнувшись с балансировкой, стоит задуматься, на чью сторону ваша предвзятость. Тратите ли вы в среднем слишком много или слишком мало времени на поиск наилучшего решения?
Я думаю, что в среднем мы не тратим достаточно времени на поиск лучшего решения, потому что:
1) В 2021 году Agile наконец-то колонизировал всю известную вселенную, так что вы не «круты», если не пишете код***
2) заставлять компьютер что-то делать — то есть программировать — очень весело, поэтому, как только у вас есть первое решение, вы просто спешите его закодировать.
Заключение? Потратьте время на поиск самого простого и эффективного решения. Вы будете чувствовать себя прекрасно. Это отсроченное удовольствие.
*: кто вам сказал, что программисты не могут быть поэтами?
**: кто вам сказал, что программисты не могут быть претенциозными псевдофилософами?
***: Честно говоря, я думаю, что Agile — это здорово. Пожалуйста, только не используйте это как предлог, чтобы не писать отличные спецификации.