Update (17 Junio): Se publica la versión correcta del artículo.
Como en toda carrera, cada cierto tiempo y en algún lugar, alguien inventa o idea nuevos conceptos que cambian paradigmas para bien. El problema de estos (nuevos o no tan nuevos conceptos) radica en que vienen acompañados de terminologia que suele ser complicada y que tambien intimidante.
"Dependency Injection" y "Design by Contract" son dos ejemplos perfectos de lo que menciono, y precisamente les quiero recomendar cuatro lecturas para comprenderlos, ¡y tambien los invito a que los practiquen!... y si ya los conoce, vale la pena repasarlos.
Para "Dependency Injection" recomiendo que lean esta entrada en StackOverflow:
http://stackoverflow.com/questions/130794/what-is-dependency-injectionLuego lea el siguiente artículo publicado en el blog de Google Testing (que de paso, recomiendo que lean seguido):
http://googletesting.blogspot.com/2008/07/how-to-think-about-new-operator-with.html
Para "Design by Contract" pregúntate a ti mismo ¿cuando fue la ultima vez que implementaste interfaces y "assertions" en tu código? y lea:
http://www.dugaldmorrow.com/index.php?option=com_content&task=view&id=19&Itemid=38Y si quiere un poco más de teoría:
Invito a los programadores, que no conocían o comprendían totalmente estos conceptos (como yo) que los entiendan y apliquen lo más pronto posible, para hacer su desarrollo de software un poco más fácil :)
http://www.eiffel.com/developers/design_by_contract.html
¿Qué otro concepto de programación crees que es importante comprender?
Espero que a alguien le sirva, Saludos!