¿Qué conocimiento debo requerir para crear un software profesional?

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

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.

Al principio, debe tener una dirección de qué hacer exactamente, mencionó aplicaciones (supongo que son aplicaciones de Android / iOS), aplicaciones integradas (hoy en día se trata más de IoT lanzado), aplicaciones de escritorio (solo se usa la computadora de escritorio de Windows más , por lo que es probable que sea WPF).

Lo que dije son diferentes direcciones y usan diferentes herramientas e idiomas.

Entonces,

Si es Android Apps, primero debe aprender Java, luego vaya a Desarrolladores de Android;

Si es iOS Apps, necesita aprender Objective-C, mejor ahora es Swift 3, luego vaya a Apple Developer;

Si IoT Apps, este sitio es un buen comienzo para usted La comunidad dedicada al aprendizaje de hardware .;

Si la aplicación de escritorio de Windows, primero aprende C #, luego Introducción a WPF de la biblioteca MSDN.

Será mejor que tenga algunos proyectos virtuales o reales que lo impulsen a hacer el ejercicio, solo leer libros nunca lo hará tener la capacidad de ser profesional.

Debe adquirir los conocimientos de programación …

No solo conoce un idioma (al menos uno), sino también algoritmos, estructuras de datos, cómo diseñar / estructurar una aplicación, cómo probar y depurar, etc.

¡Buena suerte!