Programación de computadoras: ¿Qué son los recursos (MOOC, libros, conferencias) para aprender ingeniería de software?

Como programador autodidacta, supongo que estoy seguro de que sabe cómo resolver muchos problemas, pero no siempre por qué esas soluciones funcionan. Este es un buen momento para leer sobre la teoría.

La teoría ayuda a abstraer la aplicación. Si conoce la estructura genérica de un algoritmo, puede aprender a implementarlo en múltiples idiomas y en múltiples plataformas. Así es como te conviertes en un ingeniero de software.

Un buen plan de estudios cubre programación imperativa (C, Fortran) y declarativa , y sus derivadas, Orientación a objetos (C ++, Java, C #) / Secuencias de comandos (Python, Ruby, JS) y Funcional (Haskell / Lisp) / Lógica (SQL) respectivamente . Juega con estos idiomas, especialmente Lisp y Haskell, para tener una idea de estas diferentes maneras de pensar. Swing by Automata and Algorithms mientras estás en ello. Ser competente con estas herramientas lleva aproximadamente un año. Debería sentirse cómodo escribiendo cualquier algoritmo que encuentre en cualquiera de estos idiomas.

Una vez que haya reducido los paradigmas básicos, le recomendaría varios temas avanzados de estudio, como Aprendizaje automático, Diseño de compiladores e Inteligencia artificial. Esto ayuda a consolidar su comprensión de cómo las abstracciones diferentes lo ayudan a resolver problemas. Recoge algunas matemáticas útiles mientras estás en ello; Te ayudará a abordar temas avanzados. Espera otros dos años en esto.

Finalmente, sal y construye algo. Como ya tienes experiencia, probablemente lo sepas, pero la verdadera habilidad requiere práctica. Cada parte de la teoría te hace un mejor practicante, y aunque parece que nunca te pondrás al día, tienes que darte tiempo para aprender.

Ah, y no dejes que nadie te diga que no puedes hacerlo. El mayor malentendido acerca de la informática es que debes aprenderlo en una universidad. Lo segundo es que no tienes que aprenderlo en absoluto. Ninguno es correcto; cuando se sienta cómodo con la codificación en una pizarra (obtenga uno de estos) pero sepa cómo hacer que funcione con el código de ejecución real, puede llamarse ingeniero de software.

Reconocer que siempre hay más que aprender es importante y parece que tienes esa actitud.

Lo mejor que puedes hacer es trabajar en proyectos de equipo. Ya sea que se trate de código abierto o tu pequeña idea de inicio, esta es la mejor manera de aprender. Asegúrese de tener un equipo diverso de personas de las que pueda aprender mucho. Y recuerde que siempre estamos aprendiendo: los más experimentados pueden aprender del nuevo desarrollador y lo hace regularmente si ella es inteligente.

Así que conoce y rodéate de las personas adecuadas.

Práctica, práctica y práctica.

Me gradué de Ingeniería de la Información. Mis amigos también me preguntan cómo podrían aprender más sobre la programación (les gustaría seguir con esta tendencia)

No estoy seguro de cuántas horas ha dedicado a la codificación. Pero si acabas de aprender algunos cursos en Coursera. Estás mucho más lejos de ser un codificador promedio.

No seas demasiado ambicioso para aprender varios idiomas al mismo tiempo. Elige uno primero y hazlo profesional. Piense en algunos problemas que enfrenta cada día / algunos trabajos que necesita hacer repetidamente. Programa de escritura para automatizar este tipo de cosas, para ahorrar tiempo y practicar.

No estoy seguro si esos cursos le proporcionan suficiente conocimiento de la base de datos. Si quieres ser un desarrollador de pila completa. Tienes que fortalecer esta área también.