I am a software developer, and have glimpsed over many similar questions. To summarize: There are enormous individual differences in how one can become a better programmer, and even more so on the opinions on it. It is not even easy to agree on what basic skills should be there at the “end” (i.e., the beginning, after your first two years real experience), much less on how to get those skills.
don’t expect too much skill carry-over: mathematical thinking and programming are related, but different activities
being able to concentrate for some time is good (a.k.a.: conscientiousness helps)
as a kid, liking the task probably also helps
playing the trumpet—not that much (though it can be fun)
On skill-set:
The practical coding skills are always important. (Except if you want to earn more than a dev.)
Algorithmic knowledge is rarely helpful, but you will stumble at least once if you don’t have it (but nobody will notice).
Mathematics is necessary only in very small areas.
What should I have done? Training self-discipline would have helped (if something like that is possible). Knowing/Having somebody who is actually significantly better than me, and pushing me, would have helped (fuckarounditis on “learning” is too easy to do).
My Opinion: In professional software development there is very little time to broaden your knowledge—it goes into obscure platform and domain knowledge quite quickly, and Jobs where you do what is actually interesting are in very short supply. However, exactly this broader knowledge is what can keep you afloat even if you happen to be neurotic, unreliable, slow worker*. So: Let him do what is most interesting, but gently guide him to do it just a bit better, and a little bit more diverse than he would otherwise. About interest: Many people say kids usually like somewhat quick results, and things that crawl. Maybe?
Preparatory learning exercises: Sorry, no opinion and idea here. I always liked to take things apart, and sometimes also to put them together (as in Lego Technik models, or—almost always unsuccessful—attempts to construct my own). Actually, I think constructing Lego models (or of course anything that is “more real”) is great. But then there is the initial caveat of individual differences.
I am a software developer, and have glimpsed over many similar questions. To summarize: There are enormous individual differences in how one can become a better programmer, and even more so on the opinions on it. It is not even easy to agree on what basic skills should be there at the “end” (i.e., the beginning, after your first two years real experience), much less on how to get those skills.
That said, most commonplace advice is valid here:
there is with high probability no really significant innate aptitude for programming (intelligence has a carry-over into many domains, however) (edit: seems I am wrong about that: See “Has “Not everyone can be a programmer” been studied?” at Programmers.StackExchange
don’t expect too much skill carry-over: mathematical thinking and programming are related, but different activities
being able to concentrate for some time is good (a.k.a.: conscientiousness helps)
as a kid, liking the task probably also helps
playing the trumpet—not that much (though it can be fun)
On skill-set:
The practical coding skills are always important. (Except if you want to earn more than a dev.)
Algorithmic knowledge is rarely helpful, but you will stumble at least once if you don’t have it (but nobody will notice).
Mathematics is necessary only in very small areas.
What should I have done? Training self-discipline would have helped (if something like that is possible). Knowing/Having somebody who is actually significantly better than me, and pushing me, would have helped (fuckarounditis on “learning” is too easy to do).
My Opinion: In professional software development there is very little time to broaden your knowledge—it goes into obscure platform and domain knowledge quite quickly, and Jobs where you do what is actually interesting are in very short supply. However, exactly this broader knowledge is what can keep you afloat even if you happen to be neurotic, unreliable, slow worker*. So: Let him do what is most interesting, but gently guide him to do it just a bit better, and a little bit more diverse than he would otherwise. About interest: Many people say kids usually like somewhat quick results, and things that crawl. Maybe?
Preparatory learning exercises: Sorry, no opinion and idea here. I always liked to take things apart, and sometimes also to put them together (as in Lego Technik models, or—almost always unsuccessful—attempts to construct my own). Actually, I think constructing Lego models (or of course anything that is “more real”) is great. But then there is the initial caveat of individual differences.
*: I might exaggerate a bit, but not too much.