Esta fue una respuesta que escribió a una pregunta similar en julio del ’10 que creo que todavía es relevante hoy:
Creo que la mayoría de la programación consta de dos partes: matemática / algoritmos / teoría discretos, y una gran cantidad de cosas pequeñas que básicamente solo puedes aprender por experiencia. Esto es algo como:
- tener una idea de cuándo usar variables, funciones y otras abstracciones para evitar códigos repetidos
- Comprobación de casos extremos
- depuración
- tener un modelo mental de cuánto tiempo llevan varias operaciones
- conocimiento de las API
- leyendo el código de otras personas
- escribiendo buenos comentarios
- patrones de problemas que ha resuelto en el pasado con los que puede hacer frente
- patrones de errores que ha realizado en el pasado y que sabe evitar
- ser capaz de cavar a través de elementos internos del sistema como un archivo .h o un módulo python incorporado y avanzar sin comprender completamente todo
Hay muchos otros conocimientos especializados y habilidades que puede adquirir, como sistemas distribuidos, subprocesos múltiples, aprendizaje automático, compiladores, etc., pero eso es diferente de lo que considero “programación” en general.
- ¿Qué tan válida es la declaración 'JavaScript perjudica su SEO, arquitectura de software, inversión de software y robustez'?
- ¿Qué hay en una posición de gestión de productos de software que los candidatos deben tener un título de ingeniería?
- ¿Todo el software es solo una combinación de ifs y elses?
- ¿Cuál es el mejor lugar para publicar trabajos de desarrollador en la ciudad de Nueva York?
- ¿Cuáles son algunas compensaciones comunes en el desarrollo de software?
Debería trabajar en algunos proyectos grandes de principio a fin si desea mejorar. Tal vez hacer algunos juegos o algunas aplicaciones web. Necesitas escribir programas que sean lo suficientemente largos como para que no puedas salirte con la tuya. Las tareas escolares tienden a ser cortas porque tienen que completarse en semanas, por lo que puede alejarse sin realmente aprender mucho de estas cosas.