Before choosing your first programming language, you should also check out this infographic on What Is Programming And What Do Programmers Do.
I have also compiled a list of best programming tools and resources for each programming language, to help you get started quickly.
Special thanks to Prithviraj Udaya for allowing me to use his awesome The Lord of the Rings analogy on Quora.
Note: A good programmer must know at least a few programming languages to learn different ways to approach problems. They continue to learn and grow as technology advances. This is just the beginning of your programming journey. Simply pick one and start coding now!
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.
– Linus Torvalds (creator of Linux)
Click on the infographic above to view in full size.
Order the printed poster here or get the PDF version here.
Best Programming Tools & Resources
Here is the compiled list of the best courses, tutorials, books, etc. for each programming language. Feel free to suggest any new resources to keep this list growing!
Beginners read this: IDE stands for Integrated Development Environment. It is a tool that facilitates developers to write code, which normally consists of a code editor, compiler, and debugger.
Also, you need to understand some important concepts behind programming. Check out: 40 Key Computer Science Concepts Explained In Layman’s Terms.
Official site: https://www.python.org/
- Official Python getting started guide
- Start with a code editor like Sublime Text, then maybe move on to IDE like PyCharm or PyDev for more complex projects.
Courses
- Treehouse – Python Basics course
- Udemy – The Ultimate Python Programming Tutorial
- Free
- Udacity – Intro to Computer Science
- Codeacademy – Python
- Google’s Python Class
Free Interactive Tutorial
Books
- Python Programming: An Introduction to Computer Science
- Python Programming for the Absolute Beginner
- Think Python: How to Think Like a Computer Scientist (Read online for free here)
- Learn Python The Hard Way (Free)
For Web Development
If you want to create websites using Python, try Flask, a beginner-friendly Python web framework:
- Official Flask’s Documentation: Very well-written and complete documentation
Then, you should probably move on to Django, the most popular and widely-used Python web framework:
- Official Django getting started guide
- Tutorial: How to Tango with Django: A Python Django Tutorial (free)
- Book: Test-Drive Development with Python (Read online for free here)
Official site: http://www.oracle.com/technetwork/java/javase/overview/index.html
- Firstly, you should understand the concept of object-oriented programming (OOP):
- A great car analogy: How to explain OOP concepts to a non technical person?
- A more detailed version: Java Tutorial: Don’t Fear the Oop!
- Download and install Java SE Development Kit (JDK)
- IDE: Eclipse or IntelliJ
- Official Java Tutorial by Oracle
Courses
- Treehouse – Java Basics Course
- Udemy – Java Tutorial for Complete Beginners
- Udemy – Programming Java for Beginners – The Ultimate Java Tutorial
Tutorials (Free)
- Eclipse And Java Video Tutorials
- Learn Java – Free Interactive Java Tutorial
- YouTube Videos – Java (Beginner) Programming Tutorials
Books
- Java: A Beginner’s Guide
- Thinking in Java (Get the older edition for free here)
- Effective Java
- After learning the basics & fundamentals: Head First Java
- If you are serious in mastering Java: Java The Complete Reference
- Think Java (Free)
If you want to create Android Apps:
- Download Android Studio and SDK Tools
- Official getting started guide
- Courses
- Treehouse – Build a Simple Android App
- Udemy – Learn Android Programming From Scratch
For C/C++
- A good read about why C and C++ are different languages – Should I learn C before learning C++?
- Why C is not a subset of C++
- IDE: Visual Studio or Eclipse
- Tutorials & References: Cprogramming.com
For C
- Books
- C Programming Absolute Beginner’s Guide
- A must have if you are serious in C programming – The C Programming Language
- C Programming: A Modern Approach
- Learn C The Hard Way (free)
- Tutorials (free)
- Learn-C.org
- Tutorials Point – C Tutorial
- C FAQ
For C++
- Great list of books for all levels – The Definitive C++ Book Guide and List
- cplusplus.com – The C++ Resources Network
- Course
- A great course for game development: Udemy – Learn C++ Game Development
- Tutorials (free)
- LearnCpp.com
- Console C++ Video Tutorials
- Tutorials Point – C++ Tutorial
- Books
- Programming: Principles and Practice Using C++
- The C++ Programming Language
- For game programming – Beginning C++ Through Game Programming
- Code Editor: Sublime Text
Courses
- Code School – JavaScript
- Codeacademy – JavaScript (Free)
- Crockford on JavaScript: A Public Lecture Series at Yahoo! (Free)
Tutorials (Free)
- Mozilla Developer Network – JavaScript basics – Learning the Web
- Superhero.js
Books
- A Smarter Way to Learn JavaScript
- JavaScript: The Good Parts
- JavaScript Patterns
- JavaScript: The Definitive Guide
- Eloquent JavaScript (Free)
For front-end developers, you must also learn HTML & CSS. Probably jQuery as well.
- A great analogy for HTML, CSS, and JavaScript: Part of a Website Explained as a House
- Books
- Web Design with HTML, CSS, JavaScript and jQuery Set
- JavaScript and JQuery: Interactive Front-End Web Development
- Courses
- Tutorial: W3Schools (Free)
For server-side developers, check out Node.js:
- Courses
Official site: http://msdn.microsoft.com/en-US/vstudio/hh341490
- For what reasons should I choose C# over Java and C++?
- Firstly, read this brief explanation about the relationship between C#, .NET, and ASP.NET
- Official C# getting started guide
- IDE: Visual Studio
- For web development: Official ASP.NET getting started guide
- .NET is now open source
- Check out Mono and Xamarin to develop cross-platform software using C#
Courses
Tutorials
Books
- Head First C#
- C# 5.0 in a Nutshell: The Definitive Reference
- CLR via C#
- Beginning ASP.NET 4.5: in C# and VB (For web development)
- Programming C# for Beginners (Free)
Note: Theses resources are mainly for Ruby on Rails framework only.
Official site: http://rubyonrails.org/
- Official Ruby on Rails getting started guide
- IDE: RubyMine
- You must have a basic understanding of HTML, CSS, and JavaScript to develop websites using Ruby on Rails. Go to “JavaScript” tab for more information.
Courses
- Treehouse – Ruby Basics Course
- Code School – Ruby
- Udemy – Beginners Ruby Programming Training
- Rails for Zombies (Free)
Tutorials
- RailsCasts (some episodes are free)
Books
- Ruby on Rails Tutorial (free to read online)
- The go-to books for beginners – Agile Web Development with Rails 4
- If you are serious in Ruby on Rails development – The Ruby Programming Language
Official site: http://php.net/
- IDE: PhpStorm
- Great documentation of up-to-date PHP reference and resources: PHP: The Right Way
Courses
- Treehouse – PHP Basics Course
- Udemy – Beginner PHP and MySQL Tutorial
- Codeacademy – PHP (free)
Books
- PHP and MySQL for Beginners
- Head First PHP & MySQL
After you’ve learnt the basics, you may consider to use a framework:
- CodeIgniter – Excellent for beginners, easy and suitable for small projects
- Laravel – One of the best and most popular PHP framework
Official site: https://developer.apple.com/
- Should I learn Swift now instead of Objective-C if I want to be an iOS developer?
- What’s the difference between Objective-C and Cocoa?
- Official getting started guides:
- You may want to learn Swift as your first/next language.
Courses
- Treehouse – Objective-C Basics
- Code School – Try Objective-C (Free)
- For iOS app development:
- Treehouse – Build a Simple iPhone App With Objective-C
- Code School- iOS
- Udemy – This Is How You Make iPhone Apps – iOS Development Course
Tutorials (Free)
- Cocoa Dev Central
- Tutorials Point – Objective-C Tutorial
Books
- Objective-C Programming: The Big Nerd Ranch Guide
- iOS Programming: The Big Nerd Ranch Guide
- Programming in Objective-C
- Cocoa Programming for Mac OS X
- 8 – 16 years old: Scratch – Create your own games, stories, and animations easily.
- More fun ways to learn programming for kids:
- 10+ years old: Lego Mindstorms – Write programs to bring the robot to life.
- 3 – 8 years old: Robot Turtles – Board game that teaches programming.
- Great list of coding apps and websites for kids
- Interactive courses for children – Tynker
- Once your kid has learned the fundamentals of programming, you can proceed to teach them Python (Refer to “Python” tab).
- Suitable Python book for kids: Python for Kids: A Playful Introduction to Programming
More Recommended Sites
- Best online programming course providers:
- Treehouse (First month is free): Best for absolute beginners. Choose this for your very first course.
- Codeacademy: Awesome and free courses for beginners.
- Code School: Recommended as your second/third course. Suitable for “intermediate beginners”.
- Udemy: Huge list of online courses. Some are excellent. Remember to read the course reviews before signing up!
- Code.org
- Lynda (free 10-days trial): Have some great beginner’s courses too.
- Khan Academy: Computer programming courses
- MIT OpenCourseWare: List of most visited courses
- edX: Free online courses from world’s best universities
- If you are using an IDE, you should also get a source code editor to view and edit code quickly: Sublime Text or Notepad++
- Amazon: Best sellers of introductory programming books
- One of the best practical guides to programming: Code Complete
- YouTube channel with great tutorial videos: thenewboston
- CS50.tv : the Harvard introductory computer science course
- Google Blockly: A visual programming language (similar to Scratch)
- CodeTee.com: Awesome store to get funny programming t-shirts and gifts