Hello!
This guide is based on my own experience and opinions.
First you need to ask yourself is programming something that you want to do for the rest of your life as a hobby or profession or it’s just a thing that you like to see how it works. If programming is just a thing that you like to see how it works then I suggest you to start with web basics: HTML and CSS markup (not programming) languages. By learning this stuff you will get the picture on how web browsers renders html documents retrieved from web server. Don’t lose more then 3 days on this stuff. After that, start with Python to get a picture on how programming languages works. You can find a lot of beginner tutorials for Python online. Program in Python no more than 4 days to get the global picture on how programming languages works, and then forget about programming, programming languages, loops and everything else that you read in last seven days. Call your friends, go grab a beer with them and move on to chasing career in some other field that you are interested in.
If you are thinking about programming on long term period then I suggest you to start with mother of all programming languages: C programming language. Why C language? There is a multiple reasons to start with C. First of all, C influenced almost all “modern” programming languages and most of them borrowed some syntax from C. Kernels of Linux, Windows and Mac operating systems are also developed in C. Probably your dad’s Toyota Prius has thousand and thousand lines of code in C. Most of embedded systems are programmed in C.
Starting to programming in C won’t be easy at all. But you need to be diligent and persistent. Programming is something that you learn in 10 years long term. You must be aware of that. You cannot became a decent programmer in 24 hours or 7 days. It’s a long and fu**ed up path.
-
Beginner
I suggest you to first install Linux (preferably Ubuntu or Mint distro) on your programming machine. Using Linux from the start you will also learn a lot about operating systems, how they work, and you will get yours hands dirty on command line. As a programmer, command line will become your living room, bedroom and toilet. With Linux you will get gcc (C compiler) and TextEditor. That’s all what you need to start programming in C. For the book I suggest you “The C Programming Language, 2nd Edition”. In this phase of learning your main focus will be on data types, operators and expressions. You’ll learn what is compiling, what is main method, what are function arguments and what is procedural programming. After that you will learn about control flow statements and loops. Then you’ll proceed with functions, programming structure, arrays and pointers, structs, I/O, handling memory and a lot more. This all are programming basics and the more time you spend learning basics, you will later build your advanced knowledge much easier . Don’t just read the book, write every example from the book, compile and figure out every line of code. After your finish the book (and all that stuff will be probably very boring to you) you will get rock solid basics. -
Enthusiast
Now it’s time to go from procedural programming to object oriented programming. Move on to C++ programming language. Find some decent book (probably “C++ Demystified”) and learn C++ syntax and basic. You will catch up fast because you have knowledge of C. In this phase of learning your focus will be on objects and classes and OOP in general. You will need to learn difference between pointer and reference. -
Padawan
Now you have experience in two (most used) programming languages. Now you need to learn to be more effective with less lines of code. I suggest you to start with some book about data structures and algorithms (maybe “Data Structures and Algorithms in C++, 3rd Edition”). In this phase of learning you will learn what are lists, stacks, queues, trees and heap, what is sorting etc.
After you finish all this steps, you will have decent amount of knowledge to start building simple software. Now you need to decide will you move on to web programming (PHP, C#, Java, Javascript, HTML, CSS), embedded programming (C, C++, assembly language) or mobile development (Java, Objective C, Swift, etc.). All this fields have different learning paths but you will have strong basics and you will progress fast.