Depende de lo que quieras lograr. ¿Planeas ser un desarrollador de front-end? Back-end? Sistemas? Bases de datos? Hay una gran cantidad de opciones 🙂 Su primer paso debería ser cristalizar un rol que le gustaría cumplir, o un producto que le gustaría diseñar. Y luego trabajar hacia eso. Este proceso lo ayudará a descubrir lo que le gusta, lo que no le gusta e iterar su objetivo final a algo que considere satisfactorio.
Comenzar con los fundamentos de CS * rápidamente * es probablemente su mejor apuesta. Su ruta debe enfocarse en aprender sobre varios algoritmos, estructuras de datos y otros conceptos de sistemas / redes que forman el núcleo de la Ciencia de la Computación. Aprenda a analizar algoritmos y estructuras de datos en algún nivel básico antes de continuar, para poder predecir qué aspecto tendrá un buen algoritmo en comparación con uno malo. ¡Tener una imagen de alto nivel de las partes internas de una computadora nunca hace daño a nadie tampoco!
CLRS (el libro MIT Algorithms, llamado así por sus 4 autores) y SICP (mencionado en otra respuesta por Ari Shahdadi son libros geniales, pero no tienen una curva de aprendizaje fácil. El primero es más un compendio que un libro que ayudará a acelerar su aprendizaje. Tiende a ser muy matemático y es probablemente el material más riguroso sobre algoritmos fuera de ” El Arte de la Programación de Computadoras ” de Knuth. SICP, por otro lado, implica un Esquema de aprendizaje, una variante clara que puede tener una en la curva de dificultad para entrar. Si bien son excelentes opciones para el largo plazo, pueden no ser muy útiles para ser un programador útil en un corto período de tiempo.
Recomiendo comenzar con el “Manual de diseño de algoritmos” de Steven Skiena, donde aborda todos los aspectos de los algoritmos, grandes y pequeños, en prosa limpia y ejemplos de uso inmediato en C / C ++. [Un libro similar son los algoritmos de Sedgewick, que aparecen en las ediciones de Java y C ++]. Personalmente, recomendaría comenzar con C ++ como su idioma para aprender. Python y / o Ruby deben ser tu segundo idioma, aunque comenzar con cualquiera de ellos no te hará daño, pero puede limitar tu forma de pensar.
- ¿Cuál es tu mejor manera de aprender inglés?
- Me gustaría aprender a programar pero no me gusta crear juegos o aplicaciones, ¿hay algo más?
- ¿Cuáles son algunas de las habilidades más rentables y útiles que se pueden aprender?
- ¿Cuál es la mejor manera de aprender química orgánica?
- Cómo aprender algunas grandes habilidades como hombre en 4 meses
Repase los primeros 8 a 10 capítulos del libro de Skiena y, utilizando estos conceptos, intente resolver algunas de las preguntas de programación en línea, como el Proyecto Euler, el Juez de Esfera en línea o el Juez de UvA en el idioma que elija. Una vez que pases un par de semanas en esto, te recomiendo que elijas uno de Python o Ruby, dependiendo de lo que te guste más (¡una elección totalmente personal, me inclino por Python!) Y un marco web como Rails o Django. Si bien los marcos web basados en Java se utilizan mucho, es probable que progrese más rápido con uno de estos.
En este punto, puede optar por crear un servicio web sobre estos marcos que es algo que le gustaría usar y profundizar en los temas que necesita para tener éxito. Por ejemplo, sería bueno saber aquí, teniendo en cuenta el HTML y CSS, un poco de Javascript y el diseño básico de la base de datos, y le permitirá crear una pila de aplicaciones desde la interfaz de usuario hasta el backend.
¡Buena suerte!