How to Learn Coding: From Theory to Practice
Tags: beginners, java, coding, learning
Published: 2020-08-08 08:43:21

---
title: How to Learn Coding: From Theory to Practice
published: true
description: In this post, I will help you start your journey in the world of coding — you will figure out the best ways to make the learning process efficient. Following these tips will put you on the right track.
tags: beginners, java, coding, learning
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/7uf9l0p1rtbo44mlg4sn.jpeg
---
Software development is one of the most popular professions today with an average [salary of $59,568](https://www.payscale.com/research/US/Job=Web_Developer/Salary) a year. As the demand for promising coding professionals is not going anywhere, many people strive to master new skills to join the ranks of developers. But, even if you don’t plan to become a full-time developer, obtaining experience in coding will open up more opportunities and greatly benefit your future career.

In this post, I will help you start your journey in the world of coding — you will figure out the best ways to make the learning process efficient. Following these tips will put you on the right track.

## Top Recommendations on How to Learn Coding
There is no single correct algorithm to follow to become a first-class developer. However, I have a few encouraging pieces of advice for everyone who wants to learn to code independently but has no idea where to start.

Let’s get right to the point.

## Start with a Brainstorm
Every single process requires thorough preparation. Coding is no exception. Before starting to learn any programming language, it is quite important to decide on the real reasons you want that. Answering the following questions will let you figure that out.

**What reasons are there to become a dev?**

* Am I going to learn just for fun?
* Do I want to get a promotion or change my career?
* Do I have an idea for my own app and need appropriate skills for it?

**What kind of software developer do I want to become?**

* Do I plan to work in a company?
* Do I want to work individually?
* Is freelance a better option for me?

**What industries am I interested in?**

* Web development?
* Server-side projects?
* Game development?
* Big Data, or others?

Additionally, do some research among different industries, be it fintech or AI, enquire about what kind of programmers they are looking for, and learn job specifics and salaries to decide where you want to work. Of course, if you already have a preferred industry in your mind, you’re a step ahead.

Answering the given questions will also help you determine the programming language to master. E.g., creating a well-performing OS or alternatives to prominent photo editors may only require studying formal computer science. The latter will give you a clear understanding of C++ language, data structure, memory allocation, and algorithms.

Although, if you want to make a mid-career change to a tech job, it is reasonable to apply for an intensive website development program rather than spend a fortune on obtaining the second degree.

## Choosing the Right Programming Language

Now you know the reason for learning to code, so choosing the right language will be way easier.

In a few words, mobile apps flawlessly perform if they are based on Java, Swift, or Kotlin. Javascript, in its turn, is suitable for front-end development, while PHP and Python will benefit back-end devs. To create video games, developers prefer C++.

Choosing the programming language requires considering its popularity on the market. Let’s take a quick look at the TIOBE Index. Java has never left the top three most popular coding languages. Two other languages commonly used in many areas of software development include C and Python, which are unlikely to lose their popularity in the coming years.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/sprzgr3lugvt25r161d3.png)

For a better idea of the most commonly used programming languages, I will give you a quick overview of them.

### Java
![java](https://dev-to-uploads.s3.amazonaws.com/i/p3co4hunnv29i9ory3gv.png)
[Java](https://java.com/en/download/) is an easy-to-manage object-oriented multithreaded programming language with a good level of security. It is an independent platform that follows the clue “Write once, Run anywhere”, which means you can transfer the already written app between different platforms. Java also ensures backward compatibility and is easier to keep up with compared to C++ and any other programming languages.

### Main uses:
* Server-side enterprise applications
* Desktop enterprise
* Android apps (including games)
* Big Data
* Embed Scientific Applications Systems
* Finances and Trading
* Software Tools
* Sometimes — Big Games (such as Minecraft)

### Python

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/sbk5ooqinmzn3z1awxnd.png)

[Python](https://www.python.org/) is another high-level, server-side interpreted scripting language. It can be used as an independent language or as a part of another framework. With its constructs and object-oriented approach, it allows developers to write readable code for small and large projects.

### Main uses:

* Desktop GUIs
* Software
* AI and ML
* Data science and visualization
* Web scraping apps and more

### C Language

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/veqzotecoqznbddnruqz.png)

[C language](https://www.cprogramming.com/tutorial/c-tutorial.html?inl=nv) is a machine-independent, general-purpose programming language frequently used in various applications, including low-level ones. There is an opinion that it is a base for programming, so if you’ve mastered C language, you can easily master the others.

### Main uses:

* Embedded systems
* System and desktop apps
* Browsers and their extensions
* Databases
* Operating systems

### Javascript

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/7bysudr4dwt1mvy63n67.png)

[JavaScript](https://www.javascript.com/), abbreviated as JS, determines a high-level and multi-paradigm programming language used for client-side page behavior. JS is also known as one of the key technologies enabling interactive web pages and playing a significant role in building web apps.

### Main uses:

* Front-end web development
* Non-browser applications
* Games and APIs
* Web-based slide decks
* Smartwatch apps, etc

### PHP

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/r5x1kxj74a1ur3wdvj1m.png)

[PHP](https://www.php.net/) refers to an open-source scripting language used to generate dynamic page content that supports a wide range of databases. PHP runs on various platforms and is compatible with almost all commonly used servers, including Apache, IIS, and others. PHP files can support text, HTML, CSS, JavaScript, and PHP code.

### Main uses:

* Web development (backend)
* LAMP platform used by Facebook and Yahoo
* CMS platforms
* Form data collection
* Encrypted data
* Cookies

### SQL

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/348a6s97dn9bkxcfo1sf.png)

[SQL](https://www.iso.org/standard/63555.html) stands for Structured Query Language used to work with databases. MySQL, an open-source version of SQL, is the most common way to interact with databases.

### Main uses:

* Relational database management systems
* Data query language
* Database transaction management
* Manual analysis
* Procedures, user-defined functions, triggers, indexes, etc.

### Swift

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/9jjgnetg4978p83kvb1j.png)

[Swift](https://swift.org/) is a six-year-old product by Apple Inc. built using a modern approach to safety, performance, and software design patterns. This general-purpose coding language makes writing and maintaining programs easier for developers.

### Main uses:

* Mobile and desktop apps for iOS and OS X
* Cloud services
* A new class of modern server applications
* Event-driven network application framework
* Server-oriented tools and technologies, comprising metrics and database drivers, etc.

### C Sharp

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/nsyin6lraom4iz8qr564.png)

[C# language](https://docs.microsoft.com/en-us/dotnet/csharp/) (pronounced “see sharp”) is more or less like Java, but made by Microsoft. It is a type-safe object-oriented language used to build secure and robust apps that run in the .NET ecosystem.

### Main uses:

* Backend services
* Microsoft .NET-connected apps
* Windows apps
* Server-side web applications
* Games with the Unity game engine, etc.

## Give Online Courses a Try

If you don’t feel comfortable about an in-person coding-intensive program, there are multiple courses on the web to choose from. Since many of them teach the same coding language in different ways and picking up the right course may be challenging, I’ve put together a few working solutions.

### Practical Training

I’ve recently had a talk with fellow developers about what advice they would give to newbies. They all answered that the more practice, the better. So, I’ve decided to put practical training in the first place. Other than theory, coding needs practice that allows for developing problem-solving skills. For this, you need to choose the right platform.

For instance, you can go for coding platforms based on practice, such as:

* [CodeGym](https://codegym.cc/). This online course is directly aimed at studying Java programming and consists of 80% practice. Despite the theory, it offers 1200 small practical tasks of increasing complexity. To get experience and land a job, you need to write tons of code.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/luhejbzhdveijxezhw7t.png)

* [FreeCodeCamp](https://www.freecodecamp.org/) with a whole lot of project-based tasks. Also, they have a great News and Forum section. You could get a certification in Python, JavaScript, HTML, CSS, etc.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/z8dexoete18zj43jnpe4.png)

* [Code4Startup](https://code4startup.com/) with an ability to write your first line of code for an existing business.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/hri3hksuxv9a0slqs872.png)

* [Codewars](https://www.codewars.com/) addictive assignments that let you test your skills while competing with your fellow developers.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/nk9q3w6zldc6nsdixntf.png)

* [Code Avengers](https://www.codeavengers.com/) with a bulk of engaging quizzes on different programming languages, etc.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/u3yts4f4em12ebrek3fr.png)

### Theoretical Training

Regardless of what you are learning, the educational process is not complete without the theory. I would say you should try [Udacity](https://www.udacity.com/). It is a MOOC-based platform, so everyone who wants to start learning to code can sign up and get an online learning experience right away.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/b1yv4o5tdfrcsxj2dedl.png)

I like the range of courses this website offers. They are in micro-credential form, also known as Nanodegrees. The micro-credentials that are sometimes released for free come with video courses and projects. So, you can choose one to your liking, sorting them by language and level.

If to say about other resources used for theoretical training, I would also highlight books as an additional source of learning. Every learning process requires starting with the details, hence involves familiarization with the theory in one way or another. It is likely to give you a good idea of coding. So, if you are looking for helpful books, I would recommend considering the next three.

* Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. “Uncle Bob” Martin
* The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and Dave Thomas
* Code Complete: A Practical Handbook of Software Construction by Steve McConnell

### Put Interactive Tutorials and Coding Games on the List

What makes interactive coding tutorials good is that they bring into action the so-called abstract concepts you would read about in a book, so you won’t get bored while obtaining the programming experience.

For instance, the CodeGym platform offers different coding gamified projects in the [Games section](https://codegym.cc/projects/games). The whole course has an exciting plot, vivid characters, and a tricky concept explained through real-life examples, you will keep training without getting bored. For example, there are four cool quests with a robot named Amigo. Every single quest contains ten levels with 12 to 13 lessons and guides through different subjects from Java Core to Java Multithreading.

So, students can’t jump to the next level or more fun stuff until they debug the code while learning, which is very useful, as if you want to become a programmer, you need to code.

The other courses I’ve previously mentioned also offer interactive tutorials, quizzes, and other engaging tasks, such as:

* [Project Caesar Cipher](https://www.theodinproject.com/courses/ruby-programming/lessons/caesar-cipher) on Ruby programming at the Odin Project
* Mastering different languages on [kata](https://www.codewars.com/?language=python) at Codewars
* Different [gamified courses](https://www.codeavengers.com/profile#wd1) at Code Avengers, etc.

### Consider Watching Videos When Learning to Code

People perceive information differently: one prefers reading books or taking courses, while the other chooses to watch videos on platforms like YouTube. Learning to code by watching videos is cost-saving and allows for moving at your own pace — you can either spend more time on the video or skip ahead if things seem easy to you.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/hvs22535syops9asq4q4.png)

YouTube is home to numerous educational videos dedicated to software development. Here you can find coding marathons and solutions that show how to troubleshoot issues within any programming language you can imagine. So, if you are the one searching for decent content, my top-ten list of YouTube channels for coding is at your disposal.

* [Mayuko](https://www.youtube.com/helloMayuko)
* [Joma Tech](https://www.youtube.com/channel/UCV0qA-eDDICsRR9rPcnG7tw)
* [TechLead](https://www.youtube.com/channel/UC4xKdmAXFh4ACyhpiQ_3qBw)
* [Engineered Truth](https://www.youtube.com/channel/UChj0w0duKtp7SDd_X9CNptw)
* [freeCodeCamp](https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ)
* [John Fish](https://www.youtube.com/user/MrFish235)
* [Code Bullet](https://www.youtube.com/channel/UC0e3QhIYukixgh5VVpKHH9Q)
* [Corey Schafer](https://www.youtube.com/user/schafer5)
* [Edureka!](https://www.youtube.com/user/edurekaIN)
* [Brackeys](https://www.youtube.com/user/Brackeys)

### Google the Error

Let’s face it: everyone who learns to code experiences errors that break their code. You are not alone in your problem — there are many users before you who have made the same mistakes and already found solutions. So, if you are struggling to understand why your code is broken and can’t find the explanation, try to google the error. This is a simple yet effective trick that is more likely to give answers to your concerns.

Otherwise, you can leave your question on Q&A or discussion websites, such as [Stack Overflow](https://stackoverflow.com/), [Reddit](https://www.reddit.com/), or [GitHub](https://github.com/).

### Unpack Someone Else’s Code

As soon as you get a clear idea of how to code, it’s time to move further and strengthen your knowledge of the programming language. Here we come to the unpacking of someone else’s code. Browse GitHub to find the code file, open it in your code editor, and start working through. Feel free to apply your changes if you see they can improve the outcome. When done, save the edited code and share it back with the community to get feedback from your peers.

### Communicate with Other Programmers

Teaching yourself to code and spending hours at the computer can put you out of reality. Even though figuring things out on your own may be the best way to learn to code, sometimes outside help is necessary to get to the solution faster.

Communicate with other developers, visit tech talks of all kinds, hackathons, startups, and other tech events to make useful contacts. Or the simplest way is through online forums. Here they are:

* [Github](https://github.com/) is a community where people learn, share, and work together to build software. It allows for managing your open-source projects, contributing to others, showcasing your work, attracting recruiters, and more.

* [StackOverflow](https://stackoverflow.com/) is a Q&A website for both newbies and experienced programmers. It lets you find answers to the toughest coding questions, shares knowledge, and even find your dream job.

* [HackerNews](https://thehackernews.com/) is a highly trusted cybersecurity news platform attracting IT professionals, hackers, technologists, and others. It features the latest security news and builds a bridge between communities like security researchers, business grads, and thousands of security professionals.

* [Reddit](https://www.reddit.com/) is a social news aggregation and discussion website. It puts together thousands of communities and lets users share the things they care about. All you have to do is find the right subreddits about programming.

### Come Up with Your Own Project and Implement It

Building your own project, like a little app or so, is a good idea if you want to stay motivated about teaching yourself to code. Your own project forces you to move forward, keep practicing, and overcome grief and blockages. So, to start:

* Set a goal to create a project.
* Make sure you and other people need it in real life.
* Use the skills you already have.
* Work to improve and extend your project’s scope of application.
* Plan future features and consider the skills you would need for their implementation.

### Extra Tips to Stay Motivated

Coding is not easy — like many other beginners, you may sometimes fail, become frustrated, stop all attempts to cope with lines of code, and give up. That is why you need to create a friendly atmosphere around you while learning to code. Try to avoid becoming a strict parent or primary school teacher who scolds you for mistakes. Be a friend to yourself and remember a few things.

* Never compare yourself to other developers. Although the advice has a cliché, it is one to remember. Everyone starts somewhere — those who are on chapter 20 today have started from chapter 1, where you are now, and once wrote their first line of code, just like you.

* You’re making much more progress than you think. Have you ever thought you are not progressing? Sure, you have. Everyone who starts learning something passes that. You start thinking you’re not making enough effort, nothing changes, and you are still on the same stage you started with. However, the fact is that every time you study or code, you are growing — just accept it and look back to see how much you’ve already done.

* Everyone struggles in the beginning. The learning process is always challenging, but that doesn’t mean you are going to be a bad coder. Feeling frustrated is normal, especially if you’ve just started training and everything seems vague to you.

###Let’s Wrap It Up

How long does it take to learn to code? There is no single correct answer, as everyone starts with their own level of training and at their own pace. However, if you follow the given advice, you can get to your first line of code a little bit faster. For this, start with small things, like choosing the appropriate programming language and taking online courses. Then move on to bigger ones, like completing tasks on different platforms, unpacking someone else’s code, and building your own project.

The learning process is not a piece of cake, so make sure to create a friendly environment and support yourself, especially when you want to give up. The understanding that you are in the same boat with other developers who take the same steps during this path to coding will help you stay motivated about teaching yourself to code.

Firstly published in [Quick Code](https://medium.com/quick-code/how-to-learn-coding-from-theory-to-practice-265e5ea68bf1).