Learn how to code and to create things with it (pt.1) - Where to start
Programming is a great skill to have, and it is becoming more useful by the day, even if you are not a professional coder. For the aspiring programmers, here is a list of resources on how to create cool things with code. Knowing how to program can automate repetitive tasks, making them quicker, it will help you solve complicated financial equations, and in general gives you a better understanding of how software works.
The basics
Before you can get into writing code, you should learn some of the basic concepts of computer science. It will help you a lot along the way.
Code.org
A series of puzzles that will teach you the basic fundamentals of computer science. It might look childish but it teaches important lessons. Suggested to try the Classic Maze puzzle first.
CodeMonkey
https://www.playcodemonkey.com
Another game in which you control a monkey getting bananas using code. This one teaches concepts without requiring you to learn a language. Very addictive, it got me hooked for a while.
Coursera
https://www.coursera.org/learn/intro-programming
Introduction to programming. This course is provided by the University of Edinburgh, taught entirely in a visual programming language called Scratch, an easy to use visual programming language.
A dive into actual coding
These courses do a great job in teaching computer science (CS) fundamentals. There are plenty of courses out there (such as Codecademy) that do a great job teaching programming languages, but a not so great job teaching basic CS. Great programmers are able to do work in many languages because they have strong CS fundamentals.
Khan Academy Intro to JavaScript
https://www.khanacademy.org/computing/computer-programming/programming
This course teaches you the basics of object oriented programming using JavaScript language. It is interactive and has a good community to help you out if you are stuck.
How to Think Like a Computer Scientist (Interactive Edition)
http://interactivepython.org/runestone/static/thinkcspy/index.html
An interactive version of a classic computer science textbook. It teaches you all the basics using Python language.
Learn to Program with Java (Book)
https://www.amazon.com/Learn-Program-Java-John-Smiley/dp/0072131896
An excellent book to learn from. Java is a great starter language.
MIT Introduction to Computer Science and Programming
Learn from the experts themselves. The open courseware format requires self-discipline, but this is an excellent course.
Advanced courses
Now that you know a little more about programming and have a good grasp of a language, you can start learning some of the more advanced stuff.
Khan Academy Algorithms
https://www.khanacademy.org/computing/computer-science/algorithms
Want to learn how to make your programs faster? Or want to do some big data crunching? Check out the Algorithms course at Khan Academy.
Design Patterns: Elements of Reusable Object-Oriented Software (Book)
http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612
Learn about Design Patterns to make your code well-structured and reusable.
Do you think it is cool that you can store stuff in an array but wonder if there is more to it? Get down with Data Structures. There are a lot of books to find that uses your language of choice.
Electrical Engineering and Computer Science
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science
Review learning materials about computer science from MIT's Open Courseware.
Practice coding, and find inspiration what to make
Being able to code means that you can make just about anything on a computer, but sometimes you just don't have the inspiration to make something brand new. Or maybe you want to help someone else out on their projects. In that case, you can work on open source projects.
Open source projects are applications, frameworks, and other bits of software where the source code is freely available and free to be modified by anybody for their own purposes. In the open source community, it is called "free as in beer, and free as in freedom". A lot of open source projects are maintained by a core group of developers who are responsible for things like code cleanliness, but they all will accept help from other developers.
So if you don't feel like practicing by coming up with a whole new discrete calculus library, you could find an open source project and see if there are any bugs or features you can work on.
Github
Github maintains the largest collection of open source projects. Pick one you like, click on Features, pick a bug, fork the repo (using this tutorial: https://help.github.com/articles/fork-a-repo) and get started. If you have a language preference, you can filter your search using "language:X" where X is your language.
Volunteer at Mozilla
https://www.mozilla.org/en-US/contribute/signup
Contribute to the Firefox browser. The Mozilla community is wonderful and very supportive. They have a slightly different setup for how to contribute, but they will show you how to get set up.
CodeTriage
If you find you like bug stomping you can sign up for CodeTriage, sending you a new bug to work on every day without doing all the searching.
What is Git?
Git is a version control system that is quickly becoming the standard in the programming industry. Version control systems basically allow you to save copies of your files at different points in time, and switch to different versions of those files when you need to. They also are great tools for collaborating with other programmers because they allow you to "merge" two copies of a file into one.
Github Classes
https://training.github.com/classes
Github is a company that hosts git repositories for thousands of developers. They have a great tutorial on how to use Git.
GitHug
https://github.com/Gazler/githug
If you're handy with the command line, githug is a little game that helps you learn Git fundamentals.
Codecademy Learn Git
https://www.codecademy.com/learn/learn-git
Another tutorial from Codecademy about Git.
Integrated Development Environment (IDE)
An IDE is basically a text editor like Notepad but it contains a bunch of awesome features such as code completion (where it detects what you are trying to write and offers to finish it for you), integrated compilers and interpreters, and quick access to all the documentation you need. Here are some:
C/C++/C#
Visual Studio (Community Edition is free) - http://visualstudio.com
Javascript
WebStorm - https://www.jetbrains.com/webstorm
Java
IntelliJ IDEA - https://www.jetbrains.com/idea
Eclipse - http://eclipse.org
Everything else
Sublime Text - https://www.sublimetext.com
It got a bunch of great themes and a plugins that basically turn it into its own IDE.
Other stuff to know about
Stack Overflow
Stack Overflow is probably the single greatest resource for programmers ever. If you ever find yourself stuck on a problem, search on Stack Overflow for it, most likely someone there has solved it already. If not, you can post about it, and someone will probably help you out in a day or two.
Project Euler
Project Euler is a series of math problems that get progressively more difficult and complex, and you need to use code to solve them. When learning a new language, or switching back to an old one after a long period of not using it, you can do some Project Euler problems to polish my skills up.
The Art of The Command Line
https://github.com/jlevy/the-art-of-command-line
The command line is one of the most powerful tools a programmer can know. This is a great tutorial on how to learn the Linux (and Mac, for the most part) command line.
Women Who Code
Women Who Code hosts meetups in many major cities for women who are programmers or learning to program.
CoderDojo
Free programming clubs for kids all around the world.
Programming at Meetup.com
http://computer-programming.meetup.com
Learning from other people is probably the best way to learn how to program. It keeps you motivated, and it also means you have someone who you can ask questions.