I sat in my introduction to programming course, listening around the room as the teacher reported the results of our first project. This class was part of a EE program, many were not there to learn to code, but the program reasonably expected that the EE students at least have a passing knowledge of programming concepts. Sinking deeper and deeper into my chair, as I realized that amongst this crowd (300+ students) of would be Electrical Engineers, capable of advanced calculus and understanding the complex concepts of physics, I was exceptional. My score was among those that set the curve, and the average was far away.
If you are doing this for the money do yourself a favor and stop now. If you succeed in learning, you will not enjoy it and it is unlikely that you will be very good at it. It is still work, and at times very emotionally and mentally draining. If your primary driver is the money, do yourself and the industry a favor, look elsewhere, you will find money quicker somewhere else. If money is your motivation you will not likely succeed in finding it as a programmer.
Having now worked multiple decades in the industry, I have found that there are those who can and there are those that cannot. The concepts elude them but for whatever reason, there are many, they just cannot code effectively.
I have many nephews, and to some extent or another, most have approached me at one time or another about learning to be a programmer. I am eager to teach anyone willing to learn. I love to code, and want to share that love. Considering two of my nephews who were more interested than the others, the story is telling. With both, I made the same offer. I opened my library to them, I offered my time to tutor and provided lists of other resources. However, I did not bring the books too them, I did not schedule the time for them, nor did I force them to look at those resources. Recently, now a decade later, one approached me about learning to program again. Desperate to change his life circumstances. Again I made the same offers. The other recently submitted his resume to me, for consideration of a job that I need to fill. I was skeptical, but upon review, his resume provided the qualifications needed to approach this advanced position. He had made it.
Time and again as I am approached, it has been clear to me that there are many who want to code, not because they think they have the aptitude, or inclination. Not because they have a love for the machines we work with. Rather so often because they are unhappy with their life circumstances and see programming as an easy way out. After all it was for me right? I don’t even have a college degree but am very successful.
What they didn’t see was the many late nights, starting from the age of 12 digesting every piece of information that I could lay my hands on about computers, there was no Internet. They didn’t see me enrolling in after school programs so that I could become more knowledgeable about the machines I was programming. I have an insatiable thirst for this knowledge, then and now. It consumes my life well beyond my job. Frankly, I am always baffled by those who have a healthier work-life balance, and often their code reflects it (not in a good way). Those that I have worked with over this time that are the best talent share many of the same characteristics that I have. They live and breathe programming and spend far too much time in their caves.
Still I think anyone who can finish High School can code. Not all will be able to have successful careers programming, but they should be able to learn the concepts. And more than a lack of ability, a lack of interest will be the downfall. There are many that put all the effort in, learned to code, usually because of the love of money and not computers, but when faced with the day to day challenges, finally moved on. Real Estate or sales, some other get rich quick scheme. So while pretty much anyone could code, it is unreasonable to think that anyone can have a career as a software developer.
While I do not have a college degree, I do have a significant amount of college course work, particularly in CS. I found it very difficult to deal with college politics and the minutia of general ed credits. So I took what I could get and left.
I feel strongly that there are innate characteristics that I have that make me able to code the way I do. Some of those are the same that made it impossible to work through my General Education. I have ADHD, I have dealt with it my entire life. They almost held me back in 5th grade because they thought I had a learning disability. Until they tested me and found that I had the highest score in the grade. It wasn’t that I had a learning disability, I had a working disability and was bored. While ADHD causes me significant challenges engaging in work, and managing my schedule, it comes with a gift. The gift of hyper-focus. When I do successfully engage, the level of focus is far beyond what most experience. All else falls away, it is just me and the computer. I have been known to have conversations that I was completely unaware of. Providing adequate responses to preserve my concentration and avoid the interruption. My strength in some of the formal testing show that my strength is in 3 dimensional conceptual reasoning. This translates well into being able to visualize the virtual and reason about it. To see the data flows and process integration. To conceptualize what is happening within the hardware at a microscopic level.
While I do not think that every programmer has the same gifts, I do believe that there are innate abilities, beyond what can be learned, that are necessary to be successful in this industry. As evidence, my four brothers are all software developers, two of my uncles are mechanical engineers, they were before the time of computers. On my fathers side, a trainwreck of lives due to ADHD and chemical addiction. I was not raised by my biological father who had an advanced degree in biology and was very successful until his addictions destroyed and eventually killed him. My father who raised me was a contractor and struggles with computers, though with a family of mentors has become functional. My brothers did not learn to code together. We came at it very differently than each other. Half of them were adamant that they would never do this, but ultimately their aptitude for the skill prevailed. This was very much nature, though work and nurture was necessary to really make it happen.
Some do not have the aptitude and no level of effort will replace that.
I will never be a famous tenor, despite my secret fantasies.
I will never be a rock star
I will never be successful as a salesman
I struggle as a father, despite immense love for my children and a willingness to sacrifice all.
I could never be a psychologist, that was the easy money when I was in college. My friend who followed that course is now a programmer.
If you have given it a significant effort and it is not working, it may be time to move on. That said, you need to objectively quantify and qualify your effort. Have you sought out appropriate resources, a mentor, the best books, a boot camp or a college course? Have you really made the time investment and made learning to code a priority. I won’t belabor this much longer, many other excellent answers here, and I primarily wanted to provide the insight above.
Are you doing it for the money or because you love working with computers and creating.