¿Un buen programador ? Un programador es aquel que usa varias tecnologías para realizar una tarea. ¿Dominar las estructuras de datos y los algoritmos le ayuda a resolver un problema? Seguro. ¿Todos los maestros de DSA son buenos programadores? Ciertamente no.
Debería pensar en DSA (Data Structures / Algorithms) como otro kit de herramientas dentro de su caja de herramientas . Si desea ver su caja como una caja de herramientas ordinaria, tiene diferentes secciones de su caja asignadas para diferentes cosas. Sus tuercas / tornillos / destornilladores (idiomas y sus bibliotecas), etc. En este ejemplo, el DSA probablemente se incluiría en sus manuales o sus ecuaciones físicas .
DSA proporciona mucho contexto matemático a las diversas herramientas familiares que usan los programadores: asignación de memoria, listas, pilas, colas, etc. Al igual que un constructor promedio no necesita saber sobre dinámicas complejas, un programador promedio no necesita saber sobre el comportamiento de pilas o listas desde una perspectiva matemática.
- Tengo conocimiento de estructuras de datos y algoritmos, pero me falta programación competitiva, ¿cómo debo mejorar? ¿Puedo sobrevivir a la competencia de hoy?
- ¿Debo aprender algoritmos primero antes de aprender programación? Si es así, ¿cuál es la mejor manera de aprender algoritmos?
- ¿Cuáles son las limitaciones de los árboles de búsqueda binarios?
- ¿Debo ir a un curso de algoritmos o comenzar a resolver problemas en TopCoder / CodeChef, etc.?
- ¿Recomendaría usar HackerRank para mejorar las habilidades del algoritmo? ¿Por qué?
Sin embargo, comprender ese contexto le permitirá pensar sobre su problema desde una perspectiva diferente. ¿Conoces el argumento del pollo antes del huevo? ¿Qué viene primero: el plano de una casa o la casa? ¿Qué viene primero: los conceptos matemáticos necesarios para visualizar la casa, o el plano que explica todo eso? Si aprende a descomponer programas y problemas en varias estructuras matemáticas, no solo lo ayudará a resolver su problema más fácilmente, sino que su solución también persistirá en el tiempo y probablemente no necesite tanta mejora.
Aprender DSA se trata de convertirse en un “ingeniero” en lugar de ser simplemente un programador. Le enseña la “física” de la programación y le brinda conceptos matemáticos técnicos para garantizar que su solución no solo sea correcta, sino también eficiente y robusta.
Espero que esto ayude.