Примечание. Скопировано из моего блога Awell Health (я там больше не работаю)

Каждое решение проблемы можно оценить по эффективности (т. е. насколько легко его реализовать) и результативности (т. е. насколько хорошо оно решает проблему).

Представлено в формате 2 на 2 (как я, хороший маленький бывший консультант по вопросам управления):

Обратите внимание на две вещи:

  1. корреляция между эффективностью и результативностью противоречит здравому смыслу

Это нелогично. Да, простые решения проще в реализации и
более эффективны! Причина в том, что они:

  • легче изменить (потому что их легче понять)
  • менее хрупкий (поскольку ошибки прячутся во мраке сложности*)

2. Мой опыт рисования 2 на 2

Обратите внимание на следующие две вещи:

1. Связь между эффективностью и результативностью противоречит здравому смыслу
Это противоречит здравому смыслу. Да, простые решения проще в реализации и
более эффективны! Причина в том, что они:

  • легче изменить (потому что их легче понять)
  • менее хрупкий (поскольку ошибки прячутся во мраке сложности*)

2. Мой опыт рисования 2 на 2
Целенаправленная практика, в жизни нет коротких путей.

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

Причины, по которым программисты часто усердно работают вместо того, чтобы наслаждаться чаем:

  1. Это тяжелая работа, чтобы найти наиболее эффективное и действенное решение. Там полно неопределенности, много шаришь в темноте. Вы не делаете видимых успехов…
  2. Мы, программисты, любим писать код. Нет ничего подобного. Расширение вашей интенциональности с помощью машины**… рай. Так что же нам делать? Мы выбираем первое решение, которое приходит нам в голову, и реализуем его. Мы упускаем самое простое решение.

Так должны ли мы всегда откладывать внедрение решения до тех пор, пока не найдем самое простое и наиболее ценное решение?

Нет, потому что время разработки = время поиска +время реализации

Где

время поиска = время поиска решения

Время реализации = время реализации решения

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

Поэтому нужно найти баланс.

Столкнувшись с балансировкой, стоит задуматься, на чью сторону ваша предвзятость. Тратите ли вы в среднем слишком много или слишком мало времени на поиск наилучшего решения?

Я думаю, что в среднем мы не тратим достаточно времени на поиск лучшего решения, потому что:

1) В 2021 году Agile наконец-то колонизировал всю известную вселенную, так что вы не «круты», если не пишете код***

2) заставлять компьютер что-то делать — то есть программировать — очень весело, поэтому, как только у вас есть первое решение, вы просто спешите его закодировать.

Заключение? Потратьте время на поиск самого простого и эффективного решения. Вы будете чувствовать себя прекрасно. Это отсроченное удовольствие.

*: кто вам сказал, что программисты не могут быть поэтами?

**: кто вам сказал, что программисты не могут быть претенциозными псевдофилософами?

***: Честно говоря, я думаю, что Agile — это здорово. Пожалуйста, только не используйте это как предлог, чтобы не писать отличные спецификации.