As a new year comes along, it's the perfect time to set new goals and learn new things. One of the most important things you should learn in our time and age is programming.

Whether you already are a programmer or a beginner who wants to get started with it, I will list websites and apps that will help you start or continue your journey in the world of programming.

Suggested Read

For Beginners 12+, check out Juni's article How to Code Your Own Website (for Beginners 12+) | Beginner Web Development!

Codecademy

Codecademy is a great platform for learning. It is the platform that helped me kick start my web development path and the platform I always check for new tutorials and learning paths.

Codecademy is a learn-by-practice platform. It helps you understand the core concept of what you are learning, but also shows you how it works by letting you do it. With their simple explanation and integrated editors and previews, you can learn and practice what you’ve learned all in one place.

Codecademy has learning paths (or tutorials) for web development frameworks like React, Data Science, Mobile Development, and more. It used to be only a website but now they have a mobile app so that you can learn on the go.

Edabit

Edabit is a website where you can learn a programming language through challenges. You can find languages for many programming languages like C++, C#, Swift, Ruby, Javascript, and more.

When solving challenges, you can also see resources that will help you understand how you can solve the challenge. You can also discuss with other users the best way to solve challenges. It’s very helpful in not only learning a programming language but also in learning problem-solving through the challenges.

Udemy

Udemy is very helpful for those who like to learn through courses, with instructors and resources available. Udemy is a platform to learn anything, and one of those things is programming.

Although most of the courses are not free on Udemy, you can still find free courses that are very helpful. For example, I took a course about Web Design that was really helpful. You can check my summary about it as well.

Suggested Read

Take Free Coding and Programming Courses on FutureLearn!

W3Schools

If you ask any web developer about W3Schools, they all will say that they have at least visited it 10 times throughout their journey in learning web development. W3Schools is a website that has tutorials on the most important programming languages and concepts you’ll need in web development.

The explanation is simple and divided in a way that makes it easy for any programmer to learn from it. Even those who already are skilled programmers still refer to it when they need to remember a function.

Codepen

Although Codepen is not labeled as a learning platform, it was very helpful for me while learning, practicing, and expanding my skills in CSS. Whether it was through seeing people’s ideas and taking inspiration from them, or through the weekly and daily challenges they provide on Codepen, I was able to practice my CSS and become much better at it.

Codepen is also good for practicing Javascript, SCSS, and much more. It does not provide you with tutorials, but it helps you practice what you know and try new ideas as well.

SoloLearn

SoloLearn is another platform that provides simple, learn-by-practice tutorials on different programming languages. Although from personal experience I wouldn't say it's on the same level as Codecademy, it is still helpful for beginner programmers who are still not familiar with a lot of concepts in programming.

Their tutorials are light and fun, not too complicated. I would consider it a great platform to start getting into programming and maybe deciding where you want to go from there. Also, once you finish learning a programming language you will be provided with a certificate from SoloLearn!

CodinGame

CodinGame is another platform that helps you learn programming languages through solving challenges. However, CodinGame is unique as its challenges are all related to games. Instead of solving the same old challenges that you will find on all challenge-learning based platforms, you get to solve challenges that are parts of games.

You can choose from many languages to solve any challenge, and you will be able to use their editor right on the website, with a simulation showing you your results in the game. You can also participate in contests against other users. The entire experience feels like a fun game!

Google Developers Training

On Google Developers Training, you can learn about Web and Android Development. You can also learn about Firebase, Machine Learning, and more.

The training can be videos, Code Lab and quizzes. They have different paths for Android Development, for beginner and advanced programmers. This helps you understand Android Development more clearly as a beginner, then transition to the advanced programmer training as you progress your skills. You can learn in Kotlin or in Java.

Medium and Developers' Blogs

Blogs are a great way to learn concepts about programming in general. You can find specific tutorials or solutions to the problems you are facing.

Medium is a blogging platform where you can find tutorials and articles about many programming languages or problem solutions. You can also find on google other blogs that will help you throughout your journey.

GitHub

Although GitHub is not directed towards learning programming, it is very important for any programmer to start experimenting with GitHub.

By contributing to other open-source projects and helping the community, you can expand your knowledge in different areas while helping open source projects.

If you’re a beginner and you’re not sure where to start, you can check out a list of beginner-friendly projects here. I personally have a repository and open source project sButtons, that welcomes everyone including beginners, that you can also start contributing to.

Conclusion

The list above is among many platforms that will help you learn programming in 2021. Do you know other platforms that would also be helpful for learning new languages? Let me know below!