Parts in this series

Part 1

Learning to program is hard. There are a few reasons this is the case:

  • Programming itself is hard. However, this is less true than most people believe. Programming professionally is pretty difficult. But doing basic cool stuff that makes you feel accomplished is quite easy.
  • There are many “specializations” in programming. A beginner programmer isn’t going to know what all those are, let alone which one they are interested in. You shouldn’t have to choose the first programming language you want to learn before you know what programming languages are. You shouldn’t have to decide between mobile apps, games, data science, artificial intelligence and various types of web development before you understand the basic programming structures.
  • Setting up all the programs and tools (coders call this the ‘development environment’) needed to write software is hard.
  • Everything you need to know seems to depend on knowing all the other things that you need to know. It becomes really tricky to decide what to learn first.

This post is the first in a series intended to address all these points, especially the last two. I want to present easy-to-digest steps that anyone who can use a web browser should be able to follow to learn the basics of coding. The end goal might be to just give you a stab at a new hobby. Or maybe you’ll love it and end up with a new career in a lucrative field. Either way, I hope those programmer friends who have been urging you to try programming have recommended this post to you.

I had actually started a book provisionally titled “Coding Gently” on this topic (the goal being to convince my mother to learn to code). I decided to shelve that project because the resulting book would be intimidatingly huge. My thought was that you could work through the book as far as you want and then stop, but I realized nobody would buy that many pages for ‘casual study’.

I also found that the basic topics I wanted to explain were already well-presented in various places on the web. The innovation that I was bringing to the table was not so much the content of the lessons as the order in which you would learn them. The two things I was optimizing for were:

  • How easy the topic is to understand the theory
  • How much effort is required before you can actually apply the topic in practice

For example, while Python is an extremely approachable programming language, educators have long struggled with getting it installed and usable on their students’ computers. Therefore, even though it’s by far my favourite language, I chose to introduce Python later than I otherwise would have.

So in this series of posts, I’ll be introducing programming languages and concepts in an order that I hope you’ll find extremely intuitive to learn. Each step should add just enough complexity over the previous one to keep you interested, but not enough for you to feel lost or frustrated. I won’t be teaching the actual concepts involved. I’ll usually leave that to you and your favourite search engine. There are plenty of introductory-level tutorials, videos, or courses on each of these topics out there. Usually it’s a matter of finding the one that best suits your learning style.

In addition, I’ll give tips on how you can try out your new skills with (hopefully) a minimum amount of effort invested in setting up tooling. As you get deeper into your learning, you will necessarily have to do more setup. Hopefully by then, you’ll be both interested and knowledgeable enough to put in the required effort.

Enough introduction! This article is starting to look like one of those cooking blogs where you have to read a dozen paragraphs on the personal life of someone you don’t know before you actually get to the recipe. Sorry about that!

Plain text

Even if you haven’t heard the term before, I hope you can guess what “plain text” is: text that is plain! Specifically, that means there is no formatting available for the text. i.e no buttons or keyboard shortcuts to make sections of the text bold, make a heading, or insert a link. In contrast, those features are characteristics of “rich text”.

You’ve certainly written plain text before. Most input boxes on the web are plain text, even today. Some of them (notably many e-mail clients) have little toolbars where you can select various formatting options for the text. But if you ever filled out a survey or sent a query to a bank or e-commerce site, it would have been plain text.

All popular programming languages are written in plain text. There are special “text editors” or “programming editors” that are designed exclusively for editing plain text. High-end editors provide a ridiculous number of features to make the process of editing text easier, but their core functionality is still to write text. I’ll suggest you download and get used to such an editor in a later post, but there are easier ways to learn today’s topics without all the fuss.

Plain text is obviously a freebie; you already know how to do it. There is no structure required. So everyone can skip right to the next section. However, if you’d like to do a bit of exploring to get your feet wet, I suggest trying some of the following:

  • If you are used to using a word processor like Microsoft Office, LibreOffice, TextEdit, or Google Docs, note that the “Save as…” menu usually has a “Text” or “Plain Text” option with the ‘.txt’ extension. If you save a file as plain text and then reload it, you should see that any formatting has been removed.
  • Windows comes with a program called Notepad that can only write plain text. Mac’s TextEdit word processor has a plain text mode as well. Linux users will usually find gedit or kedit in their application menu. All of these are like simple word processors that don’t have any formatting tools or options.


It is a tiny step from writing plain text to using it to generate rich text. You may have done this intuitively in the past. Have you ever put asterisks around a word or phrase to emphasize it *like this*?

Markdown is what’s known as a formatting language (or markup language – The name Markdown is a play on words). If you write plain text with specific punctuation characters in specific places, you can run a program to generate rich text. All the posts on this blog are written in Markdown. Most communities for programmers allow you to format your posts and comments in Markdown to make it easier to read, so it’s a useful skill to have.

The best part is that even without running the conversion program, plain text that uses markdown symbols is generally easier to read than plain text without them.

It looks like the Markdown Guide is the most accessible way to learn this formatting language right now. A more interactive experience can be found in the Markdown Tutorial. If you don’t like one of these sites or they have gone down since I wrote this post, just search the web for Markdown Tutorial and pick the one that suits you best.

You can easily learn Markdown basics in a single evening, and can master Markdown with a few days of practice. The best part is that you can use Markdown anywhere you have previously used plain text. Even if it doesn’t get converted to formatted rich text, even the plain version of the language is designed to get the point across.

One reason I think it’s good to learn Markdown before other languages is that messing up doesn’t hurt. If you get a formatting symbol wrong, it will show up as plain text in the rendered document. There are no cryptic error messages or crashed web browser tabs to deal with.

You don’t have to download any software to practice Markdown. Just search for Online Markdown Editor and you’ll find half a dozen.

Next: Part 2