📜 ⬆️ ⬇️

Thinking about programming and programmers

Inspired by recent events
The need for knowledge of mathematics
and
Programmer crisis

A few words about programmers for undergraduate students and those who are still going to go to college.


“You see, in order to create a system like Linux, it’s not enough to be a good coder. You need to be more insidious bastard. "
Linus torvalds

You can give a thousand interpretations of this statement, but many will agree that the concept of "programmer" is somewhat broader than the concept of "coder." Programmers for the most part are subjective, often reasoning about various topics based on their personal experience and preferences. And everyone has different experience and preferences. This interferes with the discussion of general issues, as each pulls the blanket to his side.
What is written further is only my point of view.
')
(Parsing comments at the end of the article)

Who are the programmers.


Programmers are people who develop software for various types of computing equipment (PCs, cell phones, microcontrollers, etc.).

There are many specialties and different areas, which are traditionally called technical. After graduation from university, a student automatically becomes a programmer with an engineer, a mathematician, a system prefix, and others. Programmers themselves often call themselves Web, C ++, .NET, Java, databases, Linux, etc.
In practice, it often happens that an engineer, a mathematician, and a system programmer (by education) sit at the same table, and solve one problem, say, in Java.

There is one more gradation - this is specialization . Here the choice is relatively voluntary and there are various tasks. For example, 1C, web, databases, DSP, SAU, application programs, 3D applications, artificial intelligence.
Knowledge, skills, techniques in each subject area are specific.

How do programmers.


Make them in universities. At the lecture, they are forced to go all in a crowd without taking into account (as it is a pity) specializations, to pass exams for them.
Consider yourself lucky (unlike your future employers): because of the difficult demographic situation at the beginning of the 90s, the competition for a place every year is less and less. Teachers have become more humane, and doing laboratory work in modern programming languages, no longer need to know how the box is arranged, to which the lanyard pulls from the monitor.

However, the specialties have not been translated, where they undergo the operation of addition in three lines, and students still dump the pointer out of the array boundaries to the Microsoft compiler error.

How do programmers work.


The path of the programmer is complicated and thorny. Of course, it all depends on the specialization. (You can correct me) 90% of the current tasks are databases and web-programming. Every year, new programming languages, new frameworks and technologies appear in this (and not only) subject area. Even frozen geeks do not have time to follow everything. And of course you should not expect that next year you will be taught the NET Framework 4.0 at the institute (and as we would like). But someone already uses it and is glad that the software is created faster, and the area of ​​necessary knowledge is narrowed down to the knowledge of the framework. Web programmers are excited about the advent of Ruby on Rails.

How to become a programmer.


Most likely, you must first enroll in some technical university for a specialty related to software development. The most severe programmers (as students) believe that a / c for them is generally not necessary. Everything depends, of course, on the specialization and level of severity. But in some places the attention is still paid to the diploma (I advise). The benefit of the competition for admission is now small.

And now STOP ...

Doesn't it seem strange to you that the number of graduates is growing every year, standard tasks become easier, and you still want to become a programmer?

Despite the fact that the number of jobs is constantly growing, this growth is not uniform in areas and specialties.
Unfortunately for the profession (fortunately for individuals), now an adventurous high school student, somehow sorting out Joomla, can earn freelance more than his dad, who works in a factory.

Probably, the time is not far distant when customers will become more technically literate. And wages will become more "fair".
With the development of technology, and a huge number of ready-made solutions, when new functionality is added by connecting another ready-made module, the requirements for developers to solve typical tasks are reduced.

Every year the profession of a programmer is becoming more and more like the profession of a clerk (also known as office plankton). With certain limitations of course:
1) not in all subject areas;
2) a good programmer will find a job.
With the release of the new framework, the programmer's knowledge area for successfully completing 99% of tasks can be much narrower than without it. As a result, 40 specialists can be allowed to solve a certain range of tasks, and not 20 as before. In addition, universities have thrown on the market another batch of graduates. And now there are not 40, but 60.

Here there are 2 more questions:
1) What subject area should be chosen so that it is interesting, profitable, and the question of competition in the labor market was not very acute?
2) what does “good programmer” mean?

How to choose a subject area.


Since there are many areas of specialization, it is possible to present in general terms the area of ​​their preferences. It is clear that after 5 years of database development it will be somewhat difficult to realize oneself in the field of 3D modeling, provided that there are already specialists in this field. Although there is always a chance.
Drawing an analogy, I would not want to be with a surgeon who has been an oculist all his life. For lovers of holivars, there is such a therapist (general practitioner).
Meanwhile, (I would like to pay special attention to those who are just choosing where to go to study) knowledge about the prospects of the software market development would be useful, at least 3 (more - better) years ahead.

Moreover, it is desirable (at least in general) to monitor the overall political and economic situation in Russia and the world, and on the basis of this to draw conclusions. The network has resources with statistical information, expert opinion, news. Who can do it - he wins.

There are many specializations on the market. In areas such as web and databases, competition is still not the least. Most likely, with the release of new and new ready-made tools for developers, the average salary in these areas will begin to decline with time. Even if the number of jobs will continue to grow. In any case, I want to warn against the temptation to score for study and knock off money on the easy here and now. The high price will be only for the Gurus, who can solve the same 1% of the tasks that are not available to others.

I would like to draw attention to such specific areas related to programming, such as cryptographic protection, coding and transmission of information, digital signal processing, automated control systems. Interest in these areas is increasing every day, their scope is wide enough - from the modem, and ending with the spacecraft. Here, too, you need to be a Guru, and no less dancing with a tambourine.

The sad thing is that many intelligent guys are striving for easy money, and as a result, now in Russia in these areas, most of the developers are mastodons who have long since retired due to years of service.

There will always be people who are satisfied with a lifetime to make business websites for bakeries, provided that the salary is at the level of the seller of household appliances. In the end, someone has to do this too.

But if you say, in your second year, decide for yourself that you want to become an expert in the field of ACS, then you will find an interesting and well-paid job a little easier than a database designer. The only problem here is migration from the hometown.

What does “good programmer” mean?


This is a holy war theme. The question is whether it is necessary to prepare artisans (to teach specific technologies and languages) or to prepare masters (to give fundamental knowledge). I would like to give advice: each decide for themselves this question individually.

Here are some of my thoughts on this.

To solve the question of choosing a subject area with maximum efficiency, basic knowledge of economics and history is necessary. In order to understand others and articulate your thoughts clearly, you need knowledge of the Russian language and literature (a lone programmer cannot develop a complex system). There is a basic knowledge of mathematics (various directions) and physics. Of course, not everyone in his life will have to solve differential equations, or implement a device whose work is based on the Doppler effect.

Develop your horizons and the level of thinking necessary. Without knowledge of mathematical logic in general, any programmer looks poor.
According to a former employee of our company, who left for America in the 90s, there are a huge number of highly specialized specialists, many smart people who are very well versed in their subject area. But it is very difficult for them (practically impossible) to organize the interaction of various blocks among themselves in complex systems.

Modern higher technical education provides the basic foundations - fundamental knowledge in various fields. They give directions for development in various areas. If you are not interested in any subject, it does not mean that nobody needs it. There are quite a lot of people in the stream.

The simple human laziness and delusions of grandeur add fuel to the fire of holy war. For some reason, many believe that they all should. Must tell, show, educate. Why, when obtaining fundamental knowledge, the question of independent study of languages ​​and technologies is perceived wildly? You can, for example, knowing Pascal and the basics of OOP, learn C ++ independently. And many do it.

Much depends on the individual qualities of a person, but to become a true professional, you need to work a lot on your own.

If a person wants to be taught languages ​​and technologies (often in 1 copy) - he is a direct route to the technical school. (The learning process should be discussed separately)

The problem of craftsmen and artisans can be solved if the master chooses his own subject area independently and consciously , and learns the skills of the craftsman himself , not to the detriment of the master's knowledge.

By the way, subjects at senior courses that do not belong in any way to the chosen field of specialization, I recommend to teach a) for general development b) for an average diploma point.

Summary.


It is desirable by the end of the second (earlier - better) course to determine the intended subject area of ​​the future specialty. It is not necessary to go to the area that is fashionable today. It is necessary to analyze the labor market and the situation in the world (in Russia in particular). The programmer has a huge selection of interesting and promising areas. They are complex, interesting, in demand and fairly well paid. And you have to work yourself professionally, you need to start as early as possible and as much as possible.

PS Before you leave comments, I recommend also to get acquainted with the article by Joel Spolsky - Tips for students studying computer technology .

UPDATE

Conclusions that can be made from the comments


1) Olympiad (not equal) programmer.
See below. ( bobermaniac )

2) schoolboy (not equal) programmer.
At school, only the learning process. (There are exceptions)

3) Programming is a congenital disease.
If at the age of 18 you don’t even know basic, then the chance to get sick is small.

4) The institute gathers smart people (including students). Perhaps you have something to learn from them. ( kmike )

5) In order to become a professional, you need to work a lot on yourself and on various projects.

6) The symptom "I will learn any language in 2 weeks" passes with age (professionalism). Not everyone.
See for yourself. See below.

7) Pay attention to areas of activity where basic knowledge of mathematics (and so on) is not needed. Perhaps there is high competition.
Example, habrahabr.ru/blogs/arbeit/59989/#comment_1633645

8) Pay attention to the developing (not yet fashionable) areas of activity.
aryeh knows govit.

9) On Habré, you need to develop a moderation system. Otherwise, any topic can be turned into a trash.
At a minimum, the ability to hide discussion threads coming out of the topic topic.

Source: https://habr.com/ru/post/59989/


All Articles