How do I learn programming?


Legendary Coder
For eg: Currently I am trying to learn bash shell scripting, text processing using bash etc. But the problem is I don't think I can learn it. Why? Because I don't know programming. In particular, problem solving. I don't know problem solving at all. I try my best but I fail. In the past, I tried learning MERN web development for around 1 year but failed to do so.
So, I am wondering how do I learn programming? Particularly, bash shell scripting. I don't need roadmap but way to learn problem solving.
Hey there, @shivajikobardan!

When it came to maths and science - two things that I both love - I often let myself down in them. Why? Because I didn't think I could solve problems. Yet, funnily enough, I can solve equations in maths and analyse diagrams to get the information I need to solve problems. I read and analyse the text given to me to find the information I need to be able to provide answers on the given experiment. Problem-solving is your ability to analyse and gather information and be able to use that information to solve a problem. We are all capable of doing it, it's just that what we're good at solving problems in depends, but to say you don't know problem-solving at all is a lie when you do technically do it unconsciously for many other things: what are you wearing today? Are you hungry, and if so, what will you eat? How will you get from Area X to Area Y? These all require you to think, read/listen/write, gather and analyse information, and act on it.

Programming is like maths in that it requires you to reason and think logically, usually in a step-by-step(deductive) manner. This takes a bit of training to do, since the mind is usually running about in a frantic manner, jumping from thought to thought. My suggestion is(and you'll probably hate it): do maths. Lots of maths. Do this as a way to concentrate your mind on problem-solving in a deductive manner. Don't think though that there is one way to solve a problem: there is always another way, even if it's a long way.

Programming is a skill, a bit like working with construction tools. You've got to learn them and master them. But don't keep fretting over the fact that you don't know: keep doing this and you will surely never know a thing because you destroyed the cells in your brain with constant anxiety. The brain is good in that it absorbs information during the day and processes it and stores it when you go to sleep. Programming depends on problem-solving skills to be able to build programs, but not all the time, so take your time when building both skills. They are both separate, but work well together.

You've posted a few other threads with similar questions and worries and others here have given you some good advice. I suggest what you do is read over them and after that, take a break for a while. One of the first mistakes I done was never letting go, always wanting to learn, and fretting over my skills(particularly problem-solving), and before you knew it, I lost interest.

If you want a bit of good advice for learning programming:
  • Don't bombard yourself with knowledge - learn a small bit each time.
  • Practice small and frequently - 30 minutes to 1 hour a day is ideal and don't try to build large-scale projects in this time, but rather do something small, simple, and fun. If you're looking to do some problem-solving, I recommend Project Euler, which combines maths and programming together.
  • Learn from others - go onto GitHub or similar sites/repositories and look at what others have written to see what you can learn from them and what mistakes you shouldn't make.
  • Live a good lifestyle and don't burn yourself out. Programming will feel like a chore if you do that.
Well, if you are looking to improve your problem solving skills, then you can follow the practice below.
1. You can use online resources.
2. Keep your focus on learning the basics.
3. Learn from errors.
4. Practice, practice, and practice.
5. Asking for help.
Do not think too much about some specific language. They all are just a tools to achive something.

Concentrate for mathematical, logical and OOP thinking. "How i solve this problem with a code?" is the way to start.
Top Bottom