Die meisten modernen Programmierer haben eine Hochschulausbildung. Mit der Zeit wird sich das Ă€ndern, aber derzeit kommen gute Talente in IT-Unternehmen dennoch aus den UniversitĂ€ten. In diesem Beitrag spricht Stanislav Protasov, Direktor fĂŒr Hochschulbeziehungen bei Acronis, ĂŒber seine Sicht auf die Besonderheiten der universitĂ€ren Ausbildung zukĂŒnftiger Programmierer. Dozenten, Studenten und die, die sie einstellen, können sogar einige hilfreiche Tipps im Text unter dem Reiter finden.
In den letzten 10 Jahren habe ich Mathematik, Algorithmen, Programmiersprachen und maschinelles Lernen an verschiedenen Hochschulen unterrichtet. Heute bin ich neben meiner Position bei Acronis auch stellvertretender Leiter des Lehrstuhls fĂŒr theoretische und angewandte Informatik an der MFTI. Aus meiner Erfahrung in guten russischen (und nicht nur) UniversitĂ€ten habe ich einige Beobachtungen zur Ausbildung von Studenten in Informatik-Disziplinen gewonnen.
Die 30-Sekunden-Regel funktioniert nicht mehr.
Ich bin mir sicher, dass Sie schon einmal von der 30-Sekunden-Regel gehört haben, die besagt, dass ein Programmierer den Zweck einer Funktion nach einem flĂŒchtigen Blick auf ihren Code verstehen sollte. Diese Regel existiert seit langem, und seitdem sind zahlreiche Betriebssysteme, Programmiersprachen, Hardware und Algorithmen entstanden. Ich programmiere seit 12 Jahren, aber vor relativ kurzer Zeit sah ich den Quellcode eines Produkts, der mir auf den ersten Blick wie magische Formeln vorkam. Heute, wenn Sie nicht in das Fachgebiet eingetaucht sind, funktioniert die 30-Sekunden-Regel nicht mehr. In diesem Fall reicht es nicht nur nicht fĂŒr 30 Sekunden, sondern selbst fĂŒr 300 Sekunden, um herauszufinden, worum es geht.
Wenn Sie beispielsweise Treiber schreiben möchten, mĂŒssen Sie in dieses Gebiet eintauchen und tausende von spezifischen Codezeilen lesen. Mit einem solchen Ansatz fĂŒr das Lernen entwickelt der Fachmann ein "Flow-GefĂŒhl". Ăhnlich wie im Rap, wo das GefĂŒhl fĂŒr einen guten Reim und den richtigen Rhythmus ohne spezielle Rationalisierung aufkommt. Ein gut vorbereiteter Programmierer kann ebenfalls leicht ineffizienten oder einfach schlechten Code erkennen, ohne sich detailliert mit den Ănderungen im Stil oder den nicht optimalen AnsĂ€tzen zu befassen (aber es kann sehr schwierig sein, dieses GefĂŒhl zu erklĂ€ren).
Die Spezialisierung und die zunehmende KomplexitĂ€t fĂŒhren dazu, dass ein Bachelor-Abschluss nicht mehr ausreicht, um alle Bereiche ausreichend tief zu studieren. Aber gerade auf diesem Bildungsniveau sollte man einen breiten Horizont entwickeln. SpĂ€ter, im Masterstudium oder im Beruf, wird es notwendig sein, etwas Zeit mit der Einarbeitung in die Problematik und die spezifischen Themenbereichen zu verbringen, die Fachsprache, Programmiersprachen und den Code der Kollegen zu studieren sowie Artikel und BĂŒcher zu lesen. Ich denke, nur so kann man durch die UniversitĂ€t eine "Stange" fĂŒr die Zukunft aufbauen. .
Welches Programmiersprache sollte an der UniversitÀt unterrichtet werden?

Zu meiner Freude haben UniversitĂ€tsdozenten bereits aufgehört, nach der richtigen Antwort auf die Frage zu suchen: "Worauf sollte man am besten programmieren?" Die Streitigkeiten, ob C# oder Java, Delphi oder C++ besser sind, sind faktisch abgeklungen. Das Auftreten vieler neuer Programmiersprachen und die Ansammlung pĂ€dagogischer Erfahrungen haben dazu gefĂŒhrt, dass in der akademischen Gemeinschaft die Auffassung etabliert wurde: Jede Sprache hat ihre eigene Nische.
Das Problem des Lehrens mit einer bestimmten Programmiersprache hat an vordringlicher Bedeutung verloren. Es spielt keine Rolle, in welcher Sprache der Kurs gehalten wird. Das Wichtigste ist die ausreichende Ausdruckskraft der Sprache. Das Buch ââ ist ein gutes Beispiel fĂŒr diese Beobachtung. In dieser bereits klassisch gewordenen Publikation sind alle Beispiele in Java â einer Sprache ohne Zeiger, aber mit Garbage Collector â verfasst. Kaum jemand wird bestreiten, dass Java weit von einer optimalen Wahl fĂŒr das Schreiben von hochleistungsfĂ€higem Parallelen Code entfernt ist. Aber um die Konzepte zu erklĂ€ren, die im Buch behandelt werden, erwies sich die Sprache als geeignet. Ein weiteres Beispiel â Andrew Ng, unterrichtet in Matlab mit der Umgebung Octave. Heutzutage könnte man eine andere Programmiersprache wĂ€hlen, aber was spielt das fĂŒr eine Rolle, solange die Ideen und AnsĂ€tze wichtig sind?
Pragmatischer und nÀher an der RealitÀt
In den letzten Jahren hat sich die Zahl der Praktiker an UniversitĂ€ten deutlich erhöht. WĂ€hrend die Programme russischer Hochschulen frĂŒher oft dafĂŒr kritisiert wurden, dass sie von der RealitĂ€t abgekoppelt sind, lĂ€sst sich dies ĂŒber die IT-Ausbildung heute nicht mehr sagen. Vor 10 Jahren gab es an den UniversitĂ€ten kaum Dozenten mit realer Berufserfahrung in der Branche. Mittlerweile werden die Kurse an den Fachbereichen immer öfter von praktizierenden IT-Spezialisten geleitet, die nur 1-2 Kurse in ihrer Freizeit unterrichten. Dieser Ansatz hat sich als effektiv erwiesen, sowohl in Bezug auf die qualitativ hochwertige Ausbildung von FachkrĂ€ften als auch auf die Aktualisierung der LehrplĂ€ne und natĂŒrlich auf die Rekrutierung potenzieller Mitarbeiter fĂŒr Unternehmen. Ich denke nicht, dass ich ein Geheimnis lĂŒfte, wenn ich sage, dass wir die Basiskabine an der MFTI unterstĂŒtzen und Beziehungen zu anderen Hochschulen aufbauen, um Studenten auszubilden, die ihre Karriere bei Acronis starten könnten.
Mathematiker oder Programmierer?

Die frĂŒheren Kontroversen ĂŒber Programmiersprachen haben sich in philosophische Diskussionen gewandelt. Nun streiten sogenannte "Programmierer" und "Mathematiker" miteinander. GrundsĂ€tzlich könnten diese Schulen in zwei Bildungsprogramme unterteilt werden, doch die Branche trennt solche Feinheiten noch nicht gut voneinander. Von Hochschule zu Hochschule gibt es daher eine Ă€hnliche Ausbildung mit leicht unterschiedlichen Schwerpunkten. Das bedeutet, dass sowohl der Student als auch das Unternehmen, bei dem er spĂ€ter arbeiten wird, die fehlenden PuzzlestĂŒcke in ihrem Wissen ergĂ€nzen mĂŒssen.
Das Auftauchen von Praktikern, die in UniversitÀten industriellen Code in verschiedenen Sprachen schreiben, ermöglicht es den Studierenden, qualitativ hochwertigere EntwicklungsfÀhigkeiten zu erwerben. Da sie gut mit Implementierungen standardisierter Bibliotheken, Frameworks und ProgrammieransÀtzen vertraut sind, fördern die praktizierenden Programmierer bei den Studierenden den Ehrgeiz, guten Code zu schreiben und dies schnell und effizient zu tun.
Dieser nĂŒtzliche Skill fĂŒhrt jedoch manchmal dazu, dass Studenten anfangen, das Rad neu zu erfinden. Studierende und Programmierer denken sich: "Was hindert mich daran, noch 200 Zeilen guten Codes zu schreiben, die das gestellte Problem direkt lösen?".
Lehrer mit einem klassischen mathematischen Background (zum Beispiel Mathematik oder angewandte Mathematik) arbeiten oft in wissenschaftlichen Umfeldern oder in der Datenmodellierung und -analyse. "Mathematiker" betrachten Probleme im Bereich der Informatik anders. Sie beschÀftigen sich zunÀchst nicht mit Code, sondern mit Algorithmen, Theoremen und formalen Modellen. Ein wichtiger Vorteil des mathematischen Ansatzes ist das klare, grundlegende VerstÀndnis dessen, was lösbar ist und was nicht. Und wie man es löst.
Entsprechend erklĂ€ren Mathelehrer das Programmieren mit einem Schwerpunkt auf Theorie. Studierende, die von "Mathematikern" kommen, schlagen hĂ€ufig gut durchdachte und theoretisch ĂŒberlegene Lösungen vor, die jedoch in der Regel aus der Sicht der Sprache suboptimal sind und oft einfach unordentlich geschrieben werden. Solche Studierenden glauben, dass ihr Hauptziel darin besteht, zu zeigen, dass sie in der Lage sind, solche Aufgaben grundsĂ€tzlich zu lösen. Die Umsetzung kann jedoch MĂ€ngel aufweisen.
Die Personen, die in der Schule oder im ersten Studienjahr von Programmierern geprĂ€gt wurden, bringen oft einen "sehr schönen Fahrrad" mit, der jedoch asymptotisch meist nicht sehr effektiv funktioniert. Sie setzen sich hingegen nicht die Aufgabe, tief theoretisch zu denken und in LehrbĂŒchern nach optimalen Lösungen zu suchen, sondern ziehen schönen Code vor.
Bei VorstellungsgesprÀchen an verschiedenen Hochschulen erkenne ich meist, welche "Schule" der Ausbildung des Kandidaten zugrunde liegt. Ich habe kaum ein perfektes Gleichgewicht in der Grundausbildung erlebt. In meiner Kindheit konnte man in meiner Stadt auf Mathematik-Olympiaden vorbereiten, aber es gab keine Programmierclubs. Heute lernen Kinder in diesen Clubs Programmierung in den "modernen" Sprachen Go und Python. Daher gibt es bereits beim Einstieg in die Hochschulen Unterschiede in den AnsÀtzen. Ich denke, es ist wichtig, beide FÀhigkeiten an der UniversitÀt zu fördern, sonst kommt entweder ein Spezialist mit unzureichender theoretischer Basis in die Firma oder jemand, der nicht gelernt hat und nicht bereit ist, guten Code zu schreiben.
Wie kann man dennoch die "Stangen" fĂŒr zukĂŒnftige

In solchen Situationen trifft der Studierende oft die Wahl, die ihm am besten entspricht. Der Dozent hingegen vermittelt seine eigene Perspektive. Doch alle profitieren, wenn der Code nicht nur Ă€sthetisch ansprechend ist, sondern auch algorithmisch klar, begrĂŒndet und effizient funktioniert.
- IT-Horizont. Ein Bachelorabsolvent in Computer Science ist bereits ein qualifizierter Fachmann mit einem entwickelten technischen Horizont, der wahrscheinlich seinen Schwerpunkt gewĂ€hlt hat. In den ersten Semestern wissen wir jedoch noch nicht, in welchem Bereich er oder sie tĂ€tig sein wird. Vielleicht schlĂ€gt der Weg in die Wissenschaft oder Analytik ein, oder er oder sie wird tĂ€glich eine groĂe Menge an Code schreiben. Daher ist es wichtig, dem Studierenden alle Aspekte der IT-Arbeit vorzustellen und ihn mit sĂ€mtlichen Werkzeugen vertraut zu machen. Optimal wĂ€re es, wenn die LehrkrĂ€fte aus den Theorie-Kursen die Verbindung zur Praxis herstellen (und umgekehrt).
- Wachstumspunkt. Vermeiden Sie extreme Ansichten â im Interesse des Studenten selbst. Zu verstehen, ob Sie ein âMathematikerâ oder ein âProgrammiererâ sind, ist nicht schwer. Es genĂŒgt, auf das erste GefĂŒhl zu hören, wenn Sie ein Problem lösen: Was möchten Sie tun â im Lehrbuch nach dem optimalen Ansatz suchen oder ein paar Funktionen schreiben, die Ihnen spĂ€ter nĂŒtzlich sein werden? Daraus lĂ€sst sich eine ergĂ€nzende Lernroute aufbauen.
- Alternative Wissensquellen. Es kommt vor, dass das Programm gut ausbalanciert ist, aber âSystemprogrammierungâ und âAlgorithmenâ von völlig unterschiedlichen Personen unterrichtet werden. Manche Studenten fĂŒhlen sich zum ersten Dozenten hingezogen, andere zum zweiten. Doch selbst wenn Ihnen der Professor nicht gefĂ€llt, ist das kein Grund, einige FĂ€cher zu vernachlĂ€ssigen und sich nur auf andere zu konzentrieren. Die Studierenden selbst sollten motiviert sein, den Willen zu finden, mit Wissensquellen zu arbeiten und auf keinen Fall extremen Meinungen zu vertrauen, wie âMathematik ist die Königin der Wissenschaften, das Wichtigste ist, Algorithmen zu kennenâ oder âGuter Code kompensiert alles andereâ.
Um Ihr Wissen in der Theorie zu vertiefen, können Sie sich auf Fachliteratur und Online-Kurse stĂŒtzen. Ihre Programmierkenntnisse können Sie auf Plattformen wie Coursera, Udacity oder Stepik verbessern, wo eine Vielzahl von Kursen angeboten wird. Oft beginnen Studenten mit anspruchsvollen Kursen zu Programmiersprachen, wenn sie das GefĂŒhl haben, dass der Algorithmus-Dozent gut in Mathematik ist, jedoch auf schwierige Fragen zur Implementierung nicht antworten kann. Nicht jeder wird mir zustimmen, aber in meiner Erfahrung hat sich dies bewĂ€hrt. , in der nach und nach immer komplexere Spracheigenschaften behandelt werden. Insgesamt sollten Sie einen Kurs mit hohen Bewertungen von angesehenen Unternehmen oder Hochschulen wĂ€hlen.
Soft Skills

Wenn Absolventen von Hochschulen in Unternehmen, ob Start-ups oder groĂe Konzerne, einsteigen, sind selbst die besten Studierenden oft schlecht auf die reale Arbeitsumgebung vorbereitet. Der Grund ist, dass UniversitĂ€ten heutzutage sehr viel âaufpassenâ auf die Studierenden. Selbst wenn man zahlreiche Veranstaltungen verpasst, sich nicht rechtzeitig auf PrĂŒfungen vorbereitet, verschlĂ€ft oder zu spĂ€t zur PrĂŒfung kommt, kann jeder dennoch bestehen und gegebenenfalls wiederholen â und schlieĂlich trotzdem seinen Abschluss erhalten.
Dennoch gibt es heute zahlreiche Möglichkeiten, Studierende auf das Erwachsenenleben und eine selbststĂ€ndige berufliche TĂ€tigkeit vorzubereiten. Sie mĂŒssen nicht nur programmieren, sondern auch kommunizieren. Auch das muss gelehrt werden. An UniversitĂ€ten gibt es verschiedene Formate zur Förderung dieser FĂ€higkeiten, aber leider wird oft nicht genug Aufmerksamkeit darauf gelegt. Dennoch haben wir viele Möglichkeiten, FĂ€higkeiten fĂŒr effektives Teamarbeit zu entwickeln.
- GeschÀftliche schriftliche Kommunikation. Leider haben die meisten Absolventen keine Ahnung von den Gepflogenheiten der schriftlichen Kommunikation. Die Art der Kommunikation in Messaging-Apps variiert je nach Tageszeit und verwendet oft eine informelle Sprache und Umgangssprache. Dennoch könnten SchreibfÀhigkeiten durch den Kontakt zwischen Studierenden und der FakultÀt oder der UniversitÀt trainiert werden.
In der Praxis sehen sich Manager oft damit konfrontiert, ein groĂes Projekt in kleinere Aufgaben zu zerlegen. Dazu muss jede Aufgabe und ihre Komponenten gut beschrieben werden, damit Junior-Entwickler verstehen, was von ihnen erwartet wird. Fehlend formulierte Aufgaben fĂŒhren oft dazu, dass etwas ĂŒberarbeitet werden muss; daher hilft Erfahrung in der schriftlichen Kommunikation Absolventen, in verteilten Teams zu arbeiten.
- Schriftliche PrĂ€sentation der Ergebnisse seiner Arbeit. Um ihre Studienprojekte zu prĂ€sentieren, können Studierende im höheren Semester BeitrĂ€ge auf Habr, wissenschaftliche Artikel sowie einfache Berichte verfassen. DafĂŒr gibt es viele Möglichkeiten â bereits ab dem zweiten Semester beginnen an einigen Hochschulen die Kursarbeiten. Auch Essays können als Kontrollform genutzt werden â sie Ă€hneln meist in ihrer Form publizistischen Artikeln. Ein solcher Ansatz wird bereits an der National Research University Higher School of Economics (ĐĐĐŁ ĐĐšĐ) umgesetzt.
Wenn ein Unternehmen einen flexiblen Entwicklungsansatz verfolgt, mĂŒssen die Ergebnisse oft in kleineren Portionen, aber dafĂŒr hĂ€ufiger vorgestellt werden. Es ist wichtig, in der Lage zu sein, die Ergebnisse der Arbeit eines einzelnen Spezialisten oder des gesamten Teams prĂ€gnant zu kommunizieren. Viele Unternehmen fĂŒhren heute âReviewsâ â jĂ€hrliche oder halbjĂ€hrliche ĂberprĂŒfungen â durch. Mitarbeiter diskutieren die Ergebnisse und Perspektiven ihrer Arbeit. Ein erfolgreiches Review ist der Hauptgrund fĂŒr Karrierefortschritte und PrĂ€mien, beispielsweise bei Microsoft, Acronis oder Yandex. Ja, Sie können gut programmieren, aber selbst ein hervorragender Spezialist hat es schwer, wenn er âin der Ecke sitztâ, im Vergleich zu jemandem, der seinen Erfolg gut prĂ€sentieren kann.
- Wissenschaftliches Schreiben. Besonders hervorzuheben ist das akademische Schreiben. Es ist fĂŒr Studierende hilfreich, sich mit den Regeln fĂŒr das Schreiben wissenschaftlicher Texte, der Nutzung von Argumenten, der Informationssuche in verschiedenen Quellen und der korrekten Zitierung dieser Quellen vertraut zu machen. Es ist ratsam, dies auf Englisch zu tun, da es in der internationalen akademischen Gemeinschaft weitaus mehr qualitativ hochwertige Texte gibt, und fĂŒr verschiedene Disziplinen bereits etablierte Vorlagen zur PrĂ€sentation wissenschaftlicher Ergebnisse existieren. NatĂŒrlich sind FĂ€higkeiten im akademischen Schreiben auch bei der Vorbereitung von Veröffentlichungen in russischer Sprache notwendig, aber die Beispiele fĂŒr zeitgenössische gute Artikel auf Englisch sind deutlich weniger. Diese FĂ€higkeiten kann man im Rahmen eines entsprechenden Kurses erwerben, der mittlerweile Teil vieler Bildungsprogramme ist.
- Meetings leiten. Die meisten Studenten wissen nicht, wie man sich auf Meetings vorbereitet, Protokolle fĂŒhrt und Daten verarbeitet. Wenn wir diese FĂ€higkeiten jedoch an der Hochschule ausbauen, zum Beispiel durch die Teilnahme an Gruppenprojekten, können wir vermeiden, dass wertvolle Zeit am Arbeitsplatz verschwendet wird. Dazu ist eine Kontrolle ĂŒber die Projektarbeit der Studenten notwendig, um sie zu schulen, wie man Meetings effektiv gestaltet. In der Praxis kostet das jede Firma eine Menge Geld â denn wenn mehrere hochbezahlte Personen eine Stunde ihrer Arbeitszeit in einem Meeting verbringen, möchte man, dass es sich auch lohnt.
- Ăffentliches Sprechen. Viele Studenten stehen nur bei der Verteidigung ihrer Abschlussarbeit vor der Notwendigkeit, öffentlich zu sprechen. Und lĂ€ngst sind nicht alle darauf vorbereitet. Ich habe viele Studenten gesehen, die:
- mit dem RĂŒcken zu den Zuhörern stehen,
- hin und her wippen, wÀhrend sie versuchen, die Kommission in Trance zu versetzen,
- Stifte, Bleistifte und Zeigestöcke zerbrechen,
- im Kreis herumlaufen,
- auf den Boden schauen.
Das ist normal, wenn jemand zum ersten Mal spricht. Aber man sollte frĂŒher mit diesem Stress umgehen â bereits bei der Verteidigung von Seminararbeiten in einer freundlichen AtmosphĂ€re unter Kommilitonen.
DarĂŒber hinaus ist es in Unternehmen gĂ€ngige Praxis, den Mitarbeitern die Möglichkeit zu geben, Ideen vorzuschlagen, dafĂŒr Finanzierung, eine Position oder ein spezifisches Projekt zu erhalten. Wenn man darĂŒber nachdenkt, ist das nicht anders als die Verteidigung einer Abschlussarbeit, nur auf einem höheren Niveau. Warum sollten wir solche wichtigen KarrierefĂ€higkeiten nicht wĂ€hrend des Studiums entwickeln?
Was habe ich verpasst?
Einer der AnlĂ€sse fĂŒr diesen Beitrag war ein Artikel, . Der Autor des Artikels konzentriert sich nur auf die MĂ€ngel russischer Studenten, die von auslĂ€ndischen Dozenten wahrgenommen werden. Meine Erfahrung im Unterricht an verschiedenen Hochschulen zeigt, dass das russische Schul- und Hochschulsystem eine solide Grundlage bietet. Russische Studenten sind in Mathematik und Algorithmen gut ausgebildet, was die professionelle Kommunikation mit ihnen erleichtert.
Bei auslĂ€ndischen Studierenden hingegen können die Erwartungen russischer LehrkrĂ€fte manchmal ĂŒbertrieben sein. Zum Beispiel scheinen indische Studenten auf dem Basislevel in Mathematik denen aus Russland Ă€hnlich zu sein. Allerdings fehlt es ihnen manchmal an spezifischem Wissen bei ihrem Abschluss. Gute europĂ€ische Studierende haben in der Regel eine weniger ausgeprĂ€gte mathematische Vorbereitung auf schulischer Ebene.
Wenn Sie an einer Hochschule studieren oder arbeiten, können Sie bereits jetzt an Ihren kommunikativen FĂ€higkeiten (sowohl Ihre eigenen als auch die Ihrer Studierenden) arbeiten, Ihre grundlegende Wissensbasis erweitern und Programmieren ĂŒben. Das russische Bildungssystem bietet dafĂŒr alle Möglichkeiten â man muss nur wissen, wie man sie richtig nutzt.
Ich wĂŒrde mich freuen, wenn Sie in den Kommentaren zu diesem Beitrag Ihre Links zu Kursen und Methoden teilen könnten, die helfen, das Gleichgewicht in der Ausbildung zu verbessern, sowie andere Möglichkeiten, um wĂ€hrend des Studiums an der Hochschule Soft Skills zu entwickeln.
Quelle: habr.com
