#programming Maybe you're leading a team of developers, you're a tester you want to automate or just want to learn how to program.

Whatever your case is, you decided to learn how to program and now you're wondering where do I start?

The steps that I will describe below are the ones I used when I have had to teach someone to program. It will also help you in the future, when you decide to learn a new programming language.
Consider that the steps I describe below are for you to learn how to program, not to develop an application.

Programming is not the same as developing an application. The second requires learning more things and therefore takes longer.

Now, let's review these 5 steps to learn how to program:
Step 1: Define a clear target

Saying that you want to program without having a goal in mind is like saying that you want to learn to play a musical instrument without knowing which song you would like to perform or at least what kind of music.

I give you some examples of what a goal might be: understand what a certain code does, automate test cases or develop a complete application.
Having a clear goal will help you know to what extent to deepen your knowledge.

I recommend that you define goals that you can achieve in the short term. Ideally with small achievements that motivate you.
Step 2: Select a programming language

As I mentioned before, this post is aimed at learning how to program and not to develop applications.

Therefore, I recommend starting with one of the two languages I'm going to mention.

First of all, I recommend starting with Python. It's simple, not as strict in syntax, it serves for both backend and frontend application development and the market is increasingly requesting it.
At the end of this post, I will leave you some resources to learn Python in case you are interested.

Secondly, I recommend Java. It's harder to get into the beginning, but it will serve you in the future because the market keeps asking for it.

Both languages can run almost on any operating system, which is a huge advantage.
Step 3: Start with the basics

No matter what language you have selected, I recommend learning the following basics:

Variables and Constants: To find out how the data you use is temporarily saved at the time your program runs.
Operators and Expressions: To manipulate data in your program, create mathematical formulas or assemble text sentences that you can display as messages.
Control Flows: To define the behavior of your program. There are several types of commands to do this. The most basic are:

Conditionals: With them you tell your program what to do in a certain case, for example: “If you give X condition do something but do something else."
Loops: You will be used to repeat a series of instructions until a certain condition is met.

Data Structure: Sometimes variables are not enough and you'll need to manipulate a group of related data. For that there are data structures. The most commonly used are the arrangements.
Functions or procedures: It will allow you to create a mini-program and be able to use them within a main program, whenever you need it.

With these fundamentals you have enough to have fun, but it gets more interesting if you learn about the following topics:

Object-Oriented Programming: It is a special way to organize your code that makes it easy to reuse functionality throughout an application. It is widely used today, so it becomes essential for every future developer.
File Management: I mean that your program is able to feed on external data (such as a text file) and generate information that is used, in turn, by other programs.
When you're learning each of these fundamentals, for example “how to use a WHILE", you most likely wonder what is this certain command for me?

It will help you know that learning these fundamentals is like learning how to use a hammer, screwdriver, sandpaper, among other tools. Separately it may not make much sense, but you will have it when the challenges to solve as a programmer come.

The latter relates to the next step.
Step 4: Apply what you learned in small challenges

Now that you have several tools at hand, it's time to put them into practice and how can you do it? with small and interesting challenges.
I give you some ideas of small programs that you can do to implement the fundamentals:

A number guessing game.
Hangman's game.
Word counter of a text.
Conversion of units (gallons to litres or cm to meters for example)

In my experience, making small games is very didactic and fun. The best thing is that you don't need to have a graphical interface to do it.

This last point is very important, during this learning phase, I recommend that you only do programs that run by the command console of your computer's operating system.

Making programs that require GUI management is a lot of fun, but when you are learning from scratch, it is better to leave it for a later phase. For when you feel safer with the basics.
Typically, making use of a graphical interface requires handling additional libraries and many hours of programming.
Step 5: Re-consider your goals

The first 4 steps will take you at least 3 months (maybe less) depending on the energy you impress to learning.

But once you've learned the basics, it's time to decide whether you're happy with your adventure or delve into your programming knowledge.

Just in case you decide to do the latest and then want to develop applications, I recommend:

Learn about good programming practices: If you're going to develop applications why not do it with quality? . I mean programming with the mindset that your code is efficient, easy to maintain and understand by other people.
Experiment with another language: Don't just stay with the language you learned. Open your mind and encourage you to play with a different one, even more adapted to the type of software you are going to develop.

Final recommendations

The only way to learn how to program is by programming, that is, by investing hours in front of the computer by casting code.

Research and practice a lot, there is no other secret than perseverance.

I warn you that this programming thing makes one frustrate many times, it's normal.. So if you feel that you are not able to solve a problem, I recommend you to leave it for the next day and consult it with the pillow. It's always worked for me.
I wish you a lot of success! and that you schedule your first “Hello World" as soon as possible.
Resources to learn to program with Python

I recommend these documentations to learn how to program with Python from scratch:

Invent with Python (documentation in Spanish, available on the web or PDF with educational games)
A Byte of Python (tutorial to learn Python in English, available on the web)
Published by: Frank Luzón 09/06/2020
Systems Engineer graduated from Universidad Metropolitana de Caracas, Venezuela 1998. Eradicated in Chile since 2014. Currently working as an SQA Specialist for TSOFT Chile. I share knowledge about software development.