So, you want to learn how to code?

It's a growing desire and a growing profession. The majority of Stack Overflow (a common coding help community) users have less than 6 years of experience. Even the president is encouraging people to learn to code. "Don't just play on your phone — program it" - Barack Obama in 2013 statement highlighting the importance of learning computer science. Programing bootcamps are popping up in every city, and the number of online tutorial has rapidly increased in recent years.

Coding isn't just for men anymore. Girl Develop It (an organization that helps women learn to code) which started with one class in 2010, now has chapters in 52 cities and 55,000+ members nationwide. Although less than 10% of Stack Overflow users are women, almost 40% have been coding for less than 2 years. And many groups have started specifically to get more women into the profession.

With this many resources, and over 20 "most common languages" where do you start?

Well, there's not a perfect starting point. However, starting with a project is helpful, but not required. It carries you though the rough spots and keeps you focused. Whether or not you have an end goal, there are resources to help you begin your journey.

Are you looking to learn to code or are you looking for resources for someone else?

Are you looking for fundamental programing concepts or professional languages?

Are you looking to become a full time developer?

Is there a specific company that you want to work for?

Do you have a specific project in mind?

Are you starting this project from scratch or contributing to an existing project?

Do you want to work with mobile, web, automate tasks and microcontrollers like arduinos, or work with data?

Do you want to access and analyze the data, or visualize it?

Your learning plan: programing concepts

Scratch then HTML and CSS

Congratulations! Your learning plan will put your kid on the path to learning and understanding code for the rest of their lives. Scratch is design by MIT to teach the basics of how code works. There are various games and tutorials based on pop culture to combine learning and fun. After the basics of how code is written and configured, HTML and CSS are a good starting point to make things visual.

Your learning plan: web basics

HTML and CSS then JavaScript

Congratulations! Your first task is to conquer HTML and CSS, which is the basis for most of the web. It will allow you to control your content in hierarchy and visual design. Once you have a solid foundation, JavaScript will be your next coding quest. JavaScript is a programing language and understanding the basics of this language will allow you to interact with its many useful libraries like jQuery that will allow you to add interactivity and movement to your content.

Your learning plan: visualizing data

HTML and CSS then JavaScript focusing on the D3.js library

Congratulations! A solid foundation in HTML and CSS will allow you to create both content and visualizations for the web. When you can control your content with HTML and CSS, you can craft your visual story more effectively. Once you have a solid foundation, move on to JavaScript where you dip your toes into programing. Knowing JavaScript will allow you to work with one of the most popular JavaScript libraries for graphs, charts and other visuals, D3.js.

Your learning plan: accessing data

SQL then R or Python focusing on specific libraries then HTML and CSS

If your are looking to access and work with large amounts of data, chances are you're going to encounter a SQL database at some point. Knowing how to access it will allow you to interact with more data. R or Python will allow you to manipulate and work with data. Python is more flexible and will also allow you to do more than just work with code, but R is specifically designed for working with data and has an easy help menu. Some knowledge of HTML and CSS will help you wrangle your findings onto the internet.

Your learning plan: mobile

HTML and CSS then Swift or Java

Congratulations, you want to make a mobile application! However, does your project require native mobile features? Native mobile features include the use of the motion like the gyroscope and the camera. If not it should probably just be a responsive website. See the learning path for Web Development

If you do want to make a native mobile application, Swift is the new language for iOS and has a simpler structure than Java. However, if you want to program for android rather than iOS, you will need to learn Java.

Your learning plan: full stack

HTML and CSS then JavaScript then Python or Ruby

Congratulations! If you want to become a full time developer, you want to at least have knowledge of the full stack of coding languages. Starting with HTML and CSS is the logical place, because it will help you shape your end product and view your back end work. JavaScript will help you add interactivity to your front end and is a good starting place for programing. If you want to move past JavaScript, learning Ruby or Python will take your developer skills to the next level.

Your learning plan: maker

Python or Ruby then HTML and CSS

Congratulations! You want to work with microprocessors or automation. These kinds of tasks can be extremely rewarding and time saving. In this case you will want to learn back end programing languages like python or ruby before you learn more visual ones like HTML and CSS. However you do want to learn both, so the back end will have a visual interface.

Find existing code, and learn those languages

No matter what, your journey of learning should begin with HTML and CSS. Your next step should be to look into the project and see what the codebase is. If you're looking at a wordpress site, you will probably want to also know some PHP. Build off of what already exists and go from there.

Learn that code stack that the company uses

Search stackshare.io for what coding languages your ideal company uses. You want to start with HTML and CSS if you don't have a base knowledge. You do not need to learn all of the languages, but if you spend the majority of your time learning Python, but the organization you want to work for writes Ruby, you are going to be less than an ideal candidate.