One of the biggest defects that I've is that I can't solve problems. Make a snake game? I've no idea how to proceed. Build a tic tac toe, I've no idea how to proceed. Build a arkanoid, I've no idea how to proceed. I read about them, I read the code, I still have no idea what is going on. I try to watch tutorial, I've no idea why are they doing it. I try to search stackoverflow, I don't understand why that solution works and how to develop that solution on your own.<p>Honestly, programming is unlearnable for me. How do I make it learnable?
There are many, many ways to find a passion (and a career path). I was failing badly at Physics, and stumbled, almost accidentally, into programming. I found it easy! And I had a great career as a programmer, doing things that came naturally to me.<p>So here is one problem you do need to solve: find something that you do know how to do and put your energy and passion into that. (By the way, I cannot play a musical instrument either - and I have tried over and over again. Love listening to music, just cannot learn to play it).
Part of it is just trying to solve problems that are at your level and slightly beyond your level.<p>Part of it can be from learning more systematic approaches like the Design Recipe you learn from working through <i>How to Design Programs</i> and similar books.<p>Don't underestimate trying to work things out with a pen an paper first. Not so much writing code on paper, but just working through what the behavior is, or how to break down a task into simpler tasks.
The problem is that people tend to look for solutions before they truly know the problem. Practice searching for problems, at the lowest levels, again and again. This detective type skill will train your mind to break things down into manageable pieces. Solutions to problems that have been broken down far enough are usually self evident. But you are looking at end products, wondering why you can't solve anything. Does that make sense?
Describe the logic you plan to implement in English.<p>It proves you understand the basic principle, not just a domain specific hack.<p>It also makes complex problems easier to discuss.<p>If you can't do this:<p>a) You don't really understand the solution.<p>b) You will be professionally handicapped by being unable to describe your work to a non-coder.
It’s not that it’s unlearnable. You just haven’t learned yet.<p>Contrary to what this board, or industry legends might suggest sometimes, we didn’t all just open up a laptop one day and know how to code a complex system.
A good approach is learn from others' code. Read their code, build and optimize. One day, you will be able to build an all-new software or system.
like everything in life...keep going. programming didn't make sense for all of us, but we stuck with it. keep building projects, and edit them to see how they react