Comrades engineers, the fourth year has gone, as I undertook to teach at the Kiev Polytechnic Institute . During this time, I have accumulated a huge number of code examples and materials for about 90 lectures . I must say that for the entire period of my professional activity (and this is 24 years of almost daily writing of code), I have never raised my level of programming, as in recent years, working with students. If earlier it seemed to me that writing briefly, difficult and impressive is the height of skill, but now I realized that students should understand my code after minimal explanations, otherwise it will not work. I came to the conclusion that this ability can and should be extended not only to the training code, but also to the entire working code. Moreover, the training code should not differ significantly from the working code, because we teach future engineers to make real systems, not training ones. And after numerous requests, I decided to record all the lectures in the form of screencasts, which immediately after the end of the lecture are sent to YouTube. During this academic year I plan to record 100 lectures, of which 23 have already been published , materials are ready for another 67 lectures and new 10 lectures still in preparation.
You all know that we in the industry have significant problems with fundamental engineering education:
Building a course based on JavaScript is certainly an experimental idea, but this language certainly will not be superfluous for anyone in modern IT. JavaScript developers themselves often experience poor basic engineering background and lack of fundamental knowledge of data structures, algorithms, basic abstractions, patterns, architecture, paradigms, and programming techniques. Most of the code that is being written now in the industry is simply thrown out shortly after creation, then rewritten again and again thrown away. In general, quality and knowledge are rarely required, except in interviews. It is most advantageous to make poor-quality code and maintain it, or throw out the code and sell more time to re-write it. In addition, our industry is completely divorced from science, there are significant merits of marketers in this field, because we are already programming not in programming languages and not on abstractions, but we are programming in frameworks and libraries that we have "vtyuhali" in a beautiful wrapper. We collect everything from cubes, often without any scientific understanding and we can rarely answer the question why we are doing this and not otherwise. Everything is in parts already written a long time ago, everything can be found on the Internet, but it turned out that it is not molded with one another, that is, it is in parts, but it does not work together. It is much more difficult to connect fragmented pieces of code than to make them one by one. This happens precisely because of the lack of a systematic approach, a terminological split and conceptual dissynchronization of specialists. Only what is ideologically compatible will work together, which is based on a general theory and general standards derived from this theory. I hope that with this course I will take at least a small step towards achieving such an important industry consensus.
All course materials are freely available on github , and lectures are open, you can attend them for free. Every week I record 4 lectures. We conduct more seminars and workshops, but they are not recorded.
The lecture calendar is available in two mita groups: HowProgrammingWorks (these are programming JavaScript lectures) and NodeUA (these are Node.js lectures), and I urge everyone who wants to attend lectures in person to register. Admission is free for everyone, but it is organizationally easier to estimate the number of participants. In the entire history I have had cases and 600 people and 2 people, and the attendance is unpredictable.
All recorded videos appear on the same day (10-20 minutes after the end of the lecture) on the youtube channel .
Lectures are grouped into two playlists: by programming and JavaScript and by Node.js.
I place links to lectures and materials in two telegram channels: on programming and JavaScript, and on Node.js and other more complex topics .
There are two telegram groups for discussion and questions: on programming and JavaScript and on Node.js.
My account on github , training repositories in the organization HowProgrammingWorks and our community library.
I look forward to proposals on the addition of new topics to the course, I hope for the inclusion in code samples, including the translation of examples into other languages. Your feedback will help improve the course.
Source: https://habr.com/ru/post/427799/
All Articles