A while ago I wanted to learn Android programming. I have some background in the web programming (mostly PHP), but I really wanted to learn Android programming. Since I didn't want to pay for an offline course (because they cost a lot of money), I decided to look for an online course. A short Google search lead me to the Udemy. It's an online site with bunch of online courses that are really well structured. It's really easy to learn programming even if you don't have previous knowledge. And it costs only $10 or something like that so you can always try :)
Most important thing - whatever you choose, just keep practicing. You made a bet with your friend? Make a program to keep track. Have some spare time? Try to create your own website. Just work on it and the pieces will start to click together, after that it is just a matter of time :)
You need to focus
Switching languages or frameworks frequently, or deluding themselves into thinking they can become proficient in all of them.
Personalizing their development environment with exotic tools, rather than more conventional tools that can be reliably used while collaborating with others.
Trying to learn tools like Docker and famo.us because they're new and exciting, even though they haven't yet mastered more fundamental technologies.
Here is What You need to Do
- Choose one type of software development that interests you enough to define your career: web, mobile, gaming or embedded. I recommend web because it's flexible. There are a ton of jobs and a ton of learning resources. If you're passionate about something other than web development, leave this post and google search "getting started in _____ development" and go all-in on it!
- Choose any one you like Freecodecamp.com for Full Stack develper, The OdinProject for Ruby and Udacity for Python
My girlfriend is a front-end programmer. She did the graphics for an iOS game and many web pages. The interesting thing about this is that she is 100% self taught. Everything she learned she got either from Youtube videos, and a big part of it was the Udacity online courses that give you an intro to programming.
She recommends this as a good start: https://eu.udacity.com/course/intro-to-programming-nanodegree--nd000
Also, these are great programming videos by a Youtuber that should have more subscribers: https://www.youtube.com/user/programmingwithmosh/videos
It's important to understand, programming is not just creating website using Wordpress. Sure knowledge of a web-programming help, when working with Wordpress. But a non-technical person can also play on Wordpress.
The first step is to learn the basic concepts of programming (e.g What's a variable?, What is a loop?, What is data structure? etc)
For this I'll recommend to pick either C, C++ or Python. Having simple syntax, it will help you with the basic concepts. Any beginner level book for either of the programming language, will help you get started.
Once you get comfortable with the concepts, it will not be tough to learn a different programming language.
Keep diving deeper - Not anything can be done with any programming languages. There are many programming languages out there (100+). Choose any specific thing which you would like to do (choose a What not How).
Interested in building application for Windows. Learn GUI programming (e.g GUI apps using .NET Framework, or QT for linux)
Interested in creating webapps, learn front-end things (e.g HTML, JS or any front-end framework)
Want to do some data analysis. Learn R or Python
Want to build mobile apps - learn Swift (for iOS) or Android specific stuff (You will need to have understanding of Java, if to build apps for Android).
Frameworks - When working on a large application, you will often hear this term (e.g Springboot based on Java for building Backend of Web Apps; Django based on Python for building Backend; ReactJS for building Frontend; Cordova - for building mobile apps using NodeJS; similarly there are frameworks available for almost everything - Game Development, GUI Apps development; even for Building Alexa Skills)
Key is to keep learning. Programming languages are evolving very rapidly (at least til 2018), there are tons of framework releases every month in all the languages combined. There are also new programming language (Google created one a while back - Go).
There is no shortcut to learn programming. You'll have to devote fair share of time in studying a programming language (that includes practicing whatever you are learning).
The best way to learn programming is to understand why you want to learn programming at this current time in your life. Whether for hobby, school, or a possible career path, I think it's important to think about.
The second thing which stems from the first is to realize what you want to learn programming for, or what you want to actually create to further enhance your skills to better your goals in (1). In practice, all programming is, is a tool. I'd start with these two questions.
There are hundreds of different applicable fields in computer science. And a million tools to use. But knowing what you want to use them for is the main thing. That's pretty much what I tell all the freshman at my alma mater.
Watch videos read books