Question #1
Learning leads to understanding. To answer your first question "I want to learn ways to understand."
To learn how to understand, you need to take a look at what you know. What currently do you consider yourself able to understand.
Unless you had someone else navigate the web and take you to StackOverflow and type out your thoughts for you, I can assume you know how to operate a computer (turn it on, use a mouse, run an application).
So how did you get this far?
Well you probably went down a couple of roads, had someone demonstrate, read instructions, tried and failed. Eventually after awhile you used all of these to build an understanding of what is required of you to operate a computer.
Answer #1
The answer to the first question "I want to learn how to understand": It requires introspection and the study of yourself. You may gain understanding more easily from one method or another (demo, read, try/fail). So take some time and figure that out.
Question #2
Enhancing oneself.
Answer #2
Take a measurement of yourself, an inventory if you will. What are you capable of? Then take a look around, read job postings in a variety of geographical locations. What are the buzzwords that are being put into them. The buzzwords you don't know, research and find out what they are and what is behind them. The buzzwords you do know, research them as well and ensure you really know what they mean.
The internet is full of so much opinion you are bound to find multiple sources of information to contradict, refute and support what certain things are.
Once you have taken the temperature of the industry you are interested in, establish your own personal goals. What do you want? What is it about this industry that makes you want to be part of it? What are you interested in? What are you passionate about?
When you can answer those questions you can establish your personal goal of achievement and your personal measurement of success.
Now that you have a goal, evaluate (be honest with yourself) what will it take for you to reach that goal. Do you have the determination to self-educate, do you need help? Determine your parameters for achieving success.
Do what it takes, get it done, go after that goal, one step at a time. Check back often with your goal, evaluate your progress and congratulate yourself on even the smallest achievement.
Question #3
Learn how to Learn
Answer #3
First, believe and trust that you are not the only one in this position. That you share you situation with many others. Those that make fun or attack your lack of knowledge are just shielding themselves from their lack of knowledge.
Second be wrong. Be wrong a lot. Acknowledge your misconceptions. Clear your ego of all preconceived notions and open yourself to the possibility that even the most inexperienced individual can teach you something that you don't know. Have discussions with others about the topics you are interested in, share your perspective and appreciate theirs.
Expose yourself to as much of the subject as possible. Breathe it. Start small at first, review some old code you wrote and analyze what you did. Go character by character and talk it out. Explain what the code does. Think about it, try and rewrite it in a different way. Take a block of copied code and type it out change it make it do something different. Then move on to larger code bases and draw diagrams and write down what you observe.
When questions start to pop up, write them down, try to come back and answer them or seek the answer from other people. Once your questions travel from the code itself to the environment or context the code is running in, write those questions down and try to research and answer them or seek help from others.
Take a look at existing software, web or other, dissect it. Break it down into its parts and explain how you think it was built and how you might go about building it. If it is open source, look under the hood and see what they did.
Bonus Question
Can a non-professional consider a developer career.
Answer
Absolutely. By non-professional I assume you mean someone that doesn't have a Degree in a related field of study. Knowledge is knowledge. Proving that knowledge is easier with a Degree. It is assumed you have a level of understanding. However it guarantees nothing. In the software development industry especially, it is very common for people without degrees to be even more knowledge than those with them. A Degree is a piece of paper. Knowledge is yours.
Programming specific Items
Read about more than one language. Read/Watch articles about the history of computers and programming. Seek out individuals who have written about their learning experience.
Some of the people I have learned from include, Douglas Crockford, Martin Fowler, Dave Thomas, Edward Dijkstra, David Parnas, Larry Wall, Denis Ritchie, Brian Kernighan, The Sussmans, Harold Abelson, Tony Hoare, Linus Torvalds and many more.
Extra Cliche Comments
Nothing in this world is unachievable. Imagination and determination are the driving forces in everything we do. Curiosity is our fuel. Limits are something we put on ourselves. Don't be satisfied with what others think is enough. Attain what you want.