Learning programming is like learning a language, but much easier as the only part of the language we are concerned about is writing and reading. In fact, all children learn to read faster by learning to write. The simple act of writing allows the brain to grasp concepts as well as syntax very quickly. Similarly in programming, the easiest way to learn to program is to practice writing code.

1. Pick a Language

The first step is to decide what you want to learn. The easiest programming language to learn is Python and is very useful for scientific programming. If you are interested in web development, JavaScript (JS) is definitely one to learn and if you are interested in software, then C++ will teach you a lot about computing paradigms. HTML and CSS are good starting points to get into website development and as you learn how web pages work, learning other languages become a lot easier.
Almost all projects require some sort of database so learning SQL is a good way of learning how to store and retrieve data from any dynamic app or website.

By the end of this stage, pick the language and have a motivation/reason for learning the language (you will need this later).

2. Learn the Syntax

There are many ways of learning the syntax. I often learn by reading example code from Github, seeing what it does and then playing with it to see what I can make from it. Modifying and improving code is a great way to learn as it is enjoyable and there is some satisfaction to extending a completed project. A more rigorous way of learning code could be to use an online learning site like Codecademy, Coursera, Udemy and although I did use this to learn, it only takes you so far into being able to actually learn the language (the next step).

By the end of this stage, know how to write simple code but also know how to read code and spot if there are any errors.

3. Practise the Language

Practising the language requires an overview of your objective with relation to the programming language and how you would want the program to be structured after you have finished. This takes a lot of time to learn and the only way to do this is by setting yourself an objective project, planning it out and then using the learnt syntax to fulfil your objective.
(Analogous to a normal language, practising a language is essentially being able to say what you intended/wanted to say.)

Note this is not in general easy but don't worry you have Google and Stack Overflow. Set yourself a project, break down the steps and fulfil each step one-by-one.

As an example, for a social network you will need to do the following:

  1. "Principled" Database Schematic (Easy with sufficient practice)
  2. Login/Register Page
  3. Profile Page
  4. Newsfeed Page
  5. etc.

By the end of this stage, start off with a project that has in some way been made before and research into how to build it part-by-part.

Conclusion

In general, it is not easy to learn programming but as with everything practising while having fun is the best way to improve at anything. Treat your programming project as a fun game or an exercise and consistently try and accomplish your goal. By starting to develop your first project, although there may be times where time will feel like it has been wasted there will always be a lot of new things learnt and all the experience will serve well for all your future projects.