No estoy seguro de cuánto tiempo dedican las personas que realizan concursos de programación a convertirse en mejores ingenieros de software, pero diría esto:
Si desea que su código haga lo que hace, solo necesita resolver el problema en cuestión y ponerlo en el código.
Sin embargo, si desea que su código funcione correctamente Y sea óptimo (resuelva el problema lo suficientemente rápido y use la menor cantidad de espacio posible), entonces el conocimiento profundo de estructuras de datos y algoritmos es crucial. Las estructuras de datos le enseñan a elegir el dispositivo de almacenamiento óptimo para el problema correcto, mientras que el análisis de algoritmos lo ayuda a encontrar soluciones óptimas en general y a comprender por qué algunos algoritmos son mejores que otros. Ser crítico con tu trabajo viene aquí.
- ¿Cuáles son algunos errores comunes que hacen los propietarios de productos que perjudican a los desarrolladores al crear historias de usuarios?
- ¿Qué tipo de equipo y software debería estar disponible en el laboratorio * perfecto * para el desarrollo de sistemas integrados?
- ¿Qué plataformas de blogs tienen el mejor soporte para escribir sobre programación?
- ¿Qué tipo de política ocurre en las grandes compañías de software?
- ¿Cuáles son las ventajas y desventajas de usar OS X vs Ubuntu para el desarrollo / programación web?
Por lo tanto, puede ser totalmente un ingeniero de software sin un conocimiento profundo de DS y Algoritmos, pero eso no siempre sería lo mejor a medida que los proyectos se hacen más y más grandes. El error de optimización más pequeño puede costarle mucho a largo plazo, por lo que le sugiero que aprenda el análisis de algoritmos y fortalezca su conocimiento en estructuras de datos. Aprenderás muchas habilidades útiles a lo largo del camino (de hecho, agudizarás tus habilidades para resolver problemas, que son las más importantes en mi opinión). Esto también le enseñará buenas prácticas de diseño:
- Pensando en tus algoritmos
- Elegir la estructura de datos correcta para la tarea correcta
- No apresurarse de cabeza al problema. Tomar pasos lentos hasta que lo haya diseccionado
- Darse cuenta de que el uso del tiempo y el espacio son importantes a largo plazo
- Probar su código a fondo. Aprender a hacer análisis de algoritmos significa aprender a lidiar con casos extremos.
Como sugerencia, lea Introducción a los algoritmos de CLRS. Es un buen libro que le enseña las estructuras de datos fundamentales, el análisis de algoritmos, así como algunos algoritmos geniales.
¡Salud!