Learning Programming: Where do I start?

Hello!

This guide is based on my own experience and opinions.

First you need to ask yourself is programming something that you want to do for the rest of your life as a hobby or profession or it’s just a thing that you like to see how it works. If programming is just a thing that you like to see how it works then I suggest you to start with web basics: HTML and CSS markup (not programming) languages. By learning this stuff you will get the picture on how web browsers renders html documents retrieved from web server. Don’t lose more then 3 days on this stuff. After that, start with Python to get a picture on how programming languages works. You can find a lot of beginner tutorials for Python online. Program in Python no more than 4 days to get the global picture on how programming languages works, and then forget about programming, programming languages, loops and everything else that you read in last seven days. Call your friends, go grab a beer with them and move on to chasing career in some other field that you are interested in.

If you are thinking about programming on long term period then I suggest you to start with mother of all programming languages: C programming language. Why C language? There is a multiple reasons to start with C. First of all, C influenced almost all “modern” programming languages and most of them borrowed some syntax from C. Kernels of Linux, Windows and Mac operating systems are also developed in C. Probably your dad’s Toyota Prius has thousand and thousand lines of code in C. Most of embedded systems are programmed in C.
Starting to programming in C won’t be easy at all. But you need to be diligent and persistent. Programming is something that you learn in 10 years long term. You must be aware of that. You cannot became a decent programmer in 24 hours or 7 days. It’s a long and fu**ed up path.

  1. Beginner
    I suggest you to first install Linux (preferably Ubuntu or Mint distro) on your programming machine. Using Linux from the start you will also learn a lot about operating systems, how they work, and you will get yours hands dirty on command line. As a programmer, command line will become your living room, bedroom and toilet. With Linux you will get gcc (C compiler) and TextEditor. That’s all what you need to start programming in C. For the book I suggest you “The C Programming Language, 2nd Edition”. In this phase of learning your main focus will be on data types, operators and expressions. You’ll learn what is compiling, what is main method, what are function arguments and what is procedural programming. After that you will learn about control flow statements and loops. Then you’ll proceed with functions, programming structure, arrays and pointers, structs, I/O, handling memory and a lot more. This all are programming basics and the more time you spend learning basics, you will later build your advanced knowledge much easier . Don’t just read the book, write every example from the book, compile and figure out every line of code. After your finish the book (and all that stuff will be probably very boring to you) you will get rock solid basics.

  2. Enthusiast
    Now it’s time to go from procedural programming to object oriented programming. Move on to C++ programming language. Find some decent book (probably “C++ Demystified”) and learn C++ syntax and basic. You will catch up fast because you have knowledge of C. In this phase of learning your focus will be on objects and classes and OOP in general. You will need to learn difference between pointer and reference.

  3. Padawan
    Now you have experience in two (most used) programming languages. Now you need to learn to be more effective with less lines of code. I suggest you to start with some book about data structures and algorithms (maybe “Data Structures and Algorithms in C++, 3rd Edition”). In this phase of learning you will learn what are lists, stacks, queues, trees and heap, what is sorting etc.

After you finish all this steps, you will have decent amount of knowledge to start building simple software. Now you need to decide will you move on to web programming (PHP, C#, Java, Javascript, HTML, CSS), embedded programming (C, C++, assembly language) or mobile development (Java, Objective C, Swift, etc.). All this fields have different learning paths but you will have strong basics and you will progress fast.

5 Likes

Learn C the Hard Way is also good, so I’ve heard.

To learn C, I watched CS50 on YouTube.

mycodeschool is one of the best youtube resources for C in my opinion. If you are a tutorial type of folk, you should 100% check out all of his series. I had read that he was working for Google.

4 Likes

Thanks, the channel was news to me. Definitely will check it out after exams, since I wanna get started with C as well

1 Like

Hey Appie35!

I’m also attempting to learn to code on my own to hopefully move from a IT help desk position to a junior dev in the company I work for. This is what I’ve currently been up too:

Right now I’m working through “python crash course” by starchpress (have the pdf if you want it, don’t spend money on the book) and found it super helpful, I plan on reading any python book I can get a hold of as I learn best through repetition and learning from different sources is helpful to me.

I also keep a pocket notebook to jot down ideas for programs I want to build. I found that if WANT to build something I’m more likely to get in front of my pc and actually do it with the help of stack overflow and other communities.

Thats what I’m currently doing until I feel good enough to build a program and feel like I can use it as a resume project.

Also running Parrot OS as a daily driver, with Geanny IDE because I like the look and feel, I installed it over windows after test driving it in a VM to force myself to learn linux kind of lol. Use whatever your comfortable with IDE’s run on every OS.

//Just realized this post is from 2 years ago… I’m obviously new here…

1 Like

I second this post. The python course is great.

start here https://www.w3schools.com/python/default.asp

1 Like