If I understand you correctly, what you describe seems a bit atypical, or at least not similar in all other people, indeed.
Fwiw, pure speculation: Maybe you learned very much from working on/examining advanced/codes type codes. So you learned to understand advanced concepts etc. But you mostly learned to code on the basis of already existing code/solutions.
Often, instead, when we systematically learn to code, we may learn bit by bit indeed from the most simple examples, and we don’t just learn to understand them, but—a bit like when starting to learn basic math—we constantly are challenged to put the next element learned directly into practice, on our own. This ensures we master all that knowledge in a highly active way, rather than only passively.
This seems to suggest there’s a mechanistically simple yet potentially tedious path, for you to learn to more actively create solutions from scratch: Force yourself to start with the simplest things to code actively, from scratch, without looking at the solution first. Just start with a simple problem that ‘needs a solution’ and implement it. Gradually increase to more complexity. I guess it might require a lot of such training. No clue whether there’s anything better.
I’m relatively accustomed to this style of learning when building skills. But not minds. For example, I can’t think of a way I’ll accustom myself to practicing design patterns towards a fictional task, rather than do it in the dirtiest way possible in plain procedural. Yes, most learning material would include an example, but other than following the author’s thinking while knowing that “I’m learning this thing so the answer is that”, I can’t use the learned pattern when dealing with real tasks.
More than not I would use a checklist to measure whether my creation meets the practical goal against usability, safety, and performance, but this might not result in a clean and concise style of coding: I’m just patching in the beginning.
If I understand you correctly, what you describe seems a bit atypical, or at least not similar in all other people, indeed.
Fwiw, pure speculation: Maybe you learned very much from working on/examining advanced/codes type codes. So you learned to understand advanced concepts etc. But you mostly learned to code on the basis of already existing code/solutions.
Often, instead, when we systematically learn to code, we may learn bit by bit indeed from the most simple examples, and we don’t just learn to understand them, but—a bit like when starting to learn basic math—we constantly are challenged to put the next element learned directly into practice, on our own. This ensures we master all that knowledge in a highly active way, rather than only passively.
This seems to suggest there’s a mechanistically simple yet potentially tedious path, for you to learn to more actively create solutions from scratch: Force yourself to start with the simplest things to code actively, from scratch, without looking at the solution first. Just start with a simple problem that ‘needs a solution’ and implement it. Gradually increase to more complexity. I guess it might require a lot of such training. No clue whether there’s anything better.
I’m relatively accustomed to this style of learning when building skills. But not minds. For example, I can’t think of a way I’ll accustom myself to practicing design patterns towards a fictional task, rather than do it in the dirtiest way possible in plain procedural. Yes, most learning material would include an example, but other than following the author’s thinking while knowing that “I’m learning this thing so the answer is that”, I can’t use the learned pattern when dealing with real tasks.
More than not I would use a checklist to measure whether my creation meets the practical goal against usability, safety, and performance, but this might not result in a clean and concise style of coding: I’m just patching in the beginning.