There is no single correct way to learn programming, and the chosen method should accommodate the individual traits of the student. The level of cognitive development, ability to problem-solve and overall interest in technology will determine how well they will respond to the challenges of learning programming.
Python is widely considered to be the most simple and useful ‘real-world’ language for beginners because of its easy-to-follow syntax which resembles every-day English. There are a huge number of resources to learn Python online in many fun and interesting ways, most notably CodeCombat.com and CheckIO.org which frame the learning experience with fun gameplay and an attractive UI. Python has a huge community that offers tutorials and support for all levels of beginner.
For younger students, visual programming platforms like Scratch or Blockely have become a popular tool to learn. Though these seem to be directed towards children, they have proven to be incredibly useful for teaching difficult concepts to both children and adults in a fun and playful way. By ‘gamifying’ difficult concepts through fun challenges dressed with interesting characters and storylines, players are more likely to enjoy the learning process and associate education with fun. Many popular mini-games with relatively simple game mechanics have been rebuilt as gamified coding tutorials on sites like code.org and freecodecamp.org such as Angry Birds, Plants vs Zombies and Minecraft .
Coding is a practice that is best learned through a hands-on approach, and one of the best ways to become proficient is undertaking a project, however simple. It is advisable that the learner set out a goal, research the technologies and language they are likely to use and familiarise themselves using the relevant documentation. Often a huge amount is learned this way, much of it being information and skills that will unlikely be included in a typical tutorial.