How To Start Coding: A Practical Guide For Beginners (Updated 2020)

Yong kang Chia
The Startup
Published in
16 min readMay 20, 2020

A step-by-step guide of curated resources and tips based on my personal experience.

Table of Contents

Who am I?

Let me first introduce myself. My name is Yong Kang and I am a self-taught programmer. In the past two years, while serving National Service, I have taught myself how to program with online resources which led to freelance projects for companies. After I finished my National Service, I went on to do an internship while waiting for my university to start. I have also participated in a couple of competitions (pitches and hackathons) and gotten some good results with them.

I have received several questions from my friends on how to start learning how to code. Hence, I am writing this article to organize the practical tips, directions, and curated resources to whoever wishes to pick up programming on their own. I hope that this practical guide will help you pick up programming effectively, especially if you’re a beginner.

Why is programming important?

Everybody in this world should learn how to program a computer because it teaches you how to think. Quote from Steves jobs

With all your friends learning to program, does that mean you should learn it too? Even if you’re not someone who is going to take a programming course in the future, here are some reasons why you should begin your journey in Programming:

1. Becoming More Efficient And Productive

Programs are great at doing tedious and repetitive tasks for us. They never get tired, they never complain about how boring their jobs are, and they never make mistakes.

You could write programs that can complete tasks in minutes that would require hours if done manually. For example, you could automate the process of manually entering info into excel from a text document into an excel sheet.

2. Bringing Your Ideas To Life

Got an idea for an app or a website? Programming allows you to bring that idea to life.

3. Improving Your Problem Solving And Thinking Skills

Programming is all about using code to solve problems. It teaches us how to break a large problem into smaller subproblems and solve those problems. This is a common strategy known as divide and conquer

I hope that I have convinced you why programming is worth learning. Now on to the real stuff.

Part 1: Step-by-step Guide To Start Learning Programming

Step 1: Set your goals: Why do you want to pick up programming?

Before you start coding, it’s important to set your personal goals and what skill sets you to want to achieve. What is the reason you want to learn to program? Is it to gain exposure, prepare for university, build apps, learn data analytics, or learn?

Step 2. Pick the best programming language to match your goals.

This portion is crucial, and will be further explained and elaborated below. With so many different programming languages out there, which one should you start with? My advice would be to be the programming language that is best aligned with your goals: ie. What do you want to achieve from learning how to program? I have compiled a list of different languages to learn based on the respective goals below.

Before I talk about these programming languages, this is a disclaimer:

  • My point isn’t that there is one language that is better than the other.
  • I agree that developers should eventually learn more than one language.
  • My main point is that you should learn one language well first.

According to the survey by stack overflow in 2019, here are the top 5 languages most used languages :

It would be alright to start with any of the 5 languages above, and the recommendations below are just my opinion.

If you want to learn programming just for Data Analytics, Machine Learning or just for fun: Python

I recommend Python because it is a simple yet powerful and versatile language.

You can build web applications, do data analytics, run Machine Learning models, create financial models, and even make games.

There are pros and cons of each language, so it doesn’t matter which language you begin with because you can always transition from one language to another, similar to learning a new language.

Python has many great libraries out there. Libraries are code that other people have created to perform a certain function. This means that you would not have to code many abstract functions yourself as you can easily find them online.

Top 3 Free Resources to get you started with learning python. (Updated May 2020)

Best Book: Automate the boring stuff with Python

Best Practical Course: Solo-Learn (There is an app version for this as well)

Most Rigorous Course: MIT 6.001x on EDX (This is the course I used when starting out)

Best Youtube channel for programming: Sentdex & CS Dojo

If you want to learn to program for creating websites: HTML, CSS, and Javascript

If you feel like you learn best by building things instead of theoretical knowledge, you can start by learning HTML and CSS to build Websites.

Learning HTML and CSS would allow you to build websites and see coding principles in practice. You would be able to transfer your knowledge to other programming languages such as javascript.

As you learn HTML and CSS, it is also a great idea to pick up Javascript. Javascript serves as the bridge that links what you see on the website with the function of the website.

Top Free Resources to get you started with learning Web Development. (Updated: May 2020)

Best Course: Harvard Web Development Course

Best Youtube channel for Web Development: Free Code Camp

Good Resource for inspiration for projects: https://github.com/melanierichards/just-build-websites

If you want to learn to program for creating Apps: Java (Android)

Okay, so you want to build an app? You can either learn Java for android or learn Swift for IOS.

However since more than 80 percent of the mobile phones run on Android, I have only learned Android Programming but not IOS. So I will only be talking about Java in this article.

Java is an old language and has been around for the past 20 years. Therefore it has quite a lot of support and open-source code that you can use.

Another reason that made Java popular is that it’s an Object-Oriented Programming(OOP) language. Developing an OOP application is much easier, and it also helps to keep systems modular, flexible, and extensible.

Once you have knowledge of crucial OOP concepts like Abstraction, Encapsulation, Polymorphism, and Inheritance, you can use all those with Java. Java itself embodies many best practices and design patterns in its library.

After you have learned Java, you can easily transition to other languages or move to Android Programming as well.

Top Free Resources to get you started with learning Web Development. (Updated May 2020)

Best Practical Course: Sololearn

Best Youtube channel for Java: Free Code Camp

Best Book for Java: Head First Java (Like me, many people started learning java with this book. It is a hilarious and effective way to learn Java whether or not it’s your first programming language)

Step 3: Start a project to practice what you have learned

Watching courses alone would not help you internalize the concept. You would have to put the concept to practice. The best way to do that would be to come up with projects.

If you have an idea for a project or have a problem you want to solve with coding, that’s great!

If not I have prepared a list of beginner-friendly projects that you can gain inspiration from or try.

Some Beginner-Friendly Projects you can try

Here are some terminologies that might be confusing

Libraries: A library is a collection of related pieces of code that have been compiled and stored together in a single file. That file can be linked with your code to give you access to the code in the library.

API: API stands for Application Programming Interface. An API is a software intermediary that allows two applications to talk to each other. In other words, API allows you to request functions from a software provider to make use of in your code. For example, the Spotify API allows you to request data such as songs and artists from Spotify and you can make use of the data in your code or application.

Level 1 Projects

Calculator

Sudoku Solver

Hangman

Level 2 Projects

Chess

Weekly Discover Spotify Playlist

Automatic time tracking Tool

Level 3 Projects

Instagram Automation

Twitter Bot

Telegram chatbot

This is not an exhaustive list. If you have a problem that you need to solve, think about how you can solve it with programming. That can be a project as well.

A few words of advice in learning programming

1. Don’t give up easily, you have to break past the initial struggles

The biggest mistake you can make as an aspiring programmer is giving up because you don’t think you are smart enough to learn to program. Learning to code has nothing to do with your intelligence.

Learning programming is hard and most people would face difficulties at some point because there are a lot of topics to learn. As you are programming, there is going to be a lot of topics that aren’t going to make sense the first time around. So, refrain from the negative self-thoughts.

I too get stuck. I often have to rewatch the same lecture or video tutorial several times for me to grasp the concept. Don’t get discouraged if you find yourself in my shoes.

2. It is important to build a strong foundation

As elementary as they may appear at first, programming fundamentals always need to come first: the better you understand them, the easier it is to learn more advanced concepts. If the current topic you are learning doesn’t make sense to you, stay where you are. Do not proceed to the next topic. Skipping ahead is similar to building a house without a base, neglecting the foundation.

If the tutorial (or book) you’re using didn’t sufficiently explain the topic, you may have to find other resources that suit you. You can find just about anything you’re looking to learn for free on Google. Figure out what to search for (e.g., [the topic] in [your programming language] + any other helpful keywords).

Take at least 20 minutes to figure something out on your own before searching for help. There’s a good chance that the answer is already in front of you. Struggling makes you learn better and a better programmer overall.

Stackoverflow and learn programming are gold mines for programming assistance.

3. Learn by doing. Always play with the code while learning.

The goal is to be conscious of your own learning as you progress through the learning path. Therefore, don’t blindly follow the courses and blindly copy the code without understanding it first. Understand the concepts that were taught in the lesson and try to recreate it.

As you progress, make it a habit to practice your programming. You can do so on leetcode, hackerrank, or making a project. Try to do a project after every module with the concepts you have learned. When I was doing online courses I tried to do a project every week, applying all the concepts I have learned.

Part 2: Roadmap to becoming an advanced programmer

Now that you have learned the basics of programming, the next step would be to think about which pathway of programming you want to learn more about. There are many pathways you can venture into once you have grasped the basics of programming, with the major and more popular pathways being Software Engineering & Data Analytics.

Data Analytics

What is Data Analytics?

Data Analytics is the science of examining raw data to conclude new information. It involves applying an algorithmic or mechanical process to derive insights. For example, running through several data sets to look for meaningful correlations between each other.

So, why should you learn data analytics? Big Data is the future. It is being generated at an exponential rate, and many companies are making use of that data to make better decisions, as well as verify and disprove existing theories or models. The demand for data analytics is expected to grow in the future as data will be the core of the decision-making process in many companies.

How can you learn Data Analytics for free?

I have combed through the curriculum of universities and have come up with a path to try and match free online courses to university courses. However, all of these courses are in Python, if you want to learn in a different language, feel free to check out other courses.

Outline of Data Analytics Modules

The outline is generally based on university modules. However, I am excluding some of the important modules like Data Structure and Algorithm which universities teach, as those are more conceptual and higher-level.

Note: I have put machine learning higher up in the priority as it allows you to make use of the skills you learned in fundamental courses.

Fundamental Courses

Module 1: Learning the Basics of Python (1 Month)

  • Learning the syntax of Python
  • Learning Loops
  • Learning Object-Oriented Programming

Module 2: Data Pre-processing, Data Visualization, Exploratory Data Analysis (1 Month)

  • Learning how to make use of python libraries (matplotlib, numpy and pandas)
  • These libraries allow you to manipulate the data

Advanced Courses

Module 3: Machine Learning (2 Months)

  • Prerequisite: Linear Algebra
  • Machine Learning is a pretty technical course on math
  • Python has a pretty comprehensive library for Machine Learning called Scikit-Learn.
  • If you want a more hands-on approach to learning machine learning, you can check out Kaggle Learn.

Real-World Tools Courses

Module 4: Databases (SQL) (1 Month)

  • The database course basically teaches you how data is stored and how you can retrieve that data to perform programming functions.
  • Working knowledge of databases and SQL is a must if you want to become a data scientist.

Module 5: Real-World Tools Courses

  • Hadoop & Map-Reduce + Spark(choose one) (1.5 month)
  • These are Big Data tools that the industry commonly uses for processing large amounts of data.
  • Learning of Hadoop technologies will give you a lot of fundamental knowledge, theory, and practice skills. Also, you may find something new using it.
  • Spark is the modern implementation of Hadoop and is seeing an increasing use case.

Module 6: Data Storytelling (1 Week)

  • Presenting Story with data is the analytics professional’s missing link in delivering the essence of date signals and insights to executives, management, and other stakeholders.

Optional Courses

  • Data Structure
  • Algorithm
  • Deep Learning
  • In five courses, you will learn the foundations of Deep Learning, understand how to build neural networks, and learn how to lead successful machine learning projects. You will practice all these ideas in Python and in TensorFlow, which they will teach.
  • It is one of the best deep learning courses out there. Currently, I am in the midst of doing this course and I agree with the reviews as it is presented in a simple and clear manner despite Deep Learning being a technical topic.
  • Another great free resource is fast.ai

Things to avoid while learning Data Analytics

The pitfall is that you are just learning but not applying the knowledge. One way I try to apply my knowledge is to start a project after every module I have completed. For Data Analytics you can try your best at a competition of your choice from Kaggle. Use Kaggle Learn as a helpful guide

Software Engineering

What is Software Engineering?

In a nutshell, Software Engineering is basically using programming concepts to build applications

How can you learn Software Engineering for free?

I think that Software Engineering requires a more fundamental understanding of computing concepts than Data Analytics, therefore in my modules outline, I included more theoretical courses.

Do you want to build things to get a feel?

If so, learn Python and go to the practical courses. You can always revisit the fundamental courses when you hit an obstacle in terms of theoretical knowledge.

Outline of Software Engineering Modules

Fundamental Courses

Module 1: Learning the Basics of Python (1 Month)

  • Learning the syntax of Python
  • Learning Loops
  • Learning Object-Oriented Programming

Module 2: Data Structures (2 Month)

  • This course covers essential data structures like linked lists, stacks, queues, binary trees, and hash tables, and searching and sorting algorithms like binary search, quicksort, mergesort, insertion sort, etc.
  • Data Structures are important as it allows us to improve the performance of our code by using the best data type for our code.
  • The Data Structure course I have recommended is in Java as it forces us to transition from a simple language of python to a more verbose language. Also, Java is good for learning object-oriented programming and Data Structures.

Module 3: Algorithms (2 Month)

  • This is the second part of a two-part series of free online Coursera courses covering data structures and algorithms by Robert Sedgewick and Kevin Wayne, both are professors of Computer Science.
  • In this part, you will learn about the graph- and string-processing algorithms.
  • You will also learn some advanced data structures and algorithms used in application development.

Module 4 : (Databases) (1 Month)

  • The database course basically teaches you how data is stored and how you can retrieve that data to perform programming functions.

Module 5: Networking (1 Month)

  • Doing a networking course is not very important, so you can skip it if you want. However, if you are interested in cybersecurity, it is absolutely an essential course

Practical Courses

Module 6: Week 9–10 (Web Development) (2 Month)

  • Topics include database design, scalability, security, and user experience. Through hands-on projects, you’ll learn to write and use APIs, create interactive UIs, and leverage cloud services like GitHub and Heroku. By course’s end, you’ll emerge with knowledge and experience in principles, languages, and tools that empower you to design and deploy applications on the Internet.
  • Personally, this was my favorite course for web development as they go through the front end and back end and it’s very well explained. They would teach you HTML, CSS, Javascript, and PHP.
  • This is a good resource for website inspirations: https://github.com/melanierichards/just-build-websites

Module 7: Mobile App Development ( pick whichever you like most) (2 Month)

  • IOS
  • Android
  • Flutter (My preferred method of App Development)
  • Personally I have not learned IOS development before. But comparing between android and flutter, flutter is faster to develop and prototype with and therefore I prefer flutter

Advanced Courses

Module 8: Software Architecture (2 Month)

  • In this course, you will learn how to represent a software architecture using visual tools like UML, which is very important to communicate the architecture with shareholders as well as developers who will implement it.
  • You will also learn some of the standard architectures, their qualities, and tradeoffs. The course also talks about how designs are evaluated, what makes a good architecture, and architecture can be improved.

Module 9: Software Engineering Practices (1 Month)

  • After completing this course, you will be able to
  1. Apply core software engineering practices at the conceptual level for a given problem.
  2. Compare and contrast traditional, agile, and lean development methodologies at a high level. These include Waterfall, Rational Unified Process, V model, Incremental, Spiral models and overview of the agile mindset
  3. Propose a methodology best suited for a given situation

Optional

Machine Learning

  • I actually recommended a more theoretical Machine Learning course by Andrew Ng
  • Even though it is slightly outdated, he teaches the concept well and is still one of the best machine learning courses out there after many years.

Deep Learning

  • In five courses, you will learn the foundations of Deep Learning, understand how to build neural networks, and learn how to lead successful machine learning projects. You will practice all these ideas in Python and in TensorFlow, which they will teach.
  • Currently, I am in the midst of doing this course and it is presented in a simple to understand way. Another good point is that Andrew Ng uses Python instead of octave.
  • Another great free resource is fast.ai

Conclusion

Although I have recommended the modules based on university courses, you can mix and match to make the best curriculum for yourself. If this article helped you, please help me to share it with your friends! If you would like to find out more about me and what I do, please visit me at my website http://www.chiayong.me/

Helpful Resources

  • Stack Overflow is a website where you can get free help with their code. If you get stuck and want to ask a question, search for it first. If you can’t find your question, create an account, and post the question yourself!
  • There are a ton of educational sites where you can find programming tutorials. Some of my favorites are Codecademy, Udemy, Udacity, Team Treehouse, and Khan Academy.
  • Some of my favorite YouTubers for programming include CS Dojo, Free Code Camp, and Sent Dex.

Resources from the article

Python: Top 3 Free Resources to get you started with learning python. (Updated May 2020)

Web Development (HTML,CSS and Javascript): Top Free Resources to get you started with learning Web Development. (Updated May 2020)

Java: Top Free Resources to get you started with learning Web Development. (Updated May 2020)

  • Best Book for Java: Head First Java (Like me, many people started learning java with this book. It is a hilarious and effective way to learn Java whether or not it’s your first programming language)

--

--

Yong kang Chia
The Startup

Blockchain Developer. Chainlink Ex Spartan Group, Ex Netherminds