It certainly appears to be the case that some people have much more aptitude than others for music or art (or even maths). I could be wrong about this, because there are psychologists who insist on the important of "nurture" as against "nature" - that all we need is the right education, training and encouragement to excel in difficult skills.
There are, of course, many psychologists who take a opposite view, and emphasise the importance of innate differences. They do not deny the importance of nurture, but nurture has to build on the foundations it is given at birth. (The birth of my own children quickly made me suspect that they were far from being blank slates. My wife and I certainly hoped that we would have a strong influence on their development, but it has always been unclear which of our actions had the intended effect - or indeed any effect at all.) Few people have any problem with the idea that elite athletes have to be gifted with the right genetics - and then do lots and lots of training to realise their potential. It would not surprise me if some of our intellectual functions had a significant genetic component (but would also require the right environment to realise their potential).
I do nevertheless hold that many obvious differences in performance are just due to educational advantage and disadvantage, and I also hold that it is morally correct to look for and attempt to develop unrealised potential as far as possible. I do not deny that there may be real differences in ability, but my own history of growing up in a northern working class environment means that I fully appreciate the deeply embedded biasses that probably prevented many of my contemporaries from achieving their potentials. I suspect that I have little innate musical ability - but I never had the chance of music lessons from an early age. Would it have made any difference? Probably not, but who knows?
I cannot see any reason why the average person (who manages to do quite complicated things like driving a car, or navigating city streets) should not, with reasonably instruction and sufficient motivation, be able to attain a reasonable degree of competence in writing computer programs - perhaps the scale and complexity of programs found on this site. Just as with learning a musical instrument, however, regular practice is required, and professional levels of performance are only attainable after professional training and experience.
There are well researched studies which confirm that individual programmer productivity can vary by more than a factor of forty, and development teams, though the variation is less extreme, turn in performances differing by perhaps a factor of five (see for example Boehm 1981). There is a vast literature on this subject continuing to the present day, which indicates both the importance of the topic and also that we do not yet fully understand why performance varies so much. My own professional experience is not out of line with the literature, in that some colleagues efficiently produced elegant work that stood the test of time while a few created more complications than they solved.
However, just as with skill in music, art and maths, it is hard to pin down the reason why some people excel and others struggle. Admittedly, some musical prodigies turn out to have invested thousands of hours in practice, which is certainly likely to promote very high standards of performance. Does that explain all? Unfortunately, when I tried to learn the classical guitar as an adult, however hard I practiced others seemed to progress much faster. On the other hand, I also knew that making reasonably accurate drawings was something that I could just do from a fairly early age, and it was my classroom contemporaries who struggled to create recognisable images, however hard they tried. There is, of course, probably a "virtuous circle" effect in that a certain amount of aptitude leads to encouraging progress, which in turn motivate further practice and faster improvement. Later on, I certainly found that my life drawing got rapidly better with practice, and furthermore the rewards of seeing progress as a result of that practice added to my motivation to continue the classes.
I suspect that people do have some differences in their innate abilities to handle abstract ideas, which is an essential skill in higher-level maths (which above everything is the discipline of making abstractions). It is also an essential skill when building very complex software systems. I believe that it also underpins a lot of top-class art and music. Nevertheless, just as with music and maths (and perhaps with art) there is much that can be achieved with good teaching and motivation to practice. We probably have a good deal of unrealised potential. (There is, unfortunately, also a vicious circle in which many children are introduced to maths and computing by teachers who are far from confident in these disciplines themselves, and initial difficulties with understanding poorly presented material reinforces poor performance.)
I eventually acquired a modest degree of competence on the guitar (though nothing remotely like professional level). However, it was also clear that further efforts would produce diminishing returns: there were some pieces I felt I would never be able to get my fingers around - at least with the amount of practice I could fit into my life. (Like may other amateur musicians, however, I could still enjoy playing within my degree of competence). I suspect that most people, given opportunities and appropriate training (and the motivation!) could achieve an ability in instrumental performance that would put them above the "painful to listen to" range.
I believe that, as with basic maths, it is possible for most people to acquire a useful level of competence in creating computer programs. The majority of the images on this web site were produced from programs that involve fairly modest levels of complexity and a limited range of techniques. It is all well within the scope of a typical educational programme working with students of typical ability range. In addition, there is no fundamental barrier for adults who wish to acquire similar levels of skills, as long as they are prepared to practice the skills.
There is much that one can do with that level of competence. Programming, for example, is certainly an important supportive skill for students who wish to enter careers in just about every branch of science and engineering, because modern digitally-based methods of data collection tend to generate very large volumes of information that must be handled and analysed in ways that are beyond the capabilities of generic tools such as spreadsheets. There are also programmers who simply get pleasure from creating artefacts that work, in the same way that others get pleasure from various forms of craft work. (Software engineering has been described as the ultimate exercise in creating castles in the air. The programmers route from imagination to a prototype is much shorter than with any other sector of engineering - or indeed craft work. That makes it both highly rewarding and highly risky - one is easily tempted into complexities that that are beyond one's competence.)
Do not imagine, however, that a few hours of playing with a BBC Microbit or a Raspberry PI each weekend will turn you into a professional software engineer. The likelihood of a self-taught Bill Gates or a Mark Zukerberg producing ground-breaking software in his bedroom is no longer high: it has all got much more complicated and there is now lots of competition from very well trained graduates. Furthermore, the consequences of making programming mistakes are now often much more serious (people die, companies go bust) so some stuff really does have to be done by the professionally trained. Producing generative art? I do not see why not.
Give it a go! You will probably find you can do more than you think.
- Boehm, B.W., 1981. Software engineering economics (Vol. 197). Englewood Cliffs (NJ): Prentice-hall.