I've have long thought everyone should learn to program, even if you have no intention of ever being a programmer. Programming is a unique learning experience on problem solving. A skill that schools don't teach or help develop.
I was hanging out on MSP Waves listening to @crimsonclad talk to a few users and one of them expressed interest in learning to program. He asked for some advice and which language would be best.
What language is best
I did mention there were four options, the third is Ruby. While Ruby is extremely popular in the real world, on Hive there is only one person I know that uses it, @inertia. He has created some really cool tools using it which he has offered almost all of them for free somewhere on GitHub.
The final option is C++, it is the most difficult option and will require the largest learning curve, most projects on Hive do not use C++ but if you want to work on actual blockchain code, you will need to learn C++. Most developers here are app developers and are building apps on top of the blockchain (the 2nd layer you keep hearing about) and C++ is not the obvious choice for these projects.
How do I learn these languages?
I only looked at it briefly, but I was really impressed with it, I definitely will be recommending this to people going forward, especially younger adults. I strongly believe all parents should try to introduce their kids to programming early in their development and tools like this are fantastic.
A few other options I generally recommend to people are:
Khan Academy is completely free, the rest have some free courses and a lot of paid courses.
One thing I do recommend for new developers is challenge systems, there are a lot of good ones out there that give you progressively more difficult problems to solve in your chosen language, you can then compare your results to the suggested solution and even get feedback from your peers. These are fantastic ways to challenge yourself and get better.
A few popular ones I highly recommend are:
These are all free and I highly recommend getting started with them immediately upon getting a decent understanding of the basics. Each challenge will exercise your new found knowledge and help develop it further. I really recommend checking out Code Wars, it is really polished, Exercism is really good for git workflow.
The most important resource I can suggest is find a project you want to build and start on it. Even if you have to break it down to tiny pieces to accomplish it. You will learn more building something than you will ever from just doing tutorials. You will run into endless problems that are not in any course and have to work to solve them like any other developer does. Only then will you truly become capable.
I also recommend getting the book "Think Like a Programmer" by V. Anton Spraul. It is a fantastic resource for learning how to break larger problems into smaller ones.