Creo que esta pregunta tiene una perspectiva histórica.
En los "viejos tiempos" (de los cuales no soy un testigo personal, así que esta es solo mi reconstrucción de esa era; siéntase libre de corregirme si experimentó las cosas de manera diferente). . Así que todo la gente escribió entonces tenía que ser muy eficiente. Por lo tanto, tenían que pensar mucho e investigar para inventar los mejores algoritmos para lograr el espacio / tiempo necesario para realizar el trabajo. Otro factor en esto fue que los desarrolladores estaban trabajando principalmente en lo que podríamos llamar infraestructura : sistemas operativos, pilas de protocolos, compiladores, controladores de dispositivos, editores, etc. Todo esto es usado por mucha gente , así que el rendimiento realmente hace una diferencia.
Hoy en día, tenemos un increíble HW con procesadores multinúcleo y Gigabytes de memoria, incluso en una computadora portátil básica (diablos, incluso en un teléfono móvil). Lo que naturalmente significa que, en muchos casos, el rendimiento, por lo tanto el algoritmo, dejó de ser el problema central, y es más importante proporcionar una solución rápida que proporcionar una solución rápida. OTOH tenemos montones de marcos que nos ayudan a resolver problemas, y encapsulan una gran cantidad de algoritmos al mismo tiempo. Así que incluso cuando no estamos pensando en los algoritmos, es posible que estemos usando muchos de ellos en segundo plano.
Sin embargo, todavía hay áreas donde el rendimiento es importante. En estas áreas, aún debe pensar mucho acerca de sus algoritmos antes de escribir código. La razón es que el algoritmo es el centro del diseño, que determina una gran cantidad de estructuras de datos y relaciones en el código circundante. Y si descubre demasiado tarde que su algoritmo no está escalando bien (por ejemplo, es O (n 3 ), por lo que se vio bien y rápido cuando lo probó en 10 elementos, pero en la vida real lo hará. tener millones), es muy difícil, propenso a errores y lleva mucho tiempo reemplazarlo en el código de producción. Y las microoptimizaciones no lo ayudarán si el algoritmo fundamental no es el adecuado para el trabajo.