📜 ⬆️ ⬇️

About higher education

Every person has a certain outlook. When this outlook narrows to infinity small, it turns into a point. Then the man says that this is his point of view.

David Gilbert


')
Disputes about whether a higher education is necessary for a programmer are heard more and more often, and, considering that the stream of opinions on this no doubt sharp topic is not exhausted, I decided to express my thoughts. It seems to me that universal disappointment in studies is associated with numerous processes and changes taking place in the profession and needs serious study. Below I will consider the most common misconceptions, myths and the main causes of the phenomenon.

Did you go there?


Let me remind you once again: the University is not a vocational school, it studies the structure of nails, but does not teach them to hammer. Universities graduate scientists and engineers, and not attendants. Also, we should not forget that programmers in our country are graduated from mathematical faculties, and officially they are considered to be mathematicians, although recently it was precisely programmer schools that appeared, with a focus on industrial programming.

The university is taught primarily fundamental knowledge, those that will not become obsolete in a few years to your graduation. An American biologist from the National Institutes of Health wrote me: "Times change but fundamentals do not change" - times change, but the basics remain. That is why it is better to choose general areas of study and try to take the maximum number of elective courses, which is why, in American universities, physicists have so many, in the opinion of many, “unnecessary” courses, such as biology, chemistry or literature, instead of specialized ones. Karl Sagan, who studied astronomer, mentions in his book that they had genetics labs and experiments to test the hypothesis of abiogenesis. Not to mention the fact that in the United States you can get a few (minor) specialties in addition to the major. So when choosing from the theory of evolution and programming of Java - choose the first one better, perhaps someday this knowledge will be useful in your career or life. You will still learn the language, and it is unlikely that you will become especially interested in the history of our planet. After all, it is always easier to narrow your horizons than to expand it.

We should not assume that the situation in foreign universities is fundamentally different. As a result of many years of parallel evolution throughout the world, similar requirements for specialists have developed. You are absolutely right that they will teach you otherwise , but you are mistaken that you will be taught otherwise . Higher education institutions in different countries differ in educational processes, the names and scope of courses, the quality of practice and the level of students' involvement in real science, but the theoretical minimum that underlies is approximately the same everywhere. This happens not so much as a result of unification, but for objective reasons: the laws of nature are invariant in all countries. Therefore, a specialist from one country can work all over the world.

Who are the programmers


To illustrate the importance of the problem, I turn to the analogy. Imagine that you asked what profession a certain person had and you were told that he was a builder. Without any other information, can you say what he does? He can be an architect with an art education, an engineer, a foreman, a skilled worker, or a construction waste cleaner. Not to mention that many of these areas have their own specializations. Still, he would have been called a builder, but, obviously, these are different builders. To put together a doghouse, you don't need a special education, but you can't build a skyscraper without it. However, those who deal with the first, usually the builders do not consider. Programmers now call anyone. Mathematician involved in algorithms; navigation software developer at NASA; an assembler expert who studies viruses; student, make-up HTML page - all these are programmers. So before you answer the question: does a programmer need education, you should clarify - which one. Perhaps in your particular case, education is really not needed.

Whether we like it or not, the Strugatsky’s dreams about the world of junior research workers have collapsed. Most people are not going to be scientists or engineers, and they need not university, but specialized secondary education, which is taught in an educational institution, now called college in the European manner. Because, as a rule, their desires and needs do not correspond to the goals of universities, and the level of the work they offer has little to do with science or engineering. There is nothing terrible in this, because at all times in any field of engineers there have always been less than workers. And in the working profession itself, if you like it, there is nothing humiliating, but you don’t need to call yourself an engineer. Instead, you need to honestly admit to yourself who you want to become and not require universities to be what they are not.

Measure seven times


Each specialty has its own minimum set of required knowledge. In computer science and programming math courses are such a basis; so the question: “Does a programmer need education?” usually turns into “does a programmer need mathematics?” or “does a programmer need so much mathematics?” Given that a programmer in the classical sense is an engineer, the question can be formulated differently: “ Does an engineer need education? ”There is usually no dispute about this. The only problem is: not everyone wants to be scientists and engineers. If the limit of your dreams is a successful game in the App Store, and not the design of artificial intelligence, a cryptographic algorithm, or three-dimensional animation programs, you can safely bypass the university to begin its implementation, but in this case knowledge will not spoil your career. The universities do not know who you see yourself after many years and what you plan to do - not to mention that you yourself may not know this at the age of seventeen. It is believed that it is better to teach you all the basics in advance than to miss something important. In addition, core courses are usually interdependent and one cannot simply take and withdraw some of them. And their main goal is not to teach you everything in the world, which is impossible in principle, but to provide you with an approximate map of modern scientific and engineering knowledge so that when confronted with the unknown, you can make the right decision in which direction to go.

Let's go back to the math. Almost all books on algorithms require a certain mathematical culture from the reader. And the algorithms and data structures - as Nicklaus Wirth said - are programs, and without knowing how to work with them, you cannot be called a programmer. Moreover, it is not necessary to develop their own algorithms, it is much more often necessary to change others, adapting them to particular cases, but also the ability to prove their correctness and applicability in various conditions, and the ability to analyze their behavior in some situations. Mathematics is actively used in such areas as cryptography, graphics, pattern recognition, work with video, sound and images, mathematical modeling of real processes. In such seemingly down-to-earth system programming, without serious mathematical knowledge, it is impossible to write compilers, schedulers and file systems.

Mathematics is the framework on which all other knowledge is strung. Alas, many begin to master the profession from the end. A programmer who has studied programming languages, development tools, various technologies and patterns, but has not mastered the mathematical foundations, resembles an artist who has learned to perfectly understand paints and brushes, has mastered many techniques, but does not know composition, perspective, anatomy, and other fundamentals. He may have many brilliant thoughts, but he will not be able to express them, and all that remains for him to count is the work of an assistant or coloring other people's pictures. Occasionally, ignorance of the basics creates new styles, as, for example, in the case of Van Gogh (to his credit it must be said that he was aware of his problems and took painting lessons from professionals), but more often he becomes an obstacle in his work. And if in art this can still be justified by the fact that the author sees it , then in industry the wrong algorithm for generating random numbers, which led to the fact that millions of dollars of honest taxpayers missed the target, is not justified by anything.

At the same time, we must not forget that for most programmers, mathematics is more a tool than a science, and this is the way to teach it, especially the first courses, each time explaining to the students why they need it.

As for the humanitarian and other non-core courses, their importance is emphasized not only by the fact that it is desirable for any person to be cultured and educated, but also by the fact that the human mind is extremely unpredictable and sometimes draws inspiration from various sources. My Russian language teacher told me a story from the Soviet era, when they decided to save money in one aviation university and stopped reading literature courses. And what would you think? Soon the level of engineers released decreased. Literature had to be returned. So these courses are needed. Unfortunately, they are often terribly taught, which does not add to their popularity; but we're talking about the idea itself, right?

So if you do not use the knowledge gained at the university, then the problems are most likely not in them, but in your work, which does not allow you to materialize. It is foolish to blame your college for wrong knowledge if a person learned to design encryption algorithms, and works as a manager in a construction company.

Why do we need universities?


Well, you say, but how is regular education better than self-education? In the end, programming is not genetic engineering - laboratories are not needed, and you can learn the whole theory yourself. In fact: university curricula are well-known, many courses are open, any book can be bought, taken at the library or read on the web. However, not everything is as simple as it seems. Mathematics, unlike technology and programming languages, is very difficult to learn. You may not know that you are doing something wrong until you are told about it. Personal communication is also of great importance, for example, you can listen to a lecture for several hours and do not understand anything, and during a break, ask the teacher all the answers. Some programmers still need laboratories and conditions, for example, those who want to program microprocessors with unique architecture, supercomputers, industrial robots or satellites.

Studying at a university is also an opportunity to do internships in companies and organizations that you would otherwise not have been allowed to enter. This is an opportunity to do science, write articles and participate in conferences, which is a condition of work in the research laboratories of many companies, for example, Samsung. Almost all serious technologies were developed at universities, and some, in particular, the famous LLVM, generally grew out of student projects. Well-known companies were founded by scientists and graduates within the walls of universities: Silicon Graphics, Sun Microsystems, Yahoo, Adobe, and many others.

Last but not least without a formal education, moreover, with a profile one, you will close the doors of many organizations, in others you will have to prove your professionalism every time and be much better than the competitors, since all other things being equal, there will be an advantage behind them. Also, without it, it is almost impossible to get a work visa to decent countries.

By the way, the requirement of "some" education without specifying a profile is in many respects a Russian invention, since in all English-speaking vacancies I have reviewed, they always indicate the desired degree, direction or experience equated to them.

When knocking the bottom


The problem is global in nature, but it is most acute in programming. And that's why. The reduction of the entrance threshold has played a cruel joke with the profession. Initially, all development tools were written by experienced programmers to simplify their lives. These technologies are beneficial only if you understand what processes are taking place in them. Thus, they allow you to write more programs in less time, but their quality depends solely on your knowledge and skills, since development tools are not yet able to think and make conscious decisions for you. Then someone decided that simplification of programming would attract more specialists to the profession, many even dreamed of a time when all people, regardless of their abilities, could write programs. Fear your desires. Alas, now they have become a reality in many ways, and not at all in the way that was supposed to be in the seventies. The proliferation of low-cost hardware and the ease of development have led to the flow of low-skilled programmers to the market. A proposal, as it turned out in the last century, Cyril Norktot Parkinson, creates demand. But it is not enough to write a program, it still needs to be distributed. The emergence of many online stores of programs just provided this opportunity for everyone. Google, Apple, Microsoft and other companies that have opened them are primarily interested in as many programs as possible for their platforms, and they also release development tools for them. In such conditions, the tools have become even simpler, which ultimately led to a further reduction in the initial level of programmers.

The result of all this was the illusion of ease of programming, attitude towards him as something frivolous, not requiring special knowledge and education, and this opinion was formed not only from the employees themselves, but also, much worse, from inexperienced customers and employers. Many have seen ads with an impressive list of necessary skills, languages, libraries and technologies, numerous responsibilities - except for courier services - which would be more than enough for several vacancies, and a modest, if not ridiculous, salary.

It is difficult to imagine in such industries as, for example, aircraft, because wherever human lives are at the price, people choose their personnel very carefully and use numerous filters to weed out incompetent engineers. Nobody needs the millions of insurance payments, deprivation of licenses and loss of reputation. So, the aircraft designer can be either good or no, because no one will let the bad one to the plane, no matter how low the salary he asks. Quite differently in programming, in which there is no lower limit, and any programmer, no matter how low a level he is, will not remain without work. The fact that our civilization is still alive, says only that most of the work they do is not critical, and not that nobody needs it, but it could easily be done without it, and problems in it do not lead to a catastrophe. Imagine that all the computer games in the world suddenly stopped working, is this a disaster? Of course no. Of course, this is a global problem, but certainly not a disaster. And if the same fate befall airliners, the results will be tragic. Of course, in programming there is a serious and responsible work associated with a serious dropout associated with risk, but it is much less.

Warranties and real life


Of course, this does not mean that the very presence of education or knowledge of mathematics will turn everyone into a world-level programmer. Everyone knows that most college graduates do not work in their own direction. And I personally know a lot of mathematicians writing terrible programs. In the end, you may not have programming skills. I am generally against the use of simplified criteria. Everything in life is important: education, knowledge, assessments, scientific work, practice, and your desire.

Many perceive the words about the social elevator too simplistic, but in reality the university is rather a social ladder, and in order to arrive at what you want, you have to go yourself. Education does not guarantee you a good job if you yourself have not made an effort. And if you did not participate in any projects during your studies and started looking for work only after graduation, then you are not interested in programming.

How are they?


Bill Gates, Mark Zuckerberg, Larry Ellison. Reading the success stories of famous people, many weak minds think like this: “if they could, then I can”. Maybe. But keep in mind that success is a multifaceted concept: it’s one thing to become a successful marketer and a completely different thing to be an outstanding programmer. Nevertheless, it is not a secret that some world-famous programmers have no education, but, trying on their lives for themselves, remember that they are rare happy exceptions among many losers. If someone jumped out of the window and remained alive, this does not mean that you should not use the stairs. Similarly, it is not necessary (a very common mistake) to confuse paper with education: the fact that they did not finish their studies does not mean that they did not study at all. Almost all of them studied for several semesters, attended the first courses and gained some knowledge, and, for example, Steve Wozniak returned after many years and completed his studies. No less important are their intellectual abilities and character: as a rule, they are all bright, intelligent, talented and in some way brilliant personalities who know from the very beginning what they need, purposeful, who are engaged exclusively in what they like and have a phenomenal performance. They did not ask for the opinions of others and did not impose their own. And yet some of them, for example, John Carmack, regret that in their youth they considered themselves the most intelligent and did not learn anything.

If you are the same as them, I sincerely wish you success, otherwise isn’t it better to use proven paths?

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


All Articles