Estoy aprendiendo Java ahora unos días.
Quiero ser un desarrollador empresarial exitoso. Entonces, ¿qué algoritmos y estructuras de datos debo conocer? ¿Qué libros me recomendarías?
Para ser un desarrollador Java exitoso, ¿necesito conocer todos los algoritmos avanzados como los que se dan en CLRS?
¿Me puede sugerir una lista de los temas que debería aprender en el orden descendente de su prioridad?
Dime el nombre de algunos temas que debo saber. ¿Te gusta buscar, ordenar, gráficos, árboles, etc.?
Es bueno que esté ansioso por ampliar y mejorar sus habilidades de programación. Sin embargo, es importante no tratar los algoritmos como un catálogo de cosas para memorizar. Lo que necesita saber para convertirse en un buen desarrollador (en Java o cualquier otra cosa) es comprender el análisis algorítmico.
Aprende esto aprendiendo unas pocas estructuras de datos y algoritmos, y aprendiendo a analizar su rendimiento en términos de tiempo y espacio (memoria). Búsqueda, clasificación, gráficos, árboles, montones, montones y todas esas cosas buenas. Esto también debería seguir algunos conceptos básicos de la teoría de la computación y las matemáticas discretas (incluso si en el ámbito de Java nunca podemos usar esos dos temas directamente, sus beneficios son indirectos).
Separe el aprendizaje de un lenguaje de programación (en su caso Java) con el aprendizaje del análisis algorítmico (que es diferente de la "memorización" de algoritmos y estructuras de datos).
"Algorithms in a Nutshell" de George T. Heineman, Gary Pollice y Stanley Selkow es un buen comienzo. "Algorithms" de Sanjoy Dasgupta, Christos Papadimitriou y Umesh Vazirani es otro buen libro de texto de pregrado.
Lo mejor es tomar cursos de 9-12 créditos en programación antes de tomar un curso de pregrado, de nivel 3000 en algoritmos. Salvo eso, el autoestudio con los dos libros que mencioné podría ser una buena alternativa (el autoestudio podría no ser para todos).
¡Buena suerte!