Want to learn to program?


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

You have four options for programming languages on Hive. The most obvious choice is JavaScript or Python as that is what most of us use. Both of these languages are fantastic choices and you can't go wrong with either, I prefer Python as the current Hive libraries are not maintained well and the Beem library is by far the best one available.

Either choice is good, and I would recommend JavaScript if you want to do more front end development as you will need to learn it if you do. Both are easy to learn but take time to become efficient with them.

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.

While there are many other languages like C# and Go, these are not as popular on Hive as there are no libraries available for Hive. There are a few projects that use Go and it is a good option if you need more performance than Python & JavaScript can offer.

How do I learn these languages?

@crimsonclad mentioned a resource I haven't heard before and I took a quick look and I really like it. It is called Code Combat and it turns learning into an RPG game.

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

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:

Code Wars
Project Euler

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.

Securely chat with me on Keybase

Why you should vote me as witness

3 columns
2 columns
1 column