Lo más importantes es
tener la convicción que deseas ser programador. Cuando lo vez desde afuera es muy diferente a cuando lo vives. No todo sale a la primera, muchas veces tienes problemas con X módulo de un sistema, un bug en producción que altera los ánimos en Gerencia, migración de servidor y los problemas que puede acarrear, etc. Así que, debes de desarrollar tu mente para resolver problemas.
Si entras a un instituto o universidad, nunca te conformes con lo que te diga/enseñe el profesor. Aunque te parezca algo impresionante, no lo es y afuera, encontrarás mejores formas, mejores técnicas de hacer lo que ves en la Universidad. Siempre indaga más y más, supérate. Estudiar luego de clases de forma autodidacta acelerará tu aprendizaje como no tienes idea.
Nunca te quedes con la teoría. La teoría no hace al maestro, la práctica lo hace. Es cierto que la teoría en el mundo de desarrollo es vital, pero más importante es la experiencia. Y la experiencia, la obtienes no cuando haces bien las cosas, si no cuando te equivocas y tienes que resolver el inconveniente. Desarrolla, prueba, corrige vuelve a probar y a corregir y así en un bucle.
Y el problema que veo más común: No te creas un sabelotodo. Me ha pasado y te lo digo por experiencia. Cuando recién empiezas y aprendes un poco más que tus compañeros, te crees superior, más inteligente y cosas por el estilo. No cometas éste error garrafal. La humildad en todo aspecto de la vida, te hace ser mejor persona y, en éste mundo, te hace un mejor programador.
A menudo, en el mundo real, el laboral, te encontrarás mejores programadores que tú, y si no tienes humildad, te verás afectado. Sé humilde, acepta cuando alguien es mejor que tú, aprende a escuchar, a aceptar sugerencias, correciones de programadores mejores que tú.
Absorbe el conocimiento del programador avanzado, porque ésto él lo ha ganado por experiencia, por errar, por resolver problemas.
Sobre programación en concreto, te recomiendo:
- Seguir las buenas prácticas de programación.
- Hacer un código limpio y fácil de mantener (Aquí tienes un excelente libro).
- Buscar siempre la manera más eficiente de realizar un proceso.
- Escribir algoritmos eficientes y eficaces (léase la diferencia de ambos términos).
- Usar siempre los estándars (salvo excepciones)