1. Figure out why you want to learn to code.
It's tempting to jump right in when you start coding. But if you don't have an end goal you may become frustrated and stop learning before you get to the fun.
So, before you start studying, think about why you want to know how to code. Think about the projects you want to complete, why this skill excites you, and what resources you have available.
For example, say you want to become a developer to earn more income for your family. Do you know where you want to work and what kind of projects they need developers for? Are you ready to put in the time to learn to code, learn the right programming languages, and build projects that show you have what it takes?
Setting a broad goal like that can be really frustrating. Instead, start with smaller, more specific goals. For example, say you want to build a mobile app for your friend who is training for a half-marathon one year from now.
This goal will:
- Help you build the skills you need
- Give you a sense of which programming language to start with
- Sets a deadline so you can manage your time while learning
2. Choose which coding language you want to learn first.
If you're trying to figure out which programming language to start with, think about your long-term goals. Are you coding for fun or to advance at work? Do you have a flexible timeline or do you need to finish a project in a hurry?
As a beginner, you may want to start with a language that doesn't use data structures or algorithms. If that's the case, HTML or CSS are great places to start. But languages like Java and Python are also great for beginners, and they also have a wide range of applications.
It can sometimes take months to learn a programming language, so take some time to make this decision to make sure that your time is well spent.
3. Take online courses.
Learning to code no longer requires a classroom setting. Today, there are thousands of online programming courses that cover everything from basic HTML to data structures to complex algorithms.
Your first course should introduce the basics of a language and contain interactive modules and assignments to guide your learning.
Courses create a structure for learning, which is essential as concepts in computer science build on each other. An organized course keeps everything digestible and ensures you’re learning things in the correct order.
Popular free course providers include:
- Harvard’s acclaimed Introduction to Computer Science course on edX and the CS50 YouTube channel
- Scaler Topics
These options are great for determining early on whether you’re ready to invest the time to learn a particular language.
There are also plenty of paid courses available for a fraction of what in-person classes will cost you.
These choices cover a wide range of beginner, intermediate, and advanced CS topics:
Some paid services offer free courses or trials if you want to get a feel for their teaching before you commit.
4. Watch video tutorials.
You’ve probably watched a YouTube tutorial or two — why not do the same for coding?
While online courses are your best bet for hands-on experience, online videos can supplement your learning and occupy your curiosity. My personal favorites include:
- Crash Course Computer Science
- Tom Scott’s The Basics
Both cover broader topics in computing.
5. Read books and ebooks.
Prefer an old-school approach? Pick up a book on your beginner language of choice. Books will introduce you to fundamental concepts and inform your coding.
Learn HTML & CSS with this Free Ebook
Here are some established texts for each recommended beginner language:
- HTML/CSS: The Beginner's Guide to HTML and CSS for Marketers
- Python: Python Crash Course
- C: C Programming Absolute Beginner's Guide
- C++: C++ Primer
- C#: C# 8.0 and .NET Core 3.0 – Modern cross-platform development: Build applications with C#
- Java: Effective Java
- PHP: Head First PHP & MySQL
- Ruby: The Well-Grounded Rubyist
- SQL: SQL in 10 minutes, Sams Teach Yourself
- Swift: Swift Programming: The Big Nerd Ranch Guide
6. Use tools that make learning to code easier.
While it's great to know that you don't need any special tools to write code, there are tools that can help.
Text editors include features to make coding easier like color coding, auto-complete, find-and-replace, and dark mode.
Most professionals use a code editor. This tool can help you write clean code faster. Code editors are like text editors, but they have extra features that help you manage and edit your code like:
- Syntax highlighting
- Code lookup
- Built-in terminal environment
Notepad++, Sublime Text, and Emacs are popular editors for beginners.
You’ll also want to get to know your computer a little better. When you start coding you should learn how to navigate the console. This is the text-based interface for your operating system.
The console lets you find files and execute commands on them more quickly than the standard graphical user interface (GUI). Familiarize yourself with how to use it, including the basic UNIX commands, since you’ll be doing things that aren’t possible in the GUI.
Many projects start simple but get more complicated as the project goes on. Using a project management tool you can share files, update timelines, and break out separate parts of coding projects. This makes it easier to keep track of side projects and extra files while sticking to your timeline.
As you work on your coding projects, you may run into bugs, roadblocks, and other challenges. This can be super frustrating. Rubber Duck Debugging may sound silly, but it can help you simplify your problem and find useful solutions.
7. Check out how other people code.
It’s easier for some people to edit someone else's work than it is to create from a blank page. If this is you, a great way to learn how to code is to go through someone else’s code.
Checking out other programmers' code can also inspire you and push your coding skills even further. This approach will help you:
- Better understand your own code
- Understand new code faster
- Give you tangible examples of quality coding
Start with a program or code file you like. If you're not sure what code to start with, GitHub and searchcode are great starting points. Try to start with peer-reviewed code or open-source projects if you can.
If you know what the code does, choose one small section and then work backward. This will help you understand the function of every line of code. It's also a good idea to read the documentation. This will show you the ideas behind the code you're reviewing.
8. Complete coding projects.
You learn programming by doing — there’s no way around it. You can read up on all the concepts and syntax necessary to write functional code.
But unless you put what you learn into practice, the ideas won’t fully materialize in your mind. That’s where projects come in.
A project is any program (or website) built with your language of choice. When starting out, keep projects short-term.
If you’re taking a course, you may get projects designed to solidify a concept. There are also loads of beginner programming projects you can try on your own. Some classic projects include:
- A time converter, in which the user submits a number of seconds and your program gives the equivalent in hours, minutes, days, etc.
- A random number generator, which produces a random number between two values specified by the user.
- A calculator, in which the user specifies their inputs and mathematical operation, and your program gives an output.
- An address book, in which users can submit contact names, then search for contacts stored in your program.
- An alphabetizer, in which the user offers a list of words, and your program sorts them in alphabetical order.
- A hangman game, in which the user tries to guess a hidden word by inputting letters, and your game gives feedback for correct or incorrect guesses. When the user guesses all the letters to your word, they win.
A quick Google search will reveal even more mini-challenges that require you to apply your skills to real-world problems.
Benefits of Coding Projects
On top of practicing concepts, projects offer two more benefits to your learning.
First, they’ll keep you motivated. Projects help solidify the "why" behind your coding and set clear, tangible benchmarks for your progress. Each completed project means one more skill under your belt. As I was learning, this was very encouraging.
Second, coding projects, especially long-term ones, give you something to show for your work. It’s one thing to put "Python" on your resume — it’s another to show you built an entire website or application from scratch.
Projects are a must for entry-level programming jobs, as they prove competency in a given language.
How to Stay Motivated While You’re Coding
When embarking on longer-term projects, think of things you’re willing to invest time in. Whether it’s a personal website, a mobile application, or a desktop tool, you’ll hit speed bumps along the way. Choosing a project you truly enjoy and care about ensures you follow through.
Another great way to stay engaged with coding projects is by freelancing. You don’t need to be an expert programmer to build a useful tool for someone. Reach out to a friend, family member, or local business in need of a tool or website — it’s a win-win.
9. Find a mentor and a community.
The resources I’ve listed so far are all valuable, but they’re mostly solo efforts. Having a friend or an online community to give further guidance can be invaluable to your learning.
First, I recommend finding a mentor. As you progress, you’ll probably encounter issues that, no matter how hard you try, you just can’t crack. This is where mentors can help.
A mentor doesn’t need to be an actual teacher — they can be anyone knowledgeable in your language. They should be able to explain difficult concepts and point you to solutions. An experienced mentor can help you follow coding practices not covered in tutorials and offer advice for navigating a career in tech.
You may also want to join a community. Look for local groups, networking events and meetups in your area, and hackathons where you can make in-person connections with other programmers.
Online developer communities are also a rich resource for beginners.
Be sure to check out:
- Stack Overflow, a forum site for programming questions and discussion.
- GitHub, a code repository for open-source projects with an active developer community.
- Women Who Code, a nonprofit that organizes events, communities, and job postings for women pursuing careers in technology.
- r/learnprogramming, a subreddit (a microsite on Reddit.com) for beginner coders.
10. Consider enrolling in a coding boot camp.
A coding boot camp is a short-term training program that packs a comprehensive coding curriculum into a period of several months. These programs are fast-paced, immersive, and a launchpad for a development career.
Coding boot camps are intensive and expensive — not the kind of thing to dive into without any coding experience.
These programs are mostly for beginners who are set on a career in development and are ready to commit time, energy, and money to quickly get the necessary skills.
While grads tend to find employment in the tech industry, understand that this isn’t a guaranteed outcome. You’ll be setting aside a decent chunk of your year and savings for such a pursuit. Still, it’s difficult to top an in-person learning environment surrounded by peers and teachers as motivated as you are.
Coding vs. Programming
The terms coding and programming are often used interchangeably, but they don't always mean the same thing. Both coding and programming mean writing instructions for a computer. But programming might also include algorithms and data structures. Generally, the term programming describes more advanced projects.
While you can code with just a computer and some time, some programming might need specialized software tools. Programming projects are usually bigger and more complex. They may need project management and a more solid knowledge base.
Coding requires knowledge of at least one coding language, a set of syntax and rules that computers can understand. There are hundreds of coding languages, each one unique in its purpose and what it can do.
But some languages are easier to learn than others — these are best to start with since they’re the fastest way to learn the fundamentals of programming.
Programming languages give you a structure for the instructions you're writing. This language looks like English, but not exactly. Programmers call the terms and grammar in a programming language syntax.
Low-level languages like Assembly or Machine are easier for machines to read than humans, so they can be tough to learn. That said, a middle-level language like C++ is useful to know if you want to write:
- Operating systems
- Database systems
- Image or video processing software
High-level languages are usually easier for beginners. Some focus more on structure, while others are more interactive and can perform more complex functions.
Below are some of the best languages for beginner coders. Try to get comfortable with just one language that aligns with your goals, then explore others if you’d like.
Don’t worry about choosing the wrong one, though. These languages share underlying concepts, so you can start with one and switch to another if you need.
Hypertext Markup Language, or HTML, is the foundation of the internet — it’s used to set the content of web pages. When you load a web page, typically what you see is an HTML document rendered by your browser.
If you’re unsure whether coding is your thing, HTML is the easiest language to sample.
This is because HTML isn’t technically a programming language — it doesn’t execute scripts and you can’t build functional programs with it. Still, HTML is everywhere online, so if you want to understand the internet, you’ll first need to understand HTML.
You might be less familiar with HTML’s sibling language, CSS. HTML handles what content appears on a web page, but doesn’t affect how that content looks.
This is where Cascading Style Sheets, or CSS, comes in. The CSS language handles the styling of HTML — it sets features like colors, sizing, fonts, and even entire page layouts.
CSS is also not a programming language. It’s a set of rules applied to HTML.
HTML and CSS are almost always used together, so I recommended learning both. Otherwise, your web pages will look rather plain.
If you’re not sure how to learn coding, start with HTML and CSS.
HTML and CSS are easy to learn largely because they don’t require you to think through the computational logic of programming languages.
Learning HTML and CSS can also feel less abstract than other languages since you see the results of your code quickly — simply create a .html file and open it in your browser.
Or, open an existing website and use your inspect tool to peek at the underlying code. This makes it possible to learn two languages you use every day, in a day.
But, if you want your web pages to do things, you’ll need...
Python is a popular programming language for beginners because of its user-friendly syntax and versatility.
Much of Python code reads like English, which helps beginners learn basic concepts like functions.
Python also has many code libraries. These are groups of pre-built functions that you can plug into your code instead of writing the functions out yourself. With Python, you can build many different types of programs. Many introductory courses also base their projects on this language.
C is another popular choice for introductory courses. It’s wordier than Python and often requires beginners to write more code to achieve the same things.
This is more work, but useful for understanding abstract concepts. With C, you’ll learn skills that can be easily applied to other, more succinct languages.
C++ is a successor to C. C++ syntax is similar to C with the addition of objects, a powerful variable type that makes programming sophisticated applications easier.
I recommend beginning with C, though, since there are fewer concepts to learn, all of which can be mapped to C++.
C#, also called C-sharp, is popular for developing video games, mobile and desktop apps, and enterprise software. C# shares a common source with C++, but while C++ and C have many overlaps, C# is more like Java.
C# is easy to learn and there are many ways to use it. If you plan to use both C++ and C#, you may want to learn C++ first. This will make it easier to understand C# and can help speed up the learning process.
Like Python, Java’s syntax is easy to read and understand by human programmers — often, complex tasks can be handled by one command.
Java is popularly implemented in android mobile applications. It’s another great base language with principles that can be intuitively applied to learning other languages.
HyperText Preprocessor (PHP)
PHP is a server-side, open-source programming language for developing web applications. It makes it easy to add dynamic information, like updated news stories, to websites.
You can also embed this language into HTML, which makes it easy to add functions to your website without needing external files. PHP is also great for database access, making it simple to access and store data.
Ruby, also called Ruby on Rails, is a simple language that's useful for creating automation tools, desktop applications, and rapid prototypes.
Ruby is another open-source server-side programming language. Its framework also offers default structures for web pages, web services, and databases. This makes it a useful tool for developing web applications.
While this language is easy to read and write, it may not be the best choice for your first programming language. This is because it's also quite flexible, which means that it easily accepts changes.
Flexibility is great when you're first learning how to make a coding project go. But it can impact changes to your code as you maintain the project over time.
SQL is another useful language for beginners. You can use this language to update, store, and retrieve data from a database. It's also the standard language for database management systems, according to the American National Standards Institute.
It can take some time to learn SQL if you don't already have some understanding of programming. That said, this language is popular in tech and with data professionals, so it has a lot of relevance in the workplace.
If you are learning to code to create projects for Apple devices, Swift is a good language to start with. Designers at Apple created this language with beginners in mind. And if your primary goal is to develop mobile apps for iOS devices, this should be your language of choice.
While programmers created most products since 2014 with Swift, you may also want to learn Objective-C.
Developers created this language in the 1980s. It's what their team built most iOS tools with. It uses some C syntax, so if you've learned C or C++ already, you may want to start with Objective-C as you start learning.
Coding for Beginners
There are many ways to approach the practice of coding, and some methods and languages will work better for you than others.
No matter what or how you learn, however, remember these beginner tips:
At the top of this post, I said that anyone can learn to code. That doesn’t mean it’s easy.
Coding requires you to approach problems in ways you haven’t before. Certain topics may seem completely nonsensical to you, yet central to the language you’re learning. Problems that might seem easy at first will end up being far more complex to implement than you expected. You might spend hours hacking away at an assignment without seeing results.
And we can’t forget debugging. You’ll quickly learn that computers are nit-picky, and will only do exactly what you tell them. Tiny typos like a missing semicolon or incorrect operator will break your entire program, and it’s on you to track down the culprit.
Even coding for beginners isn’t easy.
All of this can be uncomfortable and discouraging, and that’s okay. Do yourself a favor and progress slowly and steadily, giving yourself time to let everything soak in.
The best programmers were once where you are, and everyone has to learn the same things to start. Go easy on yourself, stick to the goals you’ve set, take breaks, and you’ll be fine.
Get comfortable with the fundamentals.
The early days of learning a programming language are all about the essentials. You might start by learning binary, data types, and how to print to the console. From there, you’ll explore topics like:
- Conditional logic
It’s essential that you fully grasp each of these concepts before advancing. This is because everything you learn in computer science builds on topics that come before.
If something doesn’t make sense, keep reviewing it until it does. And don’t assume it will make sense later, in the context of future lessons.
If you’re learning from a tutorial, be sure you understand what each activity is meant to teach you.
Complete all exercises to experience first-hand how each topic applies to coding. And stay patient — you can’t embark on an ambitious project until you grasp the fundamentals.
Write clean code from the start.
Here’s something an online course may not teach you: On top of learning how to write your code, you should also practice writing it well.
What does this mean? For any given computation, there will be more than one way to program it. You should always strive to write it in the most concise and readable way that you can.
Developers usually work in teams, so others will be reading your code often. If it’s hard to decipher, fellow developers won’t look forward to working with you.
Even if you decide to freelance, writing clean code ensures you’ll understand your own code. It’s better to build the habit of clean coding now, as it will save you hours trying to decipher your work after you haven’t looked at it in months.
Why is clean code important?
You might be wondering why you need to learn clean code at this point. You’re a beginner, so shouldn’t writing functional programs be the main goal?
Well, yes. This is about establishing good habits early. If you put in the extra work now, you’ll save yourself (and others) some sanity down the road.
A good way to achieve this is by keeping your lines and your functions short. I recommend limiting each line of code to 80 characters max and each function to no more than 15 lines.
While limiting at first, these rules will train you to favor efficient code over the first idea that occurs to you.
Also, make a habit of commenting. Comments are segments of code that aren’t processed by the computer, so you can write whatever you want inside them.
Programmers use comments to clarify the purpose of their code. Learn how comments work in your language and, at the very least, leave comments at the top of your functions explaining the job of each one.
Search is your friend.
There’s no shame in using Google to find the solutions to your coding problems. In fact, professional developers do it all the time.
If you’re struggling, someone’s probably been in the same situation and dropped a question to a forum. You’d be surprised at how many solutions you’ll find with super-specific queries.
Plus, it’s quite satisfying to close 20 tabs of Stack Exchange after finally fixing a stubborn bug.
Coding Is More Than Just the Code
To finish up, I want to share one more valuable piece of advice from my first computer science class.
From a beginner’s perspective, it may seem like learning to code means learning how to write code.
This makes sense: When we imagine a computer programmer, we see someone writing out code on a computer — it’s called "coding" after all.
Once you begin, though, you’ll learn that this isn’t the whole story. You’ll spend a lot more time thinking about what to write than actually writing it.
Coding is problem-solving.
This is because coding is more about solving problems than knowing the syntax. Learning to code is learning to think like computers do, deconstruct problems into their components, and address them with the tools you’re given.
So, yes, you’ll learn to write some impressive code and eventually build amazing things. But first, you’ll develop the thinking skills that can get you there.
In my years of coding, this approach to problem-solving has changed not only how I tackle technical challenges, but how I approach problems in general. I hope you’ll experience the same.
I wish you the best of luck in your journey. Keep going. You got this.
This post was originally published in December 2020 and has been updated for comprehensiveness.