How to start with programming

Nikola Shekerev
5 min readNov 23, 2022

--

Introduction

This article is a basic guide on how to start with programming for complete beginners.

Programming is not hard. It can be fun and profitable. People are just intimidated for 3 reasons:

  • it is abstract, so it feels alien
  • it requires a lot of reading, which is generally boring and slow
  • there is a knowledge sharing problem, which we will discuss below

Formal Education

People will tell you that you need formal education — math, computer science, algorhythms, data structures, get certification, etc. There is truth here, these things are good. Some employers will even consider formal education mandatory to hire you.

Formal education is secondary and sometimes even optional for the following 3 reasons:

  • it teaches you fundamentals, which are great, but some of them you will not need in the beginning and others you will not need ever.
  • It tests your memorization and not your understanding, which is a complete waste of your money and time
  • It rarely teaches you critical practical skills and tools

What you really need to do is write code. Experience teaches you more valuable lessons than formal education.

English

Good English language is kind of required

Start with a programming language

I suggest Python, it is very friendly to newcomers. Google phrases like ”Python Tutorial“, “Python Guide”, “How to program in Python” . Read some of the bigger tutorials Google suggests for you. The beginner tutorials on the official site are great, but most beginner tutorials are ok.

Start programming

Code your own simple things. Your code will often not work. You need to debug it to fix it. Debuggin is in the core of our profession. You will spend a massive amount of time fixing code that is broken. Often that will not be your code. There are many strategies for this. Usually people will tell you to use a debugger. This is a special tool for this purpose. Debuggers are complex and intimidating.

What you really need to do is put code in your program that prints what is going on inside at specific places, until you figure out what is wrong. Just print stuff on the screen. This is stupid and simple, but since it is so simple, it works in many situations where debuggers will make you scratch your head.

Writing a small game is excellent exercise

I write small games when I learn a new language. I invent my own games but if this is too intimidating, you can pick some simple classic like tetris or breakout.
This is an excellent exercise. Games have everything — input, output, media, algorithms, AI, data structures, file operations, math. All those building blocks can be super simple and still there, so you see how all fits together. The counterweight to all this complexity is that building a game is inherently engaging, so you kind of self motivate to make the damn thing work.

Proceed with more serious books and resources

After you have some experience with a language, Google what are the better books and resources on it. There are more recommendations that you will have time for. My strategy is to use Google to find many recommendations in the internet and mark the books / resources that are mentioned the most often. I proceed with those.

For Python I recommend “Dive into Python” and “Hitchhiker’s Guide to Python”

On your journey you will encounter fundamental terms like SOLID and REST. If you encounter a term you do not know, just Google it. If you encounter a term multiple times, maybe it is more fundamental, so dive deeper in it.

Learn Tools

There are tools that you need to learn in order to get a job. They highly depend on the carreer path you are interested in. Here are the most commonly needed:

  • IDE — this is the tool for text editing where you type your program. Pick anything that is standard for your language of choice.
  • Source Control tools — there are tools that you use to manage the code of a project from many developers. Git is the industry standard
  • Javascript, html, css are standard tech for web pages
  • SQL is the standard language for working with databases
  • Languages to automate the operating system are sometimes needed — Bash is used for Linux (and anything Unix based) and Powershell is used for Windows

Typing fast

The social image of a good programmer is someone who types fast. Hollywood reenforces this image.

Many tools provide shortcuts for various tasks. Your OS and IDE give you shortcuts even for things you will probably do once per year

Businesses even sell tools for fast typing and shortcuts

99% of this is completely useless

Google is your friend

You will encounter many things that you do not understand initially. Most of the time, just looking for a short explanation in Google is your best strategy

Side note — I use the word Google, because it sounds like a verb, but DuckDuckGo is just as viable

AI is less of a friend

AI models like ChatGPT are very tempting but sometimes they lie / hallucinate. Please do not underestimate the risk of filling your head with wrong info

Web Development

Most modern software is in the internet — a web site with a functionality and a bunch of servers behind it. Years ago I started by googling “web development with python”

For python I strongly recommend fullstackpython when starting with the web

Knowledge Sharing

In companies people will not teach you or explain stuff. Sometimes they will even look down upon you for not knowing what they know. Some companies provide mentoring programs, but most of the time that is just smoke and mirrors for HR. Sometimes a company may say that it will support you in learning something. What happens in practice is that the company expects you to learn it by yourself but may provide opportunities for you to practice what you learned.

All of this is annoying but normal. Do not expect to be taught

Just keep googling for materials and reading. In programming the process of reading never stops. Build a habit of reading at least half an hour every day.

Breakthrough Knowledge

I have my own page with recommended resources for when you are more advanced:

--

--

No responses yet