The Roadmap

A proper path to learn coding for a beginner ‘only’ takes these five heuristic steps:

  1. Step up a computer and its development environment;
  2. Learn how to use the computer and, to a basic level, how computer works;
  3. Lear a handful of programming languages and tools;
  4. Learn the theories coding, including algorithms, operating systems, etc,
  5. Put all of the knowledge into practice by writing a large project.

Upon completion you can claim youself a programmer. The ocean of knowledge of computer science, however, is wide and deep, and at this point you can explore it by yourself.

Step 0: Setting Up a Computer

To learn coding you need a computer.

Any For practical advices on buying a computer, see appendix.

A functional computer also needs an operating system. I recommend Linux, which is designed by and for the programmers and can greatly boost your productivity.

Check what are softwares and choosing OS.

To make an informed choice on choosing the hardwares and softwares, you need to learn the basics of how each piece of the hardwares and software work together to produce the powerful machine that we call a computer today. See what is a computer.

Step 1: Learn the Basics

The first step after obtaining the computer is getting to know how to use it most effectively.

Computers usually provide two interface for human interaction: graphical interface and commmand line interface. Graphical user interface (GUI) allows users to control the computer by clicking buttons, using dropdown manuals, and various other graphical utilities. In comparison, users of the command line interface (CLI) control the computer by typing the command in the terminal.

Although GUI may seem more intuitive and easier to use, CLI has its unique advantages in efficiency, customisability, and automation. You may not believe it, but almost all tasks that are done on GUI can be done in a different way in CLI, including writing code, viewing image, even browsing internet.

An education in coding without learning CLI would be incomplete.

Check how to using the computer on command line here.

Step 2: Acquire Several Programming Languages

Now the true works begin: you need to master at least a handful of programming languages.

Learning a programming lanuguage is not so difficult as you may imagin.

Check instructions here.

Step 3: Dive Deeper

Step 4: Grand Final

A bad Example: The naive Method to learn coding.

The naive definition for coding is to write codes in a programming language that can run on a computer. To achieve this is easy: pop up python interactive mode, jupyter notebook, or any online code editor for python, and type

print("hello world!")

The next step is to find some tutorials for python grammar and mock projects. After writing several hundred lines of code, finishing ten tutorials, and uploading them to Github, you proudly add python into your CV after only one week of work.

This method, however, will not get you far. The reason is that each tutorial will only teach you to solve a specific problem, while in coding, you will frequently encounter new problems whose solution is not written as a tutorial and published online.

To write a truly amazing software, such as an operating system or a programming language, requires deep understanding on multi-disciplinary fields. To name a few, one need to master the programming tools including the programming language, design an effective software structure, understand various programming protocols and standards, know how the low level hardware works, and study many applied and even pure mathematics like algorithmic analysis, logics, and category theory.

Studying these subjects is a laborious process, and very few may claim to master all of them. In many circumstances, one who know only a few parts can be called an expert.1

You shall be, nevertheless, encouraged to take this journey, and your inner ambitions shall be alighted, because, by following this tutorial to the end, you can proudly and righteously call yourself a master of computer programming.

1

The author, at the time of writing, is a final year undergraduate student. In no ways the author may be regarded as an expert in these fields. He is actively learning and consulting other experts while composing this book. Come, readers! We shall learn and advance together.