Чему нужно учить молодых программистов и зачем. | Participants
|
- Statistics
- Participants
- Translate into Russian
- Translation result
- Translated in draft, editing and proof-reading required.
If you do not want to register an account, you can sign in with OpenID.
What should we teach new software developers? Why? | ||
Fundamental changes to computer science education are required to better address the needs of industry. | Фундаментальные изменения в преподавании информатики необходимы для большего соответствия специалистов нуждам промышленности. | |
Computer science must be at the center of software systems development. If it is not, we must rely on individual experience and rules of thumb, ending up with less capable, less reliable systems, developed and maintained at unnecessarily high cost. We need changes in education to allow for improvements of industrial practice. | Не индивидуальный опыт и эмпирические правила, а информатика, как наука, должна быть отправной точкой при разработке программных комплексов. В противном случае на свет появляются низкопроизводительные и ненадёжные системы с непозволительно большой стоимостью разработки и сопровождения. Необходимы сдвиги в системе обучения, чтобы улучшения были видны на практике. | |
The Problem | ||
In many places, there is a disconnect between computer science education and what industry needs. Consider the following exchange: | Во многих местах существует разрыв между тем, что нужно промышленности и тем, чему учат программистов в университетах. Вот например: | |
Famous CS professor (proudly): "We don't teach programming; we teach computer science." | Знаменитый профессор информатики (гордо): «Мы не учим программированию, мы учим информатике.» | |
Industrial manager: "They can't program their way out of a paper bag." | Руководитель из промышленности: «Они же не могут запрограммировать самую элементарную вещь!» | |
In many cases, they are both right, and not just at a superficial level. It is not the job of academia just to teach run-of-the-mill programmers and the needs of industry are not just for "well-rounded high-level thinkers" and "scientists." | Во многих случаях правы оба, и не только на первый взгляд. Не университетское это дело выпускать среднестатистических программистов, но и промышленности нужны не только «высокоуровневые мыслители с широким кругозором» и «учёные». | |
Another CS professor: "I never code." | Другой профессор информатики: «Я никогда не программирую». | |
Another industrial manager: "We don't hire CS graduates; it's easier to teach a physicist to program than to teach a CS graduate physics." | Другой руководитель: «Мы не нанимаем выпускников кафедры информатики. Легче научить физика программировать, чем научить физике выпускников этой кафедры». | |
Both have a point, but in an ideal world, both would be fundamentally misguided. The professor is wrong in that you can't teach what you don't practice (and in many cases, never have practiced) and therefore don't understand, whereas the industrial manager is right only when the requirements for software quality are set so absurdly low that physicists (and others untrained in CS) can cope. Obviously, I'm not referring to physicists who have devoted significant effort to also master computer science—such combinations of skills are among my ideals. | Обе позиции в чём-то верны, но по хорошему оба принципиально неправы. Профессор неправ, потому что невозможно учить тому, что не практикуешь (а во многих случаях и не практиковал никогда), а следовательно не понимаешь. В то же время руководитель прав только в том случае, когда требования к качеству программного обеспечения настолько низки, что с ними справятся и физики, и другие не знающие информатику люди. Я, конечно же, не имею в виду тех физиков, которые тратят много сил на информатику — такой набор навыков был бы идеальным. | |
CS professor (about a student): "He accepted a job in industry." | Профессор информатики (о студенте): «Он получил работу в промышленности». | — "компьютерных наук" => "информатики" ? У нас всё таки нету такой "компьютерной науки" — dbarashev-matmex — В УрГУ, на мат-мехе есть направление "компьютерные науки" — dzlk |
Another CS professor: "Sad; he showed so much promise." | Другой профессор информатики: «Жаль, ведь он подавал большие надежды». | |
This disconnect is at the root of many problems and complicates attempts to remedy them. | Эта нестыковка лежит в основе многих проблем и осложняет попытки исправить их. | |
Industry wants computer science graduates to build software (at least initially in their careers). That software is often part of a long-lived code base and used for embedded or distributed systems with high reliability requirements. However, many graduates have essentially no education or training in software development outside their hobbyist activities. In particular, most see programming as a minimal effort to complete homework and rarely take a broader view that includes systematic testing, maintenance, documentation, and the use of their code by others. Also, many students fail to connect what they learn in one class to what they learn in another. Thus, we often see students with high grades in algorithms, data structures, and software engineering who nevertheless hack solutions in an operating systems class with total disregard for data structures, algorithms, and the structure of the software. The result is a poorly performing unmaintainable mess. | Промышленность хочет, чтобы выпускники кафедры информатики программировали (по крайней мере в начале карьеры). Часто им приходится работать с давно устоявшимися исходниками какой-нибудь распределённой или встроенной системы с высокими требованиями к надёжности. У многих выпускников, однако, практически нет знаний и навыков разработки ПО, за исключением каких-нибудь любительских развлечений. В частности, многие рассматривают программирование как выполнение домашнего задание с минимальными трудозатратами и редко задумываются о более глубоких вещах, таких как систематическое тестирование, поддержка, документация и использование написанного кода другими программистами. Многие также не в состоянии связать то, что они узнали на одной лекции с тем, что было рассказано на другой. В результате мы часто видим студентов с хорошими оценками по алгоритмам, структурам данных и технологии программирования, которые на занятиях по операционным системам пишут неадекватный код с абсолютным пренебрежением к всё тем же алгоритмам, структуре данных и кода. В результате мы получаем кашу, нежизнеспособную мешанину. |

— Необходимно подчеркнуть значение академического, начного подхода к информатике и программирванию. Кто сможет сделать это лучше? — creator
— Мне кажется что у вас очень здорово получилось! Спасибо :) — dbarashev-matmex