Creo que Zach Holman tiene una perspectiva interesante sobre el tema de la teoría clásica de CS en la programación profesional diaria.
En mi experiencia, creo que la teoría clásica de CS es una pequeña parte de lo que hace la mayoría de los desarrolladores de aplicaciones (lo que comúnmente llamamos programadores, codificadores o ingenieros, personas que crean aplicaciones de software, como http://quora.com) vs aplicaciones del sistema, como sistemas operativos o Git).
Parte de la programación es la idea de encapsulación o abstracción. Una vez que alguien resuelve un problema fundamental de CS complejo a través de un algoritmo, creamos rápidamente una abstracción para eso y lo construimos en un lenguaje o marco o paquete para que nadie más necesite resolverlo nuevamente.
- Suponiendo que todos estos algoritmos resuelven el mismo tipo de problema, ¿cuál se recomienda? ¿Y por qué?
- ¿Qué es un árbol binario desequilibrado y cuáles son sus usos?
- Si el tamaño de una matriz es 101 y el rango de números es de 0 a 99, solo un número viene 2 veces. ¿Cuál es ese número?
- ¿Qué algoritmo de búsqueda usa True caller?
- ¿Cuáles son las ventajas y desventajas de los algoritmos y la heurística en la resolución de problemas?
Si constantemente implementa algoritmos conocidos para el desarrollo web, probablemente lo esté haciendo mal, básicamente está reinventando la rueda.
Creo que conocer los algoritmos y la teoría es útil, pero en la programación diaria, se trata principalmente de implementar la lógica, las características y las reglas de negocios. ¿Duele saberlo? Absolutamente no. ¿Es necesario conocer la teoría CS clásica para el desarrollo web? Absolutamente no. Creo que DHH hace un gran trabajo al articular esto en su discurso principal “Writing Software”.