This is a question that has challenged me for a while.<p>The practice techniques and resources for becoming a good programmer or a baseball player are fairly well defined. How do you progressively become good at successfully building solutions for real world problems?