Я уверен, вы знаете, что это такое. На самом деле этой проблеме уже черт знает сколько времени. В 1974 году на лекции Computer Programming as an Art (http://www.paulgraham.com/knuth.html) Дональд Кнут сказал следующее: “Проблема заключается в том, что программисты тратят слишком много времени, беспокоясь об эффективности не в том месте и не в то время. Преждевременная оптимизация — корень всех (или большинства) проблем в программировании”.

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

Вот несколько ошибок, которые мы совершаем: 1) Начинаем оптимизацию всего и вся еще до начала запуска проекта. 2) Оптимизируем код, который в итоге дает прирост на более 1%. 3) Оптимизируем код, который вообще не испытывает нагрузки, или который оптимизировать попросту не нужно, потому что он и так работает нормально. На самом деле ошибок этих намного больше, но суть неизменна, преждевременная оптимизация - это плохо, и вот почему.

Хорошо оптимизированный код зачастую достаточно сложно написать (при этом не стоит забывать о том, что требования к продукту склонны меняться). Еще сложнее этот код читать и понимать как он работает, особенно спустя несколько месяцев работы над другим кодом. В конце концов, на оптимизацию может уйти слишком много времени, и к моменту, когды вы, каконец, закончите, можно просто не успеть выпустить продукт. Как итог, вся ваша работа уйдет в мусорку.

Вывод достаточно прост. Относитесь к оптимизации ответственно. Нет никакого смысла оптимизировать все и сразу. Вначале просто напишите работающий код. Следуйте принципу KISS (https://ru.wikipedia.org/wiki/KISS_(принцип)). Сосредоточьтесь на функциональности, а не на скорости. Далее, запустите его в production, настройте метрики, определите качественные показатели, посмотрите как система ведет себя в реальной ситуации. И только потом, спустя некоторое время, получив обратную связь, проанализировав метрики и выявив реально узкие места, начинайте оптимизировать.