Antes de la universidad: el truco es ser lo suficientemente inteligente como para saber la manera correcta para crear su programa antes de empezar a programar. Nunca fui lo suficientemente inteligente y me di cuenta de mis errores después de 15 minutos de codificación. :-(
Después de la universidad: la estimación de tiempo para crear software es imposible hacerlo con precisión, por lo que no debería haber horarios
Después de unos años en la industria:. Después de fallar constantemente para conseguir La primera vez, decidí que era imposible. Desde que estaba trabajando en el depurador de Visual C++, decidí que la clave para ser un programador exitoso es ser muy bueno en la depuración. Escribes todo lo que puedes, luego utilizo el depurador para encontrar los problemas, luego resuélvalos.
Afte r otros pocos años: Cambié de Visual C++ Debugger al Editor de Visual C#. Decidí que el depurador no importa, la clave para ser un gran desarrollador es ser excelente en edición. También leo Fowler's Refactoring. En lugar de intentar hacer las cosas bien la primera vez, o equivocarme la primera vez y vivir con eso, decidí hacerlo mal la primera vez, y luego mejorar el diseño con refactorización.
Otros conocimientos: La simplicidad y la claridad del código son fundamentales. Hágalo bien y podrá acceder a cualquier otra cosa que desee (corrección, rendimiento, capacidad de agregar nuevas funciones). Además, cada vez que tenga un error, no solo solucione el error, no solo solucione errores similares en otros lugares, sino cambie la forma en que hace las cosas para garantizar que ese tipo de error nunca vuelva a suceder.
Como directivo, dirigí un equipo de acuerdo con los valores de simplicidad, refactorización, claridad, capacidad de prueba, obtener comentarios rápidamente, esforzarme por un buen diseño, prácticas de codificación que eliminan clases enteras de errores, etc. Tuvimos un éxito fantástico. Como desarrollador individual continué siguiendo lo que había aprendido como gerente, y tuve la mayor productividad de mi carrera (aunque mi antiguo equipo fue mucho mejor en eso que yo). Mi punto es que estos principios han sido probados en el mundo real.
¿No debería ser wiki de la comunidad? –