Re Quora question: "What are your thoughts on the idea that writing a lot of bad code will eventually lead to better coding skills (programming, software engineering)? Do you think there is any truth to this idea? If so, why do you think this is the case?"
There is some truth to the idea that writing a lot of bad code can eventually lead to better coding skills in programming and software engineering. While practicing a skill area often, even if done poorly, can still provide some benefit, it is important to recognize the limitations and the need for deliberate practice to see meaningful improvement.
Consistent practice is essential for skill development in any field, including coding. Even the most accomplished experts started at a lower level of skill and relied on practice to refine their abilities. The saying 'practice makes perfect' holds some truth in this context. Regular practice helps build familiarity, muscle memory, and neural pathways associated with the skill, which can contribute to improvement over time.
However, the quality of practice is crucial. Practicing a skill poorly risks reinforcing poor techniques or habits, which can hinder progress and make it harder to reach a high level of skill. Poor practice may also fail to push you beyond your current abilities and limit the extent of improvement.
To optimize skill development, it is important to combine regular practice with deliberate and focused efforts to improve. This involves seeking feedback from experienced practitioners, studying and understanding the correct techniques, and adjusting your approach based on feedback received. Deliberate practice allows you to identify weaknesses, target specific areas for improvement, and gradually refine your skills over time.
While practicing a skill area often, even poorly, can provide some benefit, it is generally more effective to strive for deliberate and quality practice in order to see meaningful improvement in your coding skills. It is through deliberate practice that you can develop a deep understanding of coding principles, refine your problem-solving abilities, and gain the necessary experience to create robust and efficient code.
Furthermore, there is value in learning from mistakes and experiencing the consequences of writing bad code. Proactive defensive practices, such as error detection and mitigation techniques, can be better understood and appreciated through personal experience. Intimate familiarity with the creation, consequences, technical debt, and burden of bad code can provide valuable insights and drive a commitment to improvement. At some level, doing poorly can serve as a necessary prerequisite for deeply learning how to do well.
In conclusion, while practicing poorly can contribute to some improvement, it is important to balance it with deliberate practice and a focus on quality. By combining regular practice with deliberate efforts to improve, seeking feedback, and learning from mistakes, you can develop your coding skills more effectively and strive for excellence in the field of programming and software engineering.