Increasingly heard arguments about whether higher education programmer, and given that the flow of opinions on this undoubtedly urgent topic has not dried up, I decided to express their thoughts. As I see it, the universal disappointment in learning associated with numerous processes and changes in the profession and in need of serious study. Below I will discuss the most common misconceptions and myths of the main causes of the phenomenon.
There you have gone? H4> Once again I remind University - not PTU, it explores the device nails, and teach them not to score. Universities graduate scientists and engineers, not the wait staff. Also do not forget that the programmers in our country released mathematics departments, and officially they are mathematicians, although in recent years and have appeared programmer direction with orietatsiey on industrial programming.
The university teaches primarily fundamental knowledge, those who do not become obsolete in a few years to your release. American biologist from the National Institutes of Health wrote to me: «Times change but fundamentals do not change» - times change, and the foundations remain. It is therefore better to choose the general direction of learning and try to take the maximum number of elective courses, which is why in American universities physicists as, in the opinion of many, "unnecessary" courses such as biology, chemistry or literature rather specialized. Carl Sagan, who studied at the astronomer, mentions in his book that they were working on the genetics laboratory experiments and to test the hypothesis of abiogenesis. Not to mention the fact that the United States can be apart from the main (major) to get a few (minor) specialties. So the choice of the theory of evolution, and programming Java - select the best first, maybe someday this knowledge will be useful in your career or life. Language you can still learn a special interest in the history of our planet is unlikely to become. After narrowing their horizons is always easier than to expand it.
It should not be assumed that in foreign universities the situation is fundamentally different. As a result of many years of parallel evolution in the world have developed similar requirements to specialists. You are absolutely right that you will learn way i>, but wrong in the fact that you will learn other i>. In the universities of different countries differ educational processes, the names and the amount of courses, the quality of practice and the level of involvement of students in real science, but in theory at least, the underlying, roughly similar everywhere. This occurs not only as a result of unification, many objective reasons: the laws of nature are invariant in all countries. Therefore, the specialist from one country may not work in the world.
Who are the programmers h4> To illustrate the importance of the issue, I turn to the analogy. Imagine that you are asked which profession have certain rights, and you replied that he is a builder. Lacking any other information, if you can tell what he was doing? It can be an architect with art education, engineer, foreman, skilled worker or a janitor debris. Not to mention that in many ways these have their own specialization. And still it would call a builder, but obviously it's different builders. To put together a doghouse, do not need special education, but the skyscraper without him erect. However, those involved in the first builders usually do not consider. A programmer is now called anyone. Mathematics, dealing with algorithms; navigation software developer at NASA; expert in assembly language, studying viruses; schoolboy typeset HTML pages - all programmers. So before you answer the question of whether the programmer education, you should clarify - what exactly. Perhaps, in your particular case, education is really not necessary.
Like it or not, but dreams of a world Strugatskih research assistants collapsed. Most people are not going to be scientists or engineers, and they need not university and secondary special education, which is taught in educational institutions, now called the European style college. Because, as a rule, their wants and needs are not consistent with the objectives of universities, and the level of its proposed work has little to do with science or engineering techniques. There is nothing terrible, since at all times in any field engineers have always been less than the workers. And in most of the working profession, if you like it, there is nothing humiliating, but do not call yourself an engineer. Instead, you need to honestly admit to yourself what you want to be and not to require universities to be what they are not.
Seven times measure h4>
Every profession has its own set of mandatory minimum knowledge. In computer science and programming of such bases are mathematical courses; so the question is: "Do you need a programmer education?" usually turns into "Do programmer mathematician?" or "Do you need a programmer so much math?" Given that the programmer in the classical sense - is an engineer, the question can be formulated differently: " whether you need an engineer? 'dispute on this score does not normally arise. The problem is it that is this: do not all want to be scientists and engineers. If the limit of your dreams - a successful game in the App Store, not the design of artificial intelligence, cryptographic algorithm, or a three-dimensional animation software, you can safely bypass college to begin its implementation, but in this case, knowledge can not spoil your career. In the universities do not know who you see yourself in many years and the plan to do - not to mention the fact that you are seventeen can still do not know. It is believed that better to teach you all the basics, than to miss something important. In addition, the main courses are usually interdependent and can not just pick up and remove some of them. And their main goal - not teach you everything in the world that is basically impossible, but to give you a rough map of the modern scientific and engineering knowledge that, when confronted with the unknown, you were able to make the right decision in which direction to go.
Let us return to mathematics. Almost all the books on algorithms require the reader to some of the mathematical culture. A Algorithms and Data Structures - Niklaus Wirth as said - are the programs, and not being able to work with them, can not be called by the programmer. And this is not necessarily the ability to design their algorithms, much more need to change other people, adapting them to particular cases, but also the ability to prove their correctness and applicability in different contexts, and the ability to analyze their behavior in some situations. Mathematics is actively used areas such as cryptography, graphics, pattern recognition, working with video, sound and image, mathematical modeling of real processes. This seemingly mundane system programming without serious mathematical knowledge can not be writing compilers, schedulers and file systems.
Mathematics is the frame on which are strung all other knowledge. Alas, many are beginning to master the profession at the end. Programmer, learn a programming language, development tools, various technologies and patterns, but have not mastered the basics of math, reminiscent of the artist, to learn to perfectly understand the paints and brushes, learn many tricks, but it does not know the composition, perspective, anatomy, and other basics. It can be a lot of brilliant ideas, but express them he can not, and all that he remains on the count - is the work of an assistant or alien coloring pictures. Occasionally Ignorance creates new styles, such as in the case of Van Gogh (to his credit it must be said that he was aware of their problems and took painting lessons from professionals), but often becomes an obstacle to creativity. And if art is still possible to justify the fact that the author of so see i>, then the industry incorrect algorithm for generating random numbers, which led to the fact that millions of honest taxpayers missed wide of the goal, is not justified by anything.
We should not forget that for the majority of programmers mathematics is rather a tool than a science, and it should be taught that way, especially the first course, whenever explain to students why they need it.
As for humanitarian and other non-core courses, their importance is emphasized not only by the fact that any person is desirable to be cultured and educated, but also by the fact that the human mind is extremely unpredictable and often draws inspiration from many different sources. My Russian teacher told me a story yet the Soviet era, as one aviation university decided to save money and stopped reading literature courses. And what do you think? Shortly level engineers produced decreased. Literature had to return. So what courses they need. Unfortunately, they are often badly taught that does not add to their popularity; But we are talking about the idea, right?
So if you do not use the knowledge gained in high school, then the problem probably is not in them, and in your work, which does not allow you to implement. It is foolish to blame their institution in the wrong knowledge, if people learned to design encryption algorithms, and works as a manager for a construction company.
Why universities? H4> Well, you say, but better than the regular formation of self? After all programming is not genetic engineering - laboratories are not needed, and the whole theory can learn yourself. In fact, the curricula of universities are known, many courses are open, you can buy any book from the library or read on the web. However, not everything is as simple as it seems. Mathematics, unlike technologies and programming languages to explore very difficult. You may not know what you are doing something wrong, yet you will not tell about it. Paramount importance and personal communication, for example, can be a few hours listening to the lecture and did not understand, and in a break from a teacher to learn the answers to all the questions. Some programmers still need laboratory conditions and, for example, those who want to program microprocessors with unique architecture, supercomputers, industrial robots or satellites.
Studying at university - it is also an opportunity to do an internship in companies and organizations in which you would otherwise not allowed. 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. Virtually all serious technology developed at universities and some, in particular, the famous LLVM, generally rose from student projects. Well-known companies were founded by scientists and graduates of universities in the walls: Silicon Graphics, Sun Microsystems, Yahoo, Adobe and many others.
Last but not least, without formal education, with a profile, you will close the doors of many organizations, in others you could pick any time to prove their professionalism and be much better than the competition, since other things being equal, would be an advantage for them. Also without it practically impossible to get a work visa in a decent country.
Incidentally, the requirement of "some" of education without profile - largely Russian invention, as viewed by me in all English-speaking vacancies always indicate the desired degree, direction or comparable experience.
When knocking the bottom h4> The problem is global, but it is most acute in programming. And here's why. Reduced input threshold has played a cruel joke with the profession. Initially, all the development tools were written by experienced programmers to simplify your life. These techniques are useful only if you understand what processes occur in them. Thus they allow you to write more programs in less time, but their quality depends solely on your knowledge and skills, so as to develop more tools are not able to think and make informed decisions for you. Then someone decided that simplifying the programming will attract more professionals in the profession, many even dreamed of a time when all people, regardless of their abilities will be able to write programs. Afraid of their desires. Alas, they are now largely become a reality, and not as expected in the seventies. The spread of cheap technology and the ease of development have led to the fact that the market flooded with low-skilled programmers. A proposal, as found in the last century Norktot Cyril Parkinson, creates demand. But there is little to write a program, it still needs to spread. The emergence of numerous online stores programs provided just such an opportunity for everyone. Open their Google, Apple, Microsoft and other companies are interested primarily in the greatest possible number of programs for their platforms, and they produce the same development tools for them. In such conditions, even more simplified tools that ultimately led to further reduce the entry-level programmers.
The result of all this was an illusion of ease of programming, the attitude to it as to something not serious, do not require special knowledge and education, with such an opinion has been formed not only from the workers themselves, but also a lot worse, inexperienced customers and employers. Many have seen the ad with an impressive list of skills, languages, libraries and technologies, many responsibilities - except perhaps that courier services - which is more than enough for a few jobs, and modest, if not ridiculous salary.
It is difficult to imagine in such industries such as aeronautics, as where the price of human lives are very careful in the selection of staff and the use of multiple filters to weed out incompetent engineers. Nobody need millions of insurance payments, loss of license and loss of reputation. Thus, the aircraft can be either good or no, because no one will let the bad to the aircraft, which would lower wages, he did not ask. Quite different in programming, in which there is no lower limit, and every programmer, no matter what the low level it was not, will be left without work. The fact that our civilization is still alive, says only that much of the work they do is not critical, and not that nobody needs, but without it, it was easy to do, and the problems it does not lead to disaster. Imagine all the computer games in the world suddenly stopped their work, whether it is a disaster? Of course, no. Certainly, it is a global problem, but certainly not a disaster. And if the same fate befall airliners, the results are tragic. Certainly, and in programming have associated with the risk of serious and responsible work with hard dropouts, but it is much smaller.
Guarantees and real life h4>
Of course, this does not mean that the very existence of education or knowledge of mathematics will turn any programmer in the world level. Everyone knows that the majority of college graduates are not working in their field. And I personally know quite a few mathematicians who write horrible program. In the end, you may not be able to programming. I am generally against the use of simplified criteria. In life, everything is important, and education, and knowledge, and evaluation and research, and practice, and your desire.
Many perceive the words of the social elevator is too simplistic, in reality, the university is rather the social ladder, and to arrive at a desired, you need to go by. Education does not guarantee you a good job, if you do not make the effort. And if you during study were not involved in any projects and started looking for a job only after the release, so the programming you're not interested.
How are they? H4> Bill Gates, Mark Zuckerberg, Larry Ellison. Reading the success stories of famous people, many immature minds think like this: "If they could, and then I can." Maybe. But keep in mind that success - the concept of a multi-faceted one thing to be a successful marketer, and quite another - an outstanding programmer. Nevertheless, it is no secret that some of the world famous programmers do not have the education, but the example of their lives themselves, remember that they are a rare happy exceptions among the many losers. If someone jumped out of a window and survived, it does not mean that you should not use the stairs. Similarly, do not need (very common mistake) confused with the formation of the paper: the fact that they have not completed the training, does not mean that they do not learn. Almost all of them have studied several semesters attended the first course and got some knowledge, such as Steve Wozniak many years later still came back and finished his studies.