Lea http://norvig.com/21-days.html que ofrece una visión muy útil. Necesitarás muchos años de trabajo.
Tenga en cuenta que la programación no se trata solo de conocer un lenguaje de programación, sino de resolver problemas con la ayuda de las computadoras. Los lenguajes de programación son herramientas, y debes conocer varios de ellos. Lea SICP e Introducción a Algoritmos y Sistemas Operativos: Tres Piezas Fáciles y Pragmática del Lenguaje de Programación
Primero sugiero que se familiarice con el software libre (por lo que recomiendo instalar y usar alguna distribución de Linux, ya que está hecho principalmente de software libre), y estudiar y contribuir a algún proyecto de software libre existente (encontrará muchos de ellos en github y sourceforge). Lea también Programación avanzada de Linux
- ¿Qué equipo tiene más posibilidades de ser llamado a una ubicación en el sitio desde una ubicación en alta mar en una empresa de servicios típica: un equipo de control de calidad o un equipo de desarrollo, y por qué?
- ¿Crees que el mercado para construir y vender aplicaciones de software está saturado?
- ¿Será exitosa una red social basada en enviar fragmentos de código y dar / recibir revisiones de código?
- ¿Cómo podemos lograr el mismo tipo de codificación de productividad en Node.js que en Ruby on Rails?
- ¿Cuáles son algunos de los software más grandes que usan Lisp en el backend?
Para aplicaciones web, obtenga más información sobre HTTP; puede considerar codificar algún código Ocaml con Ocsigen
Para aplicaciones de escritorio, use un kit de herramientas de widgets GUI como Qt o GTK
Si desea crear una aplicación incrustada que tenga una interfaz web básica, considere usar una biblioteca de servidor HTTP como libonion.