The ability to learn programming is a skill that comes naturally to some, and some must work hard to meet the requirements of this skill, but of course the willingness to learn on the other hand is a choice and just as relevant as the skill itself.
so when I ask "does programming come naturally to some people?", I think it is quite clear that it comes naturally to some - of my view that there are some people who pick up programming much faster than others, but it's a lot broader than that. It's really about the curiosity for tech, Intense curiosity — the defining trait of progressing in the 21st century appears to be a driving curiosity about anything and everything. It seemed like in my earlier years, living in Nigeria (The 20th century did not reward curiosity). The traditional structures of schools, corporations, and the church didn’t just deter open questioning and experimentation—they often feared it. Instead, they usually rewarded emulation.
In my infant years, I used to love picking up and playing with tech, like my mum's GSM(that was what she called it at the time), although I never got exposed to a computer system in that time, but I was always curious, and played a lot with it. I learnt to download games and play them from then popular sites like wap-trick and sefanRU. I never learnt on a practical basis on how to use a Computer System.
The point I am trying to make is, if at that early age, I was exposed to a computer system, I would be better than I am today. There are people who understand pointers right off the bat, and there are people who still struggle with them after taking four years of Computer Science Education. Now I would say, starting to code early would likely give me the ability to learn, adapt, comprehend and troubleshoot faster. Also to solve problems in my mind, I could adapt to understanding long instructions like a computer, much like counting braces natively. But from Data I gathered and analyzed, I can assure you that most programmers probably did not have anything "natural", it was likely a lot of repetition until they started getting comfortable with programming. It only appears that they are natural because they do not talk about the energy they put in behind the scenes and this is generally the same for anyone who has any kind of acquired skill.
In other words, if you want to learn to code, you need to put the work hours in. It is as simple as that, there are no shortcuts or "hacks". Practice, practice, practice, practice some more. The only way you will learn is by doing it. I would go as far as saying, the only shortcut allowed here is being consistent and practicing as much as you can. At a point of your journey, you need to become obsessed with it, for a lack of a better word, or you will never master it. You must regularly read about what matters to you to be better, something about our powerful minds, and shifting towards events to find solutions to our problems, if you do not keep reinforcing relevant concepts every day, you won't make good decisions.
Note that asides from practice, the most important thing for improving at any task is good feedback. When starting in a new domain without a good teacher, good feedback is difficult. A course for example may have exams or projects on which you get feedback. But once you have completed a course, how do you get the higher-level feedback on your overall improvement? If you have a good mechanism for feedback, the answers for which thing to pursue next flows much more easily.
I like to think we are people of equal general intelligence, given the right exposure, and everyone has their own unique set of aptitudes (and ineptitudes). But I also strongly believe that a strong ability to think logically and to understand abstractions appear to be something people are born with or without.
At the same time, it is also important to recognize that there are other factors that may be holding back some people from programming.
A lack of confidence in one's own intellectual abilities can have a strong negative effect on one's ability to learn difficult concepts, or even concepts that are simply reputed to be difficult, I also attribute this to the fault of the gate keepers who portray programming as difficult.
Fear of the unknown. Testing unknown waters is scary and at the same time, exhilarating. In this case, the unknown waters refer to programming. People get scared of whether they are making the right decision, I advise you take the leap, action drives away anxiety.
Other personal circumstances can also distract people from focusing all their intellectual energy on learning to code, one key example being poverty. It is said, the "geniuses" are people who not only have talent but are also free of circumstances preventing them from reaching their full potential. (i.e., they are privileged to live above struggling for the basic needs to create a happy space)
The case of programming, many people start early, and of course that mostly comes down to various environmental factors such as whether they had easy access to a computer; by the time they get to college, they are already far ahead of everyone else, so it appears programming came "naturally", when really, they just had a head start.
Furthermore, having a strong mathematical background can make programming seem a lot easier and more natural, subsequently practice makes perfect, and it does not get simpler than that. Having fun while practicing makes everything a lot better for everyone.
In conclusion, considering my experience so far, I am decent, but it was an absolute misery to even get to my personal milestone. It does not go without saying Programming requires passion, like most high skill endeavors, it requires dedication, confidence in self and a bit of masochism. When you are in the process, you can begin to ask yourself, "so how do I know if I'm good at Programming?" A good place to start is to ask, what is good code?. A "good code" is basically code that is SIMPLE AND EASY TO UNDERSTAND! If a programmer cannot produce good code, they are not a good programmer.
If you are thinking about learning to code, stop thinking about it and start learning it already!