How to choose the first programming language, a guide for those wishing to start programming

Briefly for introduction: I am a professional game developer and I have something to say to myself 15 years ago. I decided to issue an article with recommendations to those who are at the very beginning of the path to programming. The article is mainly aimed at schoolchildren (and their parents), students, and maybe Junees. For older people, but wishing to become programmers, I think it will also be interesting.

image
"Again deuce" - a picture of the artist Fyodor Reshetnikov

, , :


  • « »
  • ,
  • , ,
  • , , ,

These postulates can be disputed and discussed a lot, but this is not the purpose of this article.

The most important thing is that changing the language and technology is many times easier than learning the first, and many skills are language independent . Therefore, it is worth throwing out everything difficult that is not necessary, everything that can be taken out later on from the difficult path, and taking everything that helps you on the road.

Throughout the time, before you can make any money through programming, you have to go on bare enthusiasm. On the way you will encounter many problems that at a certain stage of development may seem insurmountable. And so that the plot with the KDPV does not take place, at this moment you should have enough will and desire to overcome this period.Therefore, I consider the management of my own motivation as the most important part of the learning process. And the statement that they will pay a lot later, as a rule, is not a good motivation.

Therefore, I recommend choosing the first language and technology strictly for love.In all the technologies for which you are now free to find free online courses, there are earnings, just completely exclude the question “how much will I earn” and “how much is this language / technology in demand in my city” from the selection criteria. I also think that there is an incredible amount of free educational materials now and I don’t see much point in buying paid online courses. Of the paid education circles with programming and robotics for children, I consider it a good idea, as well as any technical lyceums, gymnasiums, universities, i.e. classical education, if you are at an acceptable age for such an education.

I don’t recommend courses like “we will make you a front-end in 2 months”. Mostly because over my many years of experience I have never seen an established programmer with such a background. Once it can jump above your head and succeed, stay in flight - no. Of all the rules, of course, there are exceptions, but are you ready to put so much time and money into the lottery where the prize does not depend on you? And it does not depend on you because you are not standing at this moment and therefore do not control the situation.

Here it’s separate for parents: a school with an in-depth technical program is much better than usual. If the bias is only in computer science, then this is not so good. It’s good when mathematics, physics, computer science, and English are deepened. The more mathematics can be shoved into the normal period of standard school-university education, the easier it will be with programming, but without fanaticism, it is also impossible to pinch. The problem is that basic mathematical training, firstly, develops the brain very much, and secondly, unfortunately, can hardly be mastered later.

About universities it looks like schools: A diploma is not needed then, in general, at all. Except the moment of emigration. To get a work visa in another country, a diploma will help a lot, but this can be done. It makes sense to go to university only for skills. And this is matanalysis, linear algebra, differential equations, discrete mathematics, probability theory, statistics. What fashionable technologies today is at the university is absolutely not important. It’s good when HR of large companies, all kinds of Yandex, Intel, IBM, Kaspersky and others run around the university. It is quite possible to get there, and they, as a rule, contain all sorts of laboratories and special courses that are very good.

If you are an adult and you don’t have a mathematical background, then it’s okay, don’t try to create it right now, just the spectrum of your direction is somewhat narrower, which does not cancel the advancement within the framework of available technologies. If it is very necessary - online education to help, this is difficult, but possible.

So, the algorithm as I advise you to choose a programming language


You go and google, Yandex, or what you use and hammer in the request there: “free online programming courses” and simply select 5 different languages ​​from the descriptions. Read about the different, maybe something will hook. If something is hooked, all choices are made, take it.

For each language, go to Wikipedia and read about this language. Something does not like it, then throw it away. 2-3 languages ​​will remain. If something is hooked, all choices are made, take it.

Decide on the subject area that you are interested in: for example, modifying games and writing scripts for them or writing entire games, creating a website, telegram bot, making financial calculations, simulating something like an epidemic, controlling a robot, or something else. It is important to take what you are personally interested in, and not what someone considers important.

Look for courses about specifics of interest to you in different languages.

Try whatever you like.

The key moment to catch the desire to dig in this. And as soon as you catch this desire, start any online course. If you have any difficulties or problems, try a different course or a different language. Do not be afraid to try different things. O chase in the eyes should be your guide and guiding star.

If you choose a direction in which the potential salary is greater, but there is no fan, then the risk of not reaching will increase many times. Therefore, the first technology must be chosen only for love. And according to the calculation, you will choose the following technologies when there is a certain background. Usually this is not even a second but a third or fourth programming language. And you still have to change technology, because everything changes very quickly. And even such a conservative language as C ++ is changing qualitatively and programming on it requires new approaches.

Technologies that you can now study will become very outdated and will change when you get to using them at work. The technologies that I now use in work and hobbies basically did not exist when I learned to program.So generally relax and do what pins and rushes, and not what is fashionable or someone needs . Moreover, knowing several languages ​​and different technologies is extremely useful for experience and overall development in the industry. You can compare different approaches and improve your style and path.

Some very common questions.


Do I need English?

To start right now - no. But generally it would be nice. If you can concentrate on this at school and university, then this is not bad. But do not put off the principle of "learn, then do programming."

Do you need higher mathematics?

To start right now - no. But generally it would be nice. If you can concentrate on this at school and university, then this is not bad. But do not put off the principle of "learn, then do programming."

Do I need a higher education?

To start right now - no. But generally it would be nice. If you can concentrate on this at school and university, then this is not bad. But do not put off the principle of "learn, then do programming."

Do I need X?

To start right now - no. You definitely shouldn’t postpone it by the principle “I will learn, then I’ll do programming”. Well, you understand :)

And the most important thing: there is no dogma, there is no “right” concept, there are millions of opinions around. Get high and send everyone the forest, including me and this article, if you like to do something different from what I wrote, do it. If it works, then it's not stupid.

In the beginning, when you learn to walk, you need to learn to walk, at any speed and in any direction, then you will choose a direction. The same thing with training in swimming, cycling, car. First you learn to run correctly, train and then run a marathon. The list of these analogies goes on and on. First you master the tool and develop skills in yourself, then you already choose the direction of movement and directions of development that are interesting to you within the framework of the skill. That's the same with programming. Just start by follow the fun.

And finally, a couple of cool games that I find useful: lightbot.com and www.euclidea.xyz/en

All Articles