How to get started in the world of programming
When I set out to learn to program, the first steps were the most difficult, basically because I didn't know where to even start. There is a huge offer of courses and tutorials on how to learn to program, from paid online courses to books, videos, websites, and code camps, the options are immense, but guides that reference a ready-to-use curriculum plan flexible enough for anyone will be harder to find. My path has been to assume, wrongly, that to learn to program was enough to learn a programming language.
Although this approach is possible, it is not at all the most efficient, and can easily become a painful and demotivating walk. It took me 2 years to find the right path, through many failed attempts, from buying books, to online courses, both free and paid, but no matter how hard I tried, the ability to program was limited to the very specific examples taught in that environment, revealing insufficient to independently produce a real programming project. If I had to start over today, and with the knowledge acquired, what I would have done would have been a much simpler plan, but certainly more effective.
So, the most valuable lesson learned from this self-taught process and that I propose, for those who want to start learning, but don't know where or how to start, is:
“learning to program is not learning a programming language. A language is just a tool. Programming is the logical method of solving the problem.”
Thus arises the motivation for this article, where I propose two initial steps for those who want to start more effectively and efficiently in this world, especially for those with reduced availability and limited budget:
1. Introduction to the world of computing
Programming is much more than the knowledge of a programming language, be it C, C++, Python, HTML, Java, JavaScript, Ruby, Assembly, etc. It is an ability to solve problems in a logical way, which allows the processing of information of any type for a certain purpose, be it the answer to a question, conducting a data study, or even the automation of tasks, developing a video game, a social network, an application cell phone, etc. Before even trying to learn a programming language, I should try to find out what computer science is.
That way I can compare my expectations with reality and if I have the right motivation to explore and learn about this universe of communication between man and computer. We don't need to know a programming language to program, we just need a problem, and find out the steps we must take to solve it, using a methodology based on the best practices of logical thinking.
Whether you believe it or not, the invention of the computer was only possible through the creation of a code language based on Boolean logic, where George Boole, in 1854, combined logical reasoning with mathematics, creating the method of Logical Inference by Symbols, later adapted for the well-known "0's" and "1's", "on" and "off", bits and bytes, representative of the fundamental units of the computer language. There are some online courses that introduce us to these concepts, and that, in a very simple, introduce us to computer science in a basic and transversal way.
If today I had to choose the first contact with this world, through a structured, high quality and free course, it would have to be: "CS50's Introduction to Computer Science from Harvard University". Created and taught by Harvard University, this course translates into a perfect combination of the fundamentals of computer science in an easy, accessible, but very efficient and pleasant way, transposing theory to practice with several interactive projects in various programming languages.
2. Focus on a programming language according to the project to be carried out.
Just as or more important than learning a programming language is, in fact, starting and creating a project, be it a program, a web application, or even a video game. It is difficult to say that we know how to program if we do not achieve something real with this knowledge.
Carrying out a programming project from start to finish is no easy task, but the valuable knowledge gained by creating it is invaluable and will attest to the skills needed to embark on more difficult projects or even consider succeeding professionally with them. Thus, it is desirable that the learning process includes a practical component that promotes the creation of real programming projects, not only because it is by writing code that you learn, but it is in this process that we will build a portfolio of useful projects for the dissemination and reference of our capabilities, building a curriculum for those who later wish to explore programming as a professional area.
We may have the motivation to create a personal website from scratch, an application to manage any task of our day-to-day, a simulator of any kind or even a video game. Depending on this motivation, the choice of programming language arises, and it should not be the other way around, since each language is specialized to solve certain types of problems, and it can be frustrating to try to use a language that does not facilitate anything in the construction of our idealized project. In this sense, for a certain domain, there is a language, or a set of them, more suitable for creating different projects. I suggest the following table that references some projects with their respective languages and the degree of difficulty for those who want to start learning to program from scratch:

Python will undoubtedly be one of the best languages to start this journey, both for its wide versatility in several domains, as well as in the learning curve, quite tolerant for beginners, and very powerful for those who want to explore its more advanced capabilities.
The most complete and high-quality course, respecting an excellent learning curve for the beginner, guaranteeing an adequate follow-up from the beginner to the intermediate level, balanced with theory and practice, allowing the realization of numerous projects for an eventual transversal portfolio in the domains mentioned above, it must be the "100 Days of Code: The Complete Python Pro Bootcamp for 2022" by author Angela Yu. Despite not being free, this course is often on sale and can be purchased for less than €20.
And next?
The initial steps are taken! If we follow this initial path, surely the next step will be easier, since, with this solid introduction to the world of computing, the reader is allowed to glimpse the numerous ramifications and specializations possible for growth in this area, including the opportunity to acquire the minimum essential skills for a professional career change. What will come next, on the learning path, will depend solely on the motivation and project to be carried out! The world of programming is vast, and there are several solutions to achieve the same result, the most important thing is to make a conscious decision on the available time that we can invest to learn a new language, tool, or technology, which should always be in favour of a necessity to lead us to the success and fulfilment of the project in mind. We shouldn't fall into the typical "hellish spiral" of unbridled consumption of programming courses and tutorials that don't really help us to achieve successful projects but only consume time and energy.
Take the journey and discover yourself as a programmer.
