Interesarse en la programación y hacer algo porque es divertido. Asegúrese de que siga siendo lo suficientemente divertido como para estar dispuesto a dedicar sus diez años / 10,000 horas.
Programa . El mejor tipo de aprendizaje es aprender haciendo. Para decirlo de manera más técnica, "el nivel máximo de rendimiento para las personas en un dominio dado no se alcanza automáticamente en función de la experiencia extendida, pero el nivel de rendimiento puede ser incrementado incluso por individuos altamente experimentados como resultado de esfuerzos deliberados para mejorar ". (p. 366) y "el aprendizaje más efectivo requiere una tarea bien definida con un nivel de dificultad apropiado para el individuo en particular, retroalimentación informativa y oportunidades para la repetición y corrección de errores". (p. 20-21) El libro Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life es una referencia interesante para este punto de vista.
Hable con otros programadores; leer otros programas . Esto es más importante que cualquier libro o curso de capacitación.
Si lo desea, ingrese cuatro años en una universidad (o más en una escuela de posgrado). Esto le dará acceso a algunos trabajos que requieren credenciales, y le dará una comprensión más profunda del campo, pero si no disfruta de la escuela, puede (con cierta dedicación) obtener una experiencia similar por su cuenta o en el trabajo. . En cualquier caso, el aprendizaje de libros solo no será suficiente. "La educación en ciencias de la computación no puede convertir a nadie en un programador experto de la misma manera que estudiar pinceles y pigmentos puede convertir a alguien en un pintor experto", dice Eric Raymond, autor del Diccionario del Nuevo Hacker. Uno de los mejores programadores que he contratado solo tenía un título de secundaria; ha producido una gran cantidad de software excelente, tiene su propio grupo de noticias y ha ganado suficientes opciones sobre acciones para comprar su propio club nocturno.
Trabaja en proyectos con otros programadores . Sé el mejor programador en algunos proyectos; ser el peor en algunos otros. Cuando eres el mejor, puedes poner a prueba tus habilidades para liderar un proyecto e inspirar a otros con tu visión. Cuando eres el peor, aprendes lo que hacen los maestros y aprendes lo que no les gusta hacer (porque te obligan a hacerlo por ellos).
Trabaja en proyectos después de otros programadores . Comprender un programa escrito por otra persona. Vea lo que se necesita para comprender y solucionarlo cuando los programadores originales no están presentes. Piense en cómo diseñar sus programas para que sea más fácil para aquellos que los mantendrán después de usted.
Aprenda al menos media docena de lenguajes de programación. Incluya un lenguaje que admita abstracciones de clase (como Java o C ++), uno que admita abstracción funcional (como Lisp o ML), uno que admita abstracción sintáctica (como Lisp), uno que admita especificaciones declarativas (como plantillas Prolog o C ++), uno que admite corutinas (como Icon o Scheme), y una que admite paralelismo (como Sisal).
Recuerde que hay una "computadora" en "informática". Sepa cuánto tiempo le toma a su computadora ejecutar una instrucción, recuperar una palabra de la memoria (con y sin una pérdida de caché), leer palabras consecutivas del disco y buscar una nueva ubicación en el disco. (Respuestas aquí.)
Participe en un esfuerzo de estandarización del idioma. Podría ser el comité ANSI C ++, o podría decidir si su estilo de codificación local tendrá 2 o 4 niveles de sangría de espacio. De cualquier manera, aprendes sobre lo que les gusta a otras personas en un idioma, qué tan profundamente se sienten y quizás incluso un poco sobre por qué se sienten así.
Tenga la sensatez de salir del esfuerzo de estandarización del idioma lo más rápido posible.