Learning to code is easier than ever. There are loads of websites out there that’ll teach you the basics of coding. I went through a quick search of the current offerings and here’s what I found.
Ruby on Rails
I recommend learning Ruby on Rails. Ruby is a programming language and Rails is a library (set of re-usable pre-generated code) that sits on top of Ruby and adds a ton of features to make saving data to a server simple. You’ll still have to learn html and css eventually, but Ruby on Rails is ideal for beginners as it has a fantastic community around it that will support you and answer any of your questions, it provides a significant amount of structure for you that reinforces good programming style (create a new project pre-organized into the right files and folders), and it can automatically generate large portions of your projects for you. It basically does the entire backend side of the project. That’s great for reducing the learning overhead starting out. It’s like having a full-time backend developer you don’t have to pay.
To learn Ruby on Rails, I highly recommend this fantastic free course by Michael Hartl. I’ve gone through this course myself, both to test it out and learn a new programming language, and I loved it. It’s simple and practical. It teaches good programming style which will make you a faster, less frustrated, and an all around better programmer. It uses the same tools and techniques as professional developers. Even if you aren’t looking to move forward with web development, it would be worth going through this course just to learn about proper test driven development.
My only difference of opinion from Michael Hartl is that I prefer to run everything on my own machine. If you are using Windows, then you should absolutely use the cloud development environment he mentions, but if you’re a Mac or Linux user then I suggest following the Ruby on Rails install tutorial instead.
You can go through the entire course with no prior knowledge, but I recommend going through try ruby first. They say it will only take you 15 minutes, but take your time and play around with it until you really understand what’s going on. It will teach you the basics of programming syntax (the way the text should be written so the computer can use it) and get your feet wet before you decide to go into the course full steam.
Html and CSS
If you’re still convinced you want to go the html/css route, then there are other options. FreeCodeCamp looks good from the time I spent with it.
I recommend experimenting with a coding language before diving into making apps. There’s a lot of code necessary to get an app to run properly, interact with the user, and display the results. It will be difficult to know where you’re going wrong if the problem can be anywhere in that entire pipeline. Instead you could get started with some single file scripts (a program of one or more files that traditionally runs with minimal user interaction on a command prompt).
What language I recommend you learn first depends on what you want to do in the future. If you want to be an Android developer, learning Java is ideal. Android apps are written in Java. I prefer making iOS apps as the interface is simpler, I prefer both the Swift (Apple’s new language) and Objective-C (their old language) programming languages, there are fewer configurations to worry about (limited number of screen sizes and device models), and there is more money in iOS apps than Android apps. I also recommend making iOS apps as it pushes you into good coding style by nearly forcing the model-view-controller paradigm and making distinctions between public and private variables (I’ll let you learn what those are on your own).
If you want to follow my advice and start with scripting, Python 2 would be great. It’s a flexible and well-supported coding language with a community that focuses on doing things the right way (the pythonic way in this case). Python is popular for complex computation such as AIs, algorithmic trading, or natural language processing and for scripts such as web scrapers, so you will likely have some use for it down the road.
Python and Java
Learn Python the Hard Way – kindle, paperback, or online – a free online tutorial that teaches programming well. It goes through installation, explains things simply, has a good pace, uses the command prompt (which I recommend), and teaches how to do testing. It gets deep into coding terminology in later lessons. That is crucial to becoming a good coder. Read those lessons!
Learn Java or Learn Python – explains the programming language, but doesn’t teach programming as a whole well. You may not understand a lot of the jargon used. I suggest looking up any phrases you think may be jargon. This will not only help you learn to code, but to understand the terminology real programmers use. It also has coding windows to test your code online. The code windows are invaluable for feedback, testing various cases directly when you aren’t sure about something, and skipping hours of frustrating set-up problems.
Oracle Java Tutorial or Python Documentation Tutorial – official tutorials. It may go too in depth for a beginner, but skip around and find your sweet spot. The difference between the two tutorials parallels the differences between the two coding languages.
CodeSchool and Codecademy both have a few different programming languages that can be programmed in browser. You may have to search Google for more programming languages on the Codecademy site though as the homepage only has web languages. I know at least python is available. CodeSchool seems to have more videos and quizes while Codecademy is all practical (and has forums), so try them both and see what works best for you.
Before getting into game development, you should have a grasp on at least one programming language. Similar to app development, it’ll be very hard to debug your game if you don’t know whether to blame the engine, the code, the textures, the model, or something else.
Once you’ve got some basic coding knowledge down, it’s time to choose a game engine. You could then checkout that engine’s tutorials such as Unity’s tutorials or Unreal Engine’s tutorials. Personally, I prefer Unity as I believe it’s simpler to learn and use. Unreal Engine can produce incredible, high fidelity graphics, but that’s largely unnecessary for indie developers.
I’m also currently working on a game to teach players how to make games called Hotfix. It’s still an early prototype, but it’ll take you through making a variety of common game types soon.
Learning to code can fun, but it isn’t for everyone. If you’re still not sure about it, ask yourself if it’s right for you. If you’re a bit overwhelmed, that’s ok. There’s a lot of information here. Try to pick one programming language and one guide to focus your efforts on. Don’t worry if you don’t get it at first. Take your time and feel free to ask questions here if you’re stuck.