Personalmente odio los productos de Microsoft, por lo que evitaría .Net framework y C # solo porque no quiero trabajar en Windows como un trabajo (o en casa tampoco, tbh).
Creo que comenzar con un lenguaje como Java es probablemente un error, porque te toma demasiado la mano. Comience con proyectos de ensamblaje o microcontroladores basados en C (PIC o Arduino, por ejemplo). Lea “El lenguaje de programación C” de Kernighan & Ritchie si va a comenzar con C, pero en el mejor de los casos, usa tanto ensamblaje como C en diferentes proyectos.
Una vez que se sienta muy cómodo con los microcontroladores, instale Linux (directamente en su PC o dentro de un VirtualBox) y realice proyectos más grandes en C y / o Ruby. Este tipo tiene muchas cosas que puedes intentar implementar:
- No puedo conseguir un trabajo como graduado de ingeniería de software en mi país (Sultanato de Omán). He creado un sitio web que muestra mi CV y proyectos anteriores. ¿Me considerarías para un puesto de nivel de entrada? ¿No soy digno como ingeniero de software? ¿Qué debo hacer?
- Quiero abrir una empresa de desarrollo de software. Tengo 18 años, estoy a punto de graduarme de HS, y casi no tengo experiencia en programación. ¿Qué debo hacer? ¿Puedo hacerlo?
- ¿Cuáles son las cosas que un ingeniero informático debería aprender en sus 4 años?
- ¿Cuáles son algunos buenos tutoriales en video sobre patrones de diseño en C ++, Java y Python?
- ¿Cuál es la mejor manera de encontrar clientes en los EE. UU. Como una empresa de outsourcing de desarrollo de software?
CodeKata
Si vas a aprender rubí / rieles, lee algunos de estos:
Vídeos de Screencast de Ruby on Rails
Aprenda a escribir código de prueba unitaria y siga la estrategia de “desarrollo orientado a prueba”. Las pruebas unitarias, las pruebas automatizadas y la capacidad de codificar grandes proyectos con mucho cuidado son algunas de las cosas principales que separan a los programadores aficionados de los programadores profesionales.
Tal vez invente su propio idioma e intente escribir un compilador para él usando lex y yacc. Haga un gran proyecto con múltiples procesos, descubra cómo funcionan los semáforos y la comunicación entre procesos.
Luego pase a C ++, Objective-C o Swift. Aprenda Java solo si desea programar para teléfonos Android.
Si está utilizando C ++, he tenido buenas experiencias con Google Test Framework para las pruebas del sistema.