No, this topic is not a provocation and not an attempt to cut down comments, “plusins”, karma, or something else in the same vein. This is what is called, sad.
No, I do not have a higher IT education. What doesn’t bother me at all is to work in this industry and get as much, if not more, than my peers get when they wipe their pants in uni. And why? And because in such a rapidly changing industry something can be achieved only with constant self-education, the study of technology, and, importantly, the systematization of knowledge. What people with “crusts” often cannot understand, and as a result, working as a team, you can see a lot of such “bydlokod” that you just wonder.
Now in a heap of universities, ranging from specialized technical and ending with economic and natural science, there are specialties such as "applied informatics in the field ...". At one of these, I even honestly tried to study for a year and a half - after which, due to health problems and the severity of the combination of study and work, I scored. What I do not regret. For how are we now taught these, if I may say so, “specialists”?
At first, a couple of years are brutally loaded with all possible mathematics (at the same time, even if they touch things like approximation of functions, they will not say in life how it is used in real programming of the same graphic). In parallel with this, first, the simplest algorithms on BASIC-Pascals are coded, then they learn to throw buttons on the form in Delphi (which is interesting - I had a chance to live in the United States for a year and resemble the local computer science, and so there is NO ONE writing like that and not going there). For another year, the theory of databases is being clouded, they will learn to write out simple programs for managing a warehouse, for example, at the same Delphi, and also, oh, what an exclusive! - learn a couple of HTML tags as a bonus. And then all the crap from that very area, in relation to which computer science is applied, will go. That's all. Where is the systematization and clear knowledge in the head? And nowhere.
')
Yes, I know a couple of counter-examples of high schools, when the same web programming with all the relying specifications, and the latest developments, and much more, really understands. But this is all the exception rather than the rule. Most of the educational programs that I have ever seen are built approximately as I described above.
And I, frankly, do not understand - what kind of idiot in general decided that mathematics should act as the theoretical basis for programmers in their most difficult areas to understand? Discrete mathematics and basic logic - yes, IMHO is definitely needed. Linear algebra, operations on matrices are similar. But everything else IMHO - only after a narrower specialization, when 3dshniki separated from database programmers, and so on. The same 3d-people just need to understand the approximation of functions and all sorts of stereometrics, and they won’t go anywhere, yes. But this is clearly not at the initial stage, so that there is no clogging of the head to the detriment of the really basic things like the same discrete mathematics.
What else would I put in the obligatory theoretical basis? Theory of languages, algorithms and programming paradigms. But shame is a shame, university graduates do not know how the functional approach differs from the object-oriented one, and how the prefix form of recording functions and arguments in some Lisp differs from the infix one accepted in most imperative languages. About the fact that languages can differ not only in syntax, but also in semantics, most are also not up to date (and therefore are extremely poorly adapted to the choice of technology for a specific task). Well, syntax formalization using Backus-Naur formulas is a useful thing. As students, for whom this is an empty sound, then they will be able to write at least a banal parser of something - I can’t imagine.
I also do not understand the desire of teachers to somehow make students write the texts of programs and (oh, horror!) Draw flowcharts without fail on paper. I remember how one Madame, who couldn’t be allowed into the kindergarten, gave the students a tantrum about the fact that they simply printed a pile of tasks pascal-free on Pascal. “No, everything is in a notebook, and so that each task has a flowchart!” Damn. If this is such a protection from cheating - then the one who needs it, calmly write off and by hand. This is how life gets complicated for the most advanced students, who have already learned to THINK logical categories, immediately convert their thoughts into code, and who no longer need crutches in the form of primitive flowcharts.
In general, with regards to these very schemes - I think that very primitive things should be given at school. Together with BASIC-Pascals at the primary level, by the way. And all kinds of Vords-Excel and other office haze, if there are computers in almost every family, the students themselves will master well when they need to print a paper or something large-scale to calculate. In HIGHER EDUCATION INSTITUTIONS, the same schematic modeling should be given at a normal level, that is, UML and all that, just the OOP will be easier to understand, and the business logic of applications will be systematized.
Actually, here. I have roughly described to you how I see the first couple of years of normal programming training. And then, only then, and not earlier - already specific languages, IDE and real-life tasks. With all the resulting specialization, additional mathematical foundation, and the like. It is then with a high probability that not a “Hindu” will grow, but a normal developer, able to write quality code to the last line.
Another thing is that I am still a realist, yes - and I understand that neither the gray-haired professors of the “old school”, nor the young academic shoots, as a rule, greedy for bribes, will not do this. If only because it is necessary to have a system of knowledge in your head. Someone should start ... but who? That is why people like me and it remains for the time being just to dream ... along the way sending to far away insoles who are trying to get their hands on in the absence of real knowledge in their heads. What do you think, habradams and habrahpod? How do you see the perfect computer education?
PS I will never forget Galina Petrovna, my school teacher in computer science, and I am very grateful to her that she didn’t discourage the children in any way for such self-development (unlike many of her colleagues who are scolding pupils for trying to do something to his) While the best students of my classmates wrote physics tests in Pascal as a final exam, I designed the same thing in the form of an interactive non-Perl web page. Do you think she looked at the sources, even though I understood a line in them (especially considering that it was still Perl, but I learned about the concept of “coding culture” later)? No, of course. But, to her credit, she did not scold me, force me to draw flowcharts, and so on. Works? Yeah. Five, the next :) Everyone would do that!
PPS Here in the comments in the intervals between savory clarification of the steepness of various types of education, a rather sensible suggestion was received - to make for an IT person something like Diabol's “technology tree”. That is, the manual on what, how and after what to study. Take it? I will even make the starting sentence - start with discrete mathematics :) We continue!