What do you need to complete to become a programmer? Basics of programming for beginners - where to start learning, the best courses and lessons

Every time, with difficulty overcoming life’s obstacles, I want to take and reshape this world for myself. Unfortunately, we were not born the creators of this universe. For those who want to satisfy their creator's ambitions, only the virtual world remains.

Although to create here you will need not so much magic and knowledge of runes as knowledge of the basics of programming. Therefore, for all aspiring creators virtual reality we will tell you how to learn to program.

What a teapot needs to know

As much as I would like to admit it, in reality programming is not such a magical thing. Creating code can sometimes be compared to walking barefoot on a seabed covered with sharp rock fragments.

To become a programmer, you need to be not only smart, but also patient and persistent. Learning to program is always accompanied by headaches, red eyes from lack of sleep, and a distant look. This is how you can easily recognize a programmer.

Many beginners consider writing code to be almost the most romantic profession. The number of people wanting to learn programming has especially increased after watching the movie “The Matrix”. It was the main character of this picture, Neo, who pushed many to take the path of comprehending software sciences:

But most of those who start studying give up after a few weeks. And the main reason for this is the wrong direction of study, methodology, or even a programming textbook.

After the collapse of the USSR, all domestic universities for a long time did not even try to reshape their education system to the needs of the modern market. Technical universities were no exception to this rule.

Programming as a separate branch and specialization did not exist as such. Its fundamentals were taught only as a link to other engineering disciplines. And even those crumbs of knowledge that were given to students in this area did not meet modern standards and lost their relevance 20-30 years ago.

In the countries of the former USSR, the main programming language taught in technical universities was BASIC.

The situation has not changed radically even 10 years later. Only a few educational institutions, sensing the trends of the new time, began to reshape their education to world standards at the beginning of the 2000s. And only from that moment on, programming began to be perceived as a separate profession and specialization of training:

At the same time, various specialized commercial courses and educational institutions began to appear. But the quality of teaching and the knowledge provided was at an extremely low level. There was a shortage of competent professionals capable of teaching newcomers not only theoretical knowledge, but also practical programming skills.

And this is the most important aspect in the profession of a programmer. Therefore, most of today's gurus of the Russian IT industry began their programming training from scratch on their own.

To some extent, this trend continues to this day. Although in our time the number of professionals involved in teaching has increased significantly.

Which language should I start learning programming from?

Comprehension of software sciences is characterized not only by hard training, but also by its beginning. It is sometimes difficult for a beginner not only to start selfeducation, but also determine the coordinates of the starting point of the process. Therefore, we will try to help you get around all these difficulties:

Before you break your teeth on the granite of science, you should decide where to start learning programming. At the first stages it is very difficult to decide on a specialization. Therefore, let's start with selecting the first language.

Most often the choice falls on the C programming language. This is where most beginners around the world begin their training. The majority of programming languages ​​have been created based on C, and in many ways they inherit its structure and syntax.

By learning C, you learn the basics of not just one programming language, but several.


Let's look at the features of this language that make it optimal for learning:

  • An easy-to-understand basis - some of the built-in capabilities of the language are included in separately plug-in libraries for simplicity. These elements include most mathematical functions and methods for working with the file system;
  • Optimally tailored type system - thanks to a simple set of data types and strict typing, the risk of making errors in the process of writing program code is reduced;
  • The focus of C on the procedural type of programming, in which a clear hierarchy of all code elements is observed;
  • Access to machine memory using pointers;
  • Minimum number of supported keywords;
  • Name scope support;
  • Support for custom data types ( associations and structures).

Simply put, C is where a beginner should start before learning to program in other languages.

Programs (compilers) for programming

To learn programming, it is not enough just to have a desire and a computer with Internet access. To write programs in C, you will need specialized software - a compiler.

A compiler is a special program that translates program code into a computer-readable form.

Here are some specialized compilers that support the C language:

  • Microsoft Visual Studio is a professional tool that supports many languages, including several server languages. Suitable for beginners, if you take it “for growth”:
  • Borland C++ is a free compiler ideal for beginners. Unlike the previous tool, it is clear and clear interface. Therefore, mastering it will not cause any particular difficulties even if you independently master the basics of programming:
  • Code::Blocks is a free development environment that supports writing code in multiple languages. Medium difficulty option:

As for specialized literature, we will not recommend books by certain authors. Here, as they say, choose what you want. Because in most cases, choosing a programming tutorial is an individual process. Use the source that is most suitable for you.

And you can find a lot of information on the Internet. For example, on our website an entire page is devoted to specialized literature on IT topics.

First, we think about what exactly you want to do. Let's say you want to become a game developer - what's next? Let's move on to monitoring job search sites - there we find out how much demand there is for specialists of the profile that you have outlined for yourself, and what their income is.

Distribution of the number of vacancies by salary in Moscow and the Moscow region. Source: Yandex.Work

102,000 rubles per month - the average salary in Moscow and Moscow Region for a game developer

Well, not bad! It may be worth spending a little time and effort on educating yourself. If the picture for your chosen profession looks worse, then you can simply change your goal. Agree, it’s better to do this at the introductory stage than after going halfway.

Step two - thoughtful

We find out what requirements are placed on a specialist and what he should know. Let's take the same game developer. What is it “made” of?

The base language for this profession is C#, and to create all possible and impossible miracles, Unity is needed. Not so much!

But before you start practicing seriously, it’s worth learning a little about the languages ​​you want to learn. If they turn out to be too difficult, it may discourage you from going further.

Therefore, for the first steps you should choose something simpler, such as JavaScript. After all, work should bring not only money, but also pleasure!

Step three - theoretical

Now is the time to take action! If you ask on the forums how best to do this, they will unanimously answer you: learn yourself . But not everyone can warn you about the pitfalls. So how convenient is this path?

Independently - this means using books, websites and all kinds of applications on the Internet. If you already have some kind of base and want to slowly expand your knowledge, then you can learn this way. But for a beginner, this is not an easy task.

You will have to deal with all the questions that arise (and they will certainly arise) yourself. True, without mastering the topic, it’s not so easy to even formulate the question correctly.

Another option is to find a mentor. This is what they call a personal mentor. Essentially, this is the same tutor. Of course, it is unlikely that this will be MaryVanna with a pointer in her hands, but a lot depends on how the relationship with this person develops. A mentor can be both a guiding light and a cross in your just beginning career.

Programming is an almost intimate process that you don’t want to let strangers into. Like the creation of a world where everything obeys only you!

To build a career, it is very important to enter the professional circle. This gives new connections, teaches you to communicate in one language, allows you to feel like you belong and cross the threshold of initial uncertainty.

Even when you are not sitting in a classroom, but at home on your favorite laptop, you can communicate, ask questions during the lecture and immediately receive answers to them. The only difference with live classes is that you don’t have to travel anywhere.

What could be more difficult than choosing a profession? We are always afraid of making mistakes and ask ourselves the question: can I achieve success in my chosen field? Our subscriber shared his doubts by writing to us:

“How do I know if I can become a programmer?”

We turned to our experts for clarification, and we present the answers received to your attention.

The first thing to do is to check the basic level of logic. Find the Shmurdiki test, pass it and score at least 27 points the first time. Managed to give all the correct answers on the third attempt due to understanding - well done.

Let's move on to the next stage. Install a development environment for C++ or C# or some other language. You managed it and every successfully completed step gave you pleasure - a good sign. Move on.

Find a description of how to create the first application, Hello World, in your installed environment in the language of your choice - it's a classic. Did? Great.

Now write your own calculator that adds, subtracts, multiplies, divides. If you did it and enjoyed it, you can become a programmer.

Promote Demote

Anyone who is willing to work hard and develop themselves, read specialized books and solve difficult but interesting problems can become a programmer. To become a programmer, you don't have to pass difficult exams or study for many years at university. It is enough to loudly announce to the world that a new programmer has been born, and at the same time work a lot and persistently. On the other hand, you can have the lifestyle of a programmer: do not put off the code editor when you return home, continue studying, get rare material on the Internet, study new technologies, brush up on mathematics and study, for example, ML.

Promote Demote

What defines a programmer is the desire to write cool code. But it’s hard to surprise anyone with just working code: it should be short, fast and understandable even to a schoolchild. Well, you can write perfect code only when you truly love this activity.

You also need to love learning new things and improving in old ones. Knowledge of Django is also difficult to surprise. The technology stack changes and evolves daily. It is not enough just to know that a tool is available. It is important to understand how it works and why it is needed. To do this, you often have to dive into basics that are not directly related to programming. And to make learning fun, you need an inquisitive mind.

A programmer must have developed systems thinking. He always needs to consider several solutions and choose the best, look at the problem from different angles, offering non-obvious but effective solutions. Study ready-made tools so as not to reinvent wheels.

A programmer must also be moderately stubborn and ambitious. If the text you read is not clear the first time, you need to read it again, or ten times, until it becomes clear. Or if there is The best decision, then it’s worth trying it out, and not giving up, saying that it will do just fine. In any business, you should strive to become the best, develop, share knowledge, and argue. When faced with a challenge to knowledge or skills, it will be difficult for a programmer to pass by.

Well, and, of course, you need to be able to build communication with people and adapt to different circumstances. Gone are the days of bearded geniuses who hacked the Pentagon alone from the basement and wrote Windows 3.11 and Facebook from scratch. Now the programmer is a member of the team. The success of the entire team depends on communication skills and flexibility.

Finally, ask yourself: “Can I become a programmer”? If your answer is “Yes, I can,” then nothing will stop you.

Promote Demote

The answer lies, rather, in the area of ​​human qualities and mentality. Of course, if there is initially high level theoretical training, for example, fundamental mathematical education, then learning will be easier, but in general it is a matter of practice.

To become a successful programmer, you need to be able to understand the basic principles of programming and think in terms of the language in which you are going to write code, but this cannot be said to be some kind of predisposition. You need to be patient and work hard, no matter how trivial it may sound.

Therefore, a person who is capable of constant learning, primarily self-learning, can become a programmer. A programmer learns every day and this applies even to experienced developers. If you have difficulties with your own motivation and perseverance, this is a wake-up call for the programmer profession, which more important than a disadvantage basic knowledge.

Another necessary character trait is stress resistance and planning skills. The programmer gradually gains an understanding of how to optimally approach the task; the code becomes cleaner and clearer. The programmer begins to think ahead and works out all the options for the expiration of events, which generates stable code, regardless of external factors.

If in doubt, I would advise you to first try related professions, for example, testing. They do not require a deep technical base, but at the same time they require a similar mindset and character.

Promote Demote

First, you need to understand what is considered a programmer profession. Programming has long ceased to be the preserve of a select few who are able to think in byte codes and mentally monitor allocated memory. Today there are many modern languages ​​in the world whose syntax is as close as possible to simple English. For example, User.find_by(name: "Vasya").destroy in Ruby (on rails). Knowledge of these commands is enough to write small websites, blogs, and online stores. If you want to work at this level, then you just need to choose the dynamic object-oriented language you like (Ruby, Python) and take a course on it, or read a book, there are quite a lot of them for each language. You can also try yourself in front-end development, learn JavaScript and then master frameworks for it.

If you want to write more complex systems, you need knowledge of abstract logic; you can get it by studying higher mathematics at the institute (ideally discrete mathematics, but, in fact, mathematical analysis also develops the brain quite well). You can read books on discrete mathematics and algorithms (Stephen Skiena “Algorithms. Design Guide”, Thomas Cormen “Algorithms. Construction and Analysis”, Rod Haggarty “Discrete Mathematics for Programmers”, J. Anderson “Discrete Mathematics and Combinatorics”) and just practice programming. It would also be very useful to learn a low-level language, for example C (Kernighan, Ritchie “The C Programming Language”) - for a general understanding of the principles of program operation.

If your goal is to engage in machine learning and data processing, you will need to master mathematical statistics and linear algebra. All these sciences have one thing in common - they can be learned. Therefore, the main idea of ​​​​understanding your own capabilities in programming is this: “If you can learn on your own, then you can become a programmer. You don’t need to be a mathematician, but you need to be able to become one if necessary.”

There are also many channels in Telegram, several for each programming language, I also advise you to search.

If we talk about the simplest development of web sites, then there should be no doubt that everyone can handle it. If you want to go further, but at the same time you think that mathematics and logic are not for you, then you can try gaming sites for developing algorithms:
https://www.codingame.com/
https://www.codewars.com/
On them you need to solve the simplest (and not so simple) algorithmic problems in any programming language you like. I can't say it's very useful for learning real programming, but if you enjoy these games, you'll definitely enjoy doing serious development.

Promote Demote

If you asked yourself this question, there is definitely a chance. After all, the main thing is to have the desire and desire to fulfill it. But for real success in programming, you need to think systematically: understand what is connected to what and how, see in the world around you system processes and algorithms for solving them, as well as being able to find approaches to solving problems. Perseverance and the ability to concentrate on a task are important.

A programmer’s patience won’t hurt either, because coming up with a solution to a problem and writing the algorithm code is only half the work. Then comes testing, finding and eliminating errors, customer corrections - all this requires the lion's share of patience. But with such innate stubbornness in achieving a goal, it is necessary to maintain flexibility of mind, be able to look at your work through the eyes of users; sometimes it is very difficult to abandon your decisions in favor of the customer’s decisions.

Don’t be afraid to study to become a programmer, because even if you don’t like programming, you can work as analysts, testers, technical writers and even project managers, and IT education will only help in this.

Promote Demote

Today it is difficult to find a profession that is more promising, technologically advanced and financially stable than that of a programmer. At the same time, even despite high salaries (several times higher than the “regional average”), the industry is experiencing a personnel shortage. As Adam Smith said, “demand creates supply” - but it’s not that simple.

The shortage of personnel in the market is no longer what it was ten years ago. The IT sector has matured very much and has gone through a stage when Enikey people were hired for serious positions. Future programmers face new, complex challenges - the range of “primary” tasks of this profession is becoming primitive, and with the development of technology, it is increasingly being given over to artificial intelligence and automation.

Professional “hunger” takes on new characteristics. To succeed, you need to have a fundamental base: a high-quality algorithmic foundation, strong mathematics, be responsible and ready to constantly learn. If you have all this, Google, Amazon, Facebook and Attack Killer are ready to invite you for an interview right now!

Promote Demote

Let me start with the fact that software development is now a huge industry with a wide range of tasks and the skills required for them, which employs tens of millions of people. The variety of companies and projects is so great that the answer can be reduced to a simple one - “Yes, you can definitely become a programmer.”

But it’s better to rephrase the question as “can I become a good programmer?” In my opinion, you can become a good programmer if:
1. Love programming and feel satisfaction from the very process of thinking through and writing code.
2. You like high quality and comfortable software products, and you want to develop just like that.
3. You are interested in IT development, even if you don’t like all the trends.
4. Possess developed critical thinking and analytical abilities.
5. You can work in a state of flow and concentrate on one task for hours.
6. You care about what you do and what people you work with.
7. Are ready to work in a team to achieve a common goal, even if you don’t like communicating with people.

Behind most technical conveniences, such as online banking or information boards at the airport, are specialists in one of the most in-demand professions of our time - programmers. Without them, neither gadgets nor social networks would work. Even ordering new sneakers from an online store would be problematic. Until now, the IT sector is only accelerating the pace of development, demanding more and more new workers. Companies are ready to hire even beginners. The average salary of a programmer starts at 35 thousand rubles, and experienced professionals can earn exorbitant amounts of money.

The profession of a programmer is popular and in demand

In this article we will tell you how to get into a prestigious profession, who senior programmers are, and why you will have a hard time here without English.

Who are programmers and what do they do?

The IT industry's demands for professionals are constantly increasing. Therefore, we need people who will understand this: create, repair, support. Coders are different, and each job has its own specifics. Let's talk about the main specializations of IT specialists:

The most obvious option. But it's not as simple as you might think. Coders perform different tasks depending on their specialized programming language and project.

For example, developer mobile applications creates programs for android systems, iOS and others. Every first person has a smartphone and a tablet, so the work here will not end soon.

Another promising direction is Java programming. Most banking systems are designed in this language. Banks are willing to pay well for a quality product both to their staff and to third-party firms. But the requirements here are also high: you will have to be responsible for the correct operation of the application with other people’s money. Of course, you can program in Java not only in a bank, and good IT specialists with experience receive about 200 thousand rubles per month.

A tester is a specialist, without whom not a single project will see a release. This IT specialist knows everything about the intricacies of the code and the places where the program can fail. His responsibility is to check the product’s resistance to errors and bugs and return it to the developers for correction. At first, the check is done manually, but when all the weak points are found, the tester writes special program to automate troubleshooting.

Another similar profession is qa engeneer, product quality specialist. Its main difference is that it does not look for errors in the code, but tries to prevent them. Find out in detail the customer's requirements, plan development, establish communication between groups of programmers - all these are the responsibilities of a qa engineer. Often you don’t even need to know a programming language; it’s more important to understand the stages of development and the features of project management.

The profession is attractive due to its salary: even a beginner can be paid 50 thousand a month.

According to StackOverFlow research, this is the most in-demand IT profession of 2017. Web programmers are divided into two categories: front end and back end (they are also often coded as UX/UI design). The first ones monitor everything related to the user part: the convenience of the application and website, intuitive use and simply a beautiful picture. The latter work on the technical component: the logic of the site, its functions, interaction with the database. To make a page on the Internet look modern, developers take courses in html and php, and are proficient in css, java-script, and python programming.

Your salary will depend on the number of tools you own. HTML coders have the smallest remuneration; they receive from 25 thousand per month.

  • Programmer 1C

A special feature of 1C programming is its close connection with the economic industry. For example, in order to correctly calculate the salaries of 3,000 people at a factory, you need to store data about their working hours, wages, sick leave, etc. somewhere. This task is undertaken by the 1C-Enterprise program. The 1C programmer configures accounting and document management programs so that documents are easily uploaded and reports are automatically generated.

The possible routineness of the work is more than compensated by the salary structure. If we talk about a fixed rate, then a novice 1C Programmer will immediately find a vacancy with a salary of 45 thousand per month, and a leading specialist receives from 120. But in the case of freelancing, earnings will depend on your skills and the number of working hours per week. Professionals earn both 200 and 500K per month.

The debate about real programmers continues to this day.

This IT guy is not exactly a programmer. His peculiarity is that he is well versed in hardware. Connect a printer, laptop, projector, configure its operation, distribute the Internet and design a clever local network- it's all to him. Gurus of wires and working printers are paid from 25 thousand rubles, and the salary of a system administrator programmer with good experience can reach up to 150 thousand per month.

He is also a product manager, he is also a product owner. The product manager acts as a translator between the customer, who does not understand information technology, and the programmer. It seems that this is a job out of nothing - that the customer and the programmers themselves will not be able to figure it out?! Well they won't be able to. It is the product manager who can explain the capabilities of the functionality to the customer and then formulate the exact task for the IT specialists. The product owner is responsible for ensuring that the finished application, website or game brings maximum joy and benefit to the user.

  • IT Product Director

Any successful IT specialist can achieve the highest position in the IT field - chief procurement officer (CPO for short). This person deeply knows the product, understands the coding system, knows the best strategies for creating software. The CIO of an average company may have 30-50 people subordinate to him. Average income... far above average.

Programming training at university

The most obvious way to become a programmer is to enroll in a relevant major at a university. The life of most specialists is no longer possible without IT technologies. Mathematicians, chemists, and biologists are taught to some extent how to use code. But in order not to suffer through subjects that are uninteresting to you and study only specialized disciplines, choose one of the following areas:

Each option has its own characteristics. Scientists graduate from one department, managers from another, and real anti-hackers from a third! To understand this in more detail, check out our infographic. It is better for future IT specialists to choose technical universities. These profiles are available in, and others.

Programmer training in college

You don't have to wait until graduation to devote yourself to your favorite activity. You can start training to become a programmer after 9th grade, you just need to choose the right college. There are not many suitable specialties here:

In total, there are 71 institutions of secondary vocational education in the country with the areas of training we need. You will find these profiles in St. Petersburg College information technologies, Petrovsky College, Novosibirsk College of Electronics and Computer Engineering, V Ural Technological College “MEPhI” and in many others.

Additional education courses

They started teaching programming in Russia not so long ago, so finding a high-quality professional course is an adventure. In addition, not all options are free. To avoid wasting your money, pay attention to reviews, teachers, program and job prospects.

  • Online platforms

You can learn the programming language you like on your own at a convenient pace on one of the learning resources. For example, it’s easy to find a course on Java programming at INTUIT. After successfully passing the final test, the system will issue a free certificate.

  • Online schools

If the idea of ​​self-study doesn't appeal to you, then take a closer look at online schools. A significant plus is that most often the courses here are taught by practicing programmers, who will not only share general knowledge, but also talk about real interesting cases. At the end of the training they give you a diploma and promise to help you find a job. The training is “official”, you can even get a tax deduction. But it also costs quite a lot. The annual course will cost 150 thousand rubles. Here you can see: this is a big expense or a smart investment in yourself.

  • Full-time courses

For those who want to see the teacher not through a monitor screen, but live, there are face-to-face courses. For example, MAXIMUM conducts classes on studying the IT field for schoolchildren Digital Skills. There is also programming there, and you can come to the introductory lesson for free.


How to enroll in the Programming specialty and what to take?

Universities most often require Unified State Examination results from future IT specialists. Russian language, specialized mathematics and computer science. Some may ask for more English.

What to do now to increase your chances of a successful programming career

You need to understand that the IT sphere is developing at tremendous speed. Universities will never physically have time to adapt programs to provide students with the latest information. The university will lay the foundation in the form of basic language capabilities and standard algorithms. That is why the work of a programmer is impossible without continuous self-education. Programming languages ​​are being modernized, developers are creating new convenient tools to make the work of themselves and their colleagues easier, and they are coming up with new algorithms for solving problems. Next, we will tell you where and what else to learn in order to succeed in the IT field:

  • Learn English. Many resources are in English. In order not to wait for someone to take pity and translate the text for you, take care of the language in advance. This is so important that some paid courses provide language lessons to their students as part of the main program.
  • Chat on it forums. Answers to many questions can be found on programmer forums, such as Habrahabr. The professional community generously shares knowledge and useful pieces of code. True, sometimes the search lasts for several days and at the same time you have to understand new tools that you were not familiar with before. And yes, often the most useful link will be in English.
  • Lose yourself in books. Don’t rush to buy the first literature you come across at the nearest bookstore. There is a lot of useless and hopelessly outdated material on the shelves. Again, many works were originally written in English, and the Russian version may suffer from serious translation deficiencies. You can start with our recommendations, and then you will understand what good content looks like.

Did you read to the end? Here's a couple more for you interesting facts, which will help to better represent the profession of a programmer.

  • If you go to the job site, you will see: mysterious middle or senior developers are required. Programmers have their own gradation of professionalism: junior, middle and senior. The first, beginners, must master all the means of the language in which they work. The second are IT specialists with 3-5 years of experience. Still others not only know everything about the code, but can also organize the work of a group of developers on a project. As your rank increases, your salary increases accordingly!
  • A popular portrait of a typical programmer is a taciturn man in glasses with a liter cup of coffee. In fact, this picture is true only for the rare freelancer. And you don’t have to be an introvert to go into the profession. As in any other matter, supra-professional skills are important - to explain, argue, negotiate, get out of conflict.​

This portrait of a programmer is hopelessly outdated. Modern IT specialists are sociable, positive guys!

  • A whole group of IT specialists works on large projects. Everyone is responsible for their own piece of code, and all the pieces must come together in the end into a single product. To make this happen, teams constantly hold planning meetings and help colleagues find and correct shortcomings. And some offices even have TV set-top boxes and Board games. A collective change of activity helps to establish contact and switch when work gets stuck.
  • Programmers celebrate their professional holiday on September 13th. The date was not chosen by chance: it is the 256th day of the year, the maximum possible power of two that fits into the number 365.

From Google

Nowadays, more and more people are learning programming, and many take on this difficult task on their own, without any plan of action, which significantly reduces the productivity of learning. Google has compiled a list of what you need to know to become a good programmer, as well as resources where you can improve your knowledge in the required areas. None of the recommendations below will guarantee you a job at Google.

Take a course in Computer Science

Learn an object-oriented programming language

Object-oriented programming is now a standard in industrial programming, so you are guaranteed a good salary. Examples of such languages ​​are C++, Java, Python. Courses for beginners can be found, and, and for continuing education, and. Several useful collections of links and books to study.

Master other paradigms and languages

Expand your programming horizons, don’t limit yourself to OOP alone, master other paradigms, learn other languages, try yourself in different areas. For example, if you want to develop web applications, then you should definitely pay attention to CSS, HTML, JavaScript, PHP, Ruby. Do you want something exotic? Spend some time on Haskell, Clojure, Prolog. Courses for obtaining new ones can be found and. We especially recommend paying attention to the Codecademy resource. Take a look at our selection.

Test your code

Develop logical thinking, learn discrete mathematics

if you want to do something more interesting in your life than writing websites for the rest of your days, then you can’t do without it. Courses: from MIT, on logic, graphical models, game theory. If you still doubt whether a programmer needs mathematics in his work, then read about it.

Know algorithms and data structures

Understand how operating systems work

Any program interacts with the OS, so develop an understanding of how OS , at least at a basic level. Great on YouTube.

Learn UX Design

if you want your application to be convenient to use, and therefore to be bought. Course from Udacity.

Do you understand machine learning???

Understand how compilers work

Many programmers write code and don't even think about how it is converted into instructions that a computer can understand. If you are interested, then learn how compilers work. You can do this in this course. We have books about compilers on our website.

Work on your project

Practice is vital for anyone who wants to be a programmer, so work on your project in your free time: For example, create or maintain a website or build a robot.

Participate in open source projects

this will help you develop skills in working with other people's code, and in the end you will simply be useful to humanity. The ideal place for open source activities is GitHub.

Work on projects with other programmers

This will help you learn to work in a team, which is an essential skill in modern world, and you can also learn something new from them.