El camino para ser bueno en la programación es el mismo que para cantar o tocar música: practicar, practicar, practicar. Si pasas suficiente tiempo desarrollando software regularmente durante varios años, es probable que seas bueno en eso, ya sea dentro o fuera de las horas de trabajo.
Ahora, además de pasar más tiempo practicando, hay otra razón por la cual los profesionales generalmente se vuelven mejores que los aficionados en cierto sentido (tanto en música como en programación). Si es un profesional, debe realizar tareas que no necesariamente le gustan, pero que pertenecen al trabajo más amplio de desarrollo de software (por ejemplo, pruebas, discusiones con clientes, redacción de documentación, configuración del entorno de desarrollo / desarrollo, escritura de scripts de compilación, etc. ) Y de vez en cuando también está presionado para entrar en áreas desconocidas, para aprender nuevos idiomas o plataformas. Como aficionado, no estás obligado a hacer nada que no quieras, lo que hace probable que te mantengas dentro de tu zona de confort durante la mayor parte de tu vida. En otras palabras, puede limitarse fácilmente a una o algunas áreas específicas que le gustan más,
OTOH, muchos desarrolladores profesionales también caen en esto, permaneciendo en la misma compañía haciendo el mismo trabajo de rutina sin apenas aprender nada nuevo durante décadas ... Entonces, la clave para mejorar es su actitud. Si sigue aprendiendo y busca conscientemente oportunidades para salir de su zona de confort hacia un territorio nuevo y desconocido, eventualmente superará a los enjambres de "profesionales" que se fosilizan lentamente. Una buena forma de hacerlo puede ser contribuir a algunos proyectos de código abierto.
Una lectura recomendada es The Pragmatic Programmer: From Journeyman to Master , con muchos consejos excelentes y muy prácticos sobre cómo seguir mejorando.