Wie Sie das Beste aus dem Informatikunterricht herausholen können

Die meisten modernen Programmierer haben einen UniversitĂ€tsabschluss. Mit der Zeit wird sich dies Ă€ndern, aber jetzt sind die Dinge so, dass gute Mitarbeiter in IT-Unternehmen immer noch von UniversitĂ€ten kommen. In diesem Beitrag spricht Stanislav Protasov, Direktor fĂŒr UniversitĂ€tsbeziehungen bei Acronis, ĂŒber seine Vision der Merkmale der UniversitĂ€tsausbildung fĂŒr zukĂŒnftige Programmierer. Lehrer, SchĂŒler und diejenigen, die sie einstellen, finden unter dem Schnitt sogar ein paar nĂŒtzliche Tipps.

Bild

In den letzten 10 Jahren unterrichte ich an verschiedenen UniversitĂ€ten Mathematik, Algorithmen, Programmiersprachen und maschinelles Lernen. Heute bin ich neben meiner Position bei Acronis auch stellvertretender Leiter der Abteilung fĂŒr Theoretische und Angewandte Informatik am MIPT. Aus Erfahrung an guten russischen (und nicht nur) UniversitĂ€ten habe ich einige Beobachtungen zur Ausbildung von Studenten in Computerdisziplinen gemacht.

30-Sekunden-Regel funktioniert nicht mehr


Ich bin sicher, dass Sie auf eine Regel von 30 Sekunden gestoßen sind, die besagt, dass ein Programmierer den Zweck einer Funktion nach einem kurzen Blick auf ihren Code verstehen muss. Es wurde lange Zeit erfunden, seitdem gibt es viele Betriebssysteme, Sprachen, Hardware und Algorithmen. Ich schreibe seit 12 Jahren Code, aber vor relativ kurzer Zeit habe ich den Quellcode eines Produkts gesehen, der mir auf den ersten Blick als Zauberspruch erschien. Wenn Sie heute nicht in den Themenbereich eingetaucht sind, funktioniert die 30-Sekunden-Regel nicht mehr. Andernfalls haben Sie nicht nur 30, sondern auch 300 Sekunden Zeit, um herauszufinden, was was ist.

Wenn Sie beispielsweise Treiber schreiben möchten, mĂŒssen Sie in diesen Bereich eintauchen und Tausende von Zeilen spezifischen Codes lesen. Mit dieser Herangehensweise an das Studium des Faches hat der Spezialist ein „GefĂŒhl des Flusses“. Wie im Rap, wenn ein GefĂŒhl des guten Reims und des richtigen Rhythmus ohne besondere Rationalisierung auftritt. Ein gut ausgebildeter Programmierer kann auch leicht ineffektiven oder einfach schlechten Code erkennen, ohne detailliert untersuchen zu mĂŒssen, wo ein Stilverstoß aufgetreten ist oder ein suboptimaler Ansatz verwendet wurde (die ErklĂ€rung dieses GefĂŒhls kann jedoch sehr schwierig sein).

Spezialisierung und wachsende KomplexitĂ€t fĂŒhren dazu, dass die Ausbildung eines Bachelor nicht mehr die Möglichkeit bietet, alle Bereiche tief genug zu studieren. Aber gerade auf diesem Bildungsniveau mĂŒssen Sie Horizonte gewinnen. Danach mĂŒssen Sie in einer Magistratur oder bei der Arbeit einige Zeit damit verbringen, sich mit den Problemen und Besonderheiten des Fachgebiets zu beschĂ€ftigen, Slang, Programmiersprachen und Code von Kollegen zu lernen, Artikel und BĂŒcher zu lesen. Es scheint mir, dass dies der einzige Weg ist, mit Hilfe der UniversitĂ€t die Querlatte fĂŒr zukĂŒnftige T-förmige Spezialisten „aufzupumpen“.

Welche Programmiersprache wird am besten an der UniversitÀt unterrichtet?


Bild
Zu meiner Freude haben sich UniversitĂ€tsprofessoren bereits geweigert, die richtige Antwort auf die Frage zu finden: „Was ist besser zu programmieren?“. Die Debatte darĂŒber, was besser ist - C # oder Java, Delphi oder C ++ - ist tatsĂ€chlich gescheitert. Das Aufkommen vieler neuer Programmiersprachen und die AnhĂ€ufung pĂ€dagogischer Erfahrungen haben dazu gefĂŒhrt, dass im akademischen Umfeld ein VerstĂ€ndnis hergestellt wurde: Jede Sprache hat ihre eigene Nische.

Das Problem des Unterrichts mit der einen oder anderen Programmiersprache hat keine PrioritĂ€t mehr. Es spielt keine Rolle, in welcher Sprache der Kurs unterrichtet wird. Hauptsache die ausreichende Ausdruckskraft der Sprache. Das Buch „ Die Kunst der Multiprozessor-Programmierung “ ist ein gutes Beispiel fĂŒr diese Beobachtung. In dieser bereits klassischen Ausgabe befinden sich alle Beispiele in Java, einer Sprache ohne Zeiger, jedoch mit Garbage Collector. Es ist unwahrscheinlich, dass irgendjemand argumentieren wird, dass Java beim Schreiben von Hochleistungs-Parallelcode bei weitem nicht die beste Wahl ist. Um die im Buch beschriebenen Konzepte zu erklĂ€ren, erwies sich die Sprache als geeignet. Ein weiteres Beispiel ist Andrew Euns klassischer Kurs fĂŒr maschinelles Lernen, der in der Octave-Umgebung in der Matlab-Sprache unterrichtet wird. Heute könnte man eine andere Programmiersprache wĂ€hlen, aber was ist im Wesentlichen der Unterschied, wenn Ideen und AnsĂ€tze wichtig sind?

Praktischer und realitÀtsnaher


Gleichzeitig sind in den letzten Jahren viel mehr Praktiker zu UniversitĂ€ten geworden. Wenn frĂŒhere russische UniversitĂ€tsprogramme aktiv dafĂŒr kritisiert wurden, von der RealitĂ€t getrennt zu sein, ist es heute nicht mehr möglich, dies ĂŒber die IT-Ausbildung zu sagen. Vor 10 Jahren gab es an den UniversitĂ€ten fast keine Lehrer mit wirklicher Erfahrung in der Branche. In der Fachabteilung werden die Kurse immer hĂ€ufiger nicht von Vollzeitlehrern fĂŒr Informatik durchgefĂŒhrt, sondern von praktizierenden IT-Spezialisten, die in ihrer Freizeit nur 1-2 Kurse von ihrer Hauptarbeit lesen. Dieser Ansatz rechtfertigt sich in Bezug auf qualitativ hochwertige Schulungen, die Aktualisierung von Kursen und natĂŒrlich die Suche nach potenziellen Mitarbeitern im Unternehmen. Ich glaube nicht, dass ich ein Geheimnis verraten werde, indem ich sage, dass wir die Basisabteilung am MIPT unterstĂŒtzen und Beziehungen zu anderen UniversitĂ€ten aufbauen, auch um Studenten vorzubereiten, die ihre Karriere bei Acronis beginnen könnten.

Mathematiker oder Programmierer?


Bild
Holivars, der frĂŒher Programmiersprachen drehte, ging in die philosophische Richtung. Jetzt streiten sich bedingte „Programmierer“ und „Mathematiker“ miteinander. Im Prinzip könnten diese Schulen in zwei Bildungsprogrammen auffallen, aber die Branche teilt solche Feinheiten immer noch nicht gut, und von UniversitĂ€t zu UniversitĂ€t haben wir eine Ă€hnliche Ausbildung mit einer etwas anderen Ausrichtung. Dies bedeutet, dass sowohl der Student als auch das Unternehmen, in dem er weiterarbeiten wird, das RĂ€tsel des Wissens durch die fehlenden Teile ergĂ€nzen mĂŒssen.

Das Auftreten von Praktikern an UniversitĂ€ten, die Industriecode in verschiedenen Sprachen schreiben, gibt den Studenten eine bessere EntwicklungsfĂ€higkeit. Praktische Programmierer sind mit der Implementierung von Standardbibliotheken, Frameworks und Programmiertechniken vertraut und vermitteln den SchĂŒlern den Wunsch, guten Code schnell und effizient zu schreiben.

Diese nĂŒtzliche FĂ€higkeit fĂŒhrt jedoch manchmal dazu, dass Fans das Rad neu erfinden. ComputerschĂŒler denken folgendermaßen: „Was soll ich noch 200 Zeilen guten Codes schreiben, um das Problem in der Stirn zu lösen?“.

Lehrer, die eine klassische mathematische Ausbildung erhalten haben (z. B. Matfak oder angewandte Mathematik), arbeiten eher in einem nahezu wissenschaftlichen Umfeld oder auf dem Gebiet der Modellierung und Datenanalyse. „Mathematiker“ sehen die Probleme in der Informatik anders. Sie arbeiten hauptsĂ€chlich nicht mit Code, sondern mit Algorithmen, Theoremen und formalen Modellen. Ein wichtiges Plus des mathematischen Ansatzes ist ein klares grundlegendes VerstĂ€ndnis dessen, was gelöst werden kann und was nicht. Und wie man es löst.

Dementsprechend sprechen Mathematiklehrer ĂŒber Programmieren mit einer Tendenz zur Theorie. SchĂŒler, die „von Mathematikern“ kommen, bieten hĂ€ufiger gut durchdachte und theoretisch bessere Lösungen an, sind jedoch aus sprachlicher Sicht in der Regel nicht optimal und oft einfach ungenau. Ein solcher Student glaubt, dass sein Hauptziel darin besteht, die FĂ€higkeit zu demonstrieren, solche Probleme im Prinzip zu lösen. Aber die Implementierung kann lahm sein.

Die Jungs, die von Programmierern in der Schule oder in ihren ersten Kursen erzogen wurden, bringen ein „sehr schönes Fahrrad“ mit, das jedoch normalerweise nicht sehr asymptotisch funktioniert. Im Gegenteil, sie stellen sich nicht die Aufgabe, LehrbĂŒcher grĂŒndlich zu theoretisieren und sich ihnen zuzuwenden, um optimale Lösungen zu finden, wobei sie schönen Code bevorzugen.

An verschiedenen UniversitĂ€ten sehe ich bei Studenteninterviews normalerweise, welche „Schule“ seiner Ausbildung zugrunde liegt. Und ich habe in der Grundbildung fast nicht das perfekte Gleichgewicht gefunden. Als Kind war es in meiner Stadt möglich, sich auf die Mathematik der Olympischen Spiele vorzubereiten, aber es gab keine Programmierkreise. Jetzt lernen Kinder in den Kreisen, im „trendigen“ Go und Python zu programmieren. Daher gibt es bereits bei der Zulassung zu UniversitĂ€ten unterschiedliche AnsĂ€tze. Ich glaube, dass es wichtig ist, beide FĂ€higkeiten an der UniversitĂ€t zu unterstĂŒtzen, da sonst entweder ein Spezialist mit unzureichender theoretischer Basis oder eine Person, die nicht gelernt hat und keinen guten Code schreiben möchte, im Unternehmen arbeiten wird.

Wie kann man die Querlatte fĂŒr zukĂŒnftige T-förmige Spezialisten „aufpumpen“ ?


Bild
Es ist klar, dass der SchĂŒler unter solchen UmstĂ€nden einfach wĂ€hlt, was ihm am besten gefĂ€llt. Der Lehrer sendet einfach einen Standpunkt aus, der ihm nĂ€her steht. Aber jeder wird davon profitieren, wenn der Code schön geschrieben ist und aus Sicht der Algorithmen alles klar, vernĂŒnftig und effizient ist.

  • IT-Horizonte . Ein Absolvent eines Bachelor-Abschlusses in Informatik ist ein vorgefertigter Spezialist mit einer entwickelten technischen Perspektive, der wahrscheinlich sein Profil gewĂ€hlt hat. In den jĂŒngeren Jahren wissen wir jedoch nicht, was er oder sie tun wird. Kann in die Wissenschaft oder Analytik gehen oder im Gegenteil jeden Tag eine große Menge Code schreiben. Daher muss der Student alle Aspekte der Arbeit im IT-Bereich zeigen, um sich mit allen Tools vertraut zu machen. Im Idealfall zeigen Lehrer aus theoretischen Kursen einen Zusammenhang mit der Praxis (und umgekehrt).
  • Wachstumspunkt . Vermeiden Sie es, bis zum Äußersten zu rollen - im Interesse des SchĂŒlers selbst. Es ist nicht schwer zu verstehen, wer Sie sind, "Mathematiker" oder "Programmierer". Es reicht aus, bei der Lösung des Problems auf den ersten Impuls zu hören: Was möchten Sie tun - suchen Sie im Lehrbuch nach dem besten Ansatz oder schreiben Sie ein paar Funktionen, die spĂ€ter definitiv nĂŒtzlich sein werden? Auf dieser Grundlage können Sie einen weiteren komplementĂ€ren Verlauf Ihres Lernens aufbauen.
  • Alternative Wissensquellen . Es kommt vor, dass das Programm gut ausbalanciert ist, aber „Systemprogrammierung“ und „Algorithmen“ sind völlig unterschiedliche Personen, und der erste Lehrer ist einigen SchĂŒlern nĂ€her, der zweite anderen. Aber selbst wenn Sie den Professor nicht mögen, ist dies kein Grund, einige Themen zugunsten anderer zu behandeln. Die Junggesellen selbst sind daran interessiert, den Willen zu finden, mit Wissensquellen zu arbeiten, und auf keinen Fall auf radikale Meinungen wie „Mathematik ist die Königin der Wissenschaften, Hauptsache, die Algorithmen zu kennen“ oder „guter Code kompensiert alles andere“.

Sie können Ihr theoretisches Wissen vertiefen, indem Sie sich auf Fachliteratur und Online-Kurse beziehen. Sie können Ihre FĂ€higkeit verbessern, Programmiersprachen in Coursera, Udacity oder Stepik zu verwenden, wo viele verschiedene Kurse angeboten werden. Außerdem sehen sich die SchĂŒler hĂ€ufig Hardcore-Sprachkurse an, wenn sie der Meinung sind, dass der Algorithmuslehrer Mathematik gut kennt, aber komplexe Fragen im Bereich der Implementierung nicht beantworten kann. Nicht jeder wird mir zustimmen, aber in meiner Praxis hat sich die Spezialisierung auf C ++ von Yandex bewĂ€hrt, bei der immer komplexere Sprachchips nacheinander sortiert werden. WĂ€hlen Sie im Allgemeinen einen Kurs mit guten Noten von renommierten Unternehmen oder UniversitĂ€ten.

Soft Skills


Bild
Wenn Studenten von SpitzenuniversitĂ€ten von einer UniversitĂ€t zur Arbeit in einem Unternehmen kommen, von einem Startup bis zu einem großen Unternehmen, sind sie schlecht an das reale Arbeitsumfeld angepasst. Tatsache ist, dass die UniversitĂ€ten heute viel mit Studenten „pflegen“. Selbst wenn man viele Klassen verpasst hat, nicht rechtzeitig auf die Kontrolle und die Tests vorbereitet ist, verschlafen hat, zu spĂ€t zur PrĂŒfung kommt, kann jeder die PrĂŒfung bestehen und wiederholen - und am Ende trotzdem ein Diplom erhalten.

Trotzdem gibt es heute alle Voraussetzungen, um sich auf das Erwachsenenalter und eine selbstĂ€ndige berufliche TĂ€tigkeit vorzubereiten. Sie mĂŒssen nicht nur programmieren, sondern auch kommunizieren. Und das muss auch gelehrt werden. An UniversitĂ€ten gibt es verschiedene Formate, um diese FĂ€higkeiten zu fördern, aber leider erhalten sie oft nicht genĂŒgend Aufmerksamkeit. Dennoch gibt es in unserem Arsenal viele Möglichkeiten, effektive TeamfĂ€higkeit zu erlangen.

  • Schriftliche GeschĂ€ftskommunikation . Leider haben die meisten FachkrĂ€fte, die die UniversitĂ€t verlassen, keine Ahnung von der Etikette der Korrespondenz. Die Besonderheiten der Kommunikation in Instant Messenger in Nachrichten nachts und nachmittags sowie die Verwendung von GesprĂ€chsstil und informellem Vokabular. Es wĂ€re jedoch möglich, die Schriftsprache in der Kommunikation des Studenten mit dem Fachbereich und der UniversitĂ€t zu trainieren.

    In der Praxis mĂŒssen Manager hĂ€ufig ein großes Projekt in kleine Aufgaben zerlegen. Dazu mĂŒssen Sie jede Aufgabe und ihre Komponenten gut beschreiben, damit die Nachwuchsentwickler verstehen, was von ihnen verlangt wird. Eine schlecht festgelegte Aufgabe fĂŒhrt hĂ€ufig dazu, dass etwas wiederholt werden muss. Daher hilft die Erfahrung in der schriftlichen Kommunikation den Absolventen, in verteilten Teams zu arbeiten.
  • Schriftliche PrĂ€sentation der Ergebnisse ihrer Arbeit . FĂŒr die PrĂ€sentation ihrer Bildungsprojekte können Ă€ltere Studenten BeitrĂ€ge ĂŒber Habr, wissenschaftliche Artikel und auch nur Berichte schreiben. HierfĂŒr gibt es viele Möglichkeiten - bereits im zweiten Jahr beginnen die Semesterarbeiten an einigen UniversitĂ€ten. Sie können AufsĂ€tze auch als Kontrollform verwenden - sie Ă€hneln normalerweise eher einem journalistischen Artikel. Dieser Ansatz wurde bereits an der Higher School of Economics umgesetzt.

    Wenn ein Unternehmen einen flexiblen Entwicklungsansatz verfolgt, ist es notwendig, die Ergebnisse seiner Arbeit in kleineren Teilen, jedoch hĂ€ufiger, darzustellen. Dazu ist es wichtig, das Ergebnis der Arbeit eines Spezialisten oder des gesamten Teams kurz vermitteln zu können. Außerdem fĂŒhren viele Unternehmen heute "ÜberprĂŒfungen" durch - jĂ€hrlich oder halbjĂ€hrlich. Die Mitarbeiter diskutieren die Ergebnisse und Perspektiven der Arbeit. Eine erfolgreiche ÜberprĂŒfung ist der Hauptgrund fĂŒr das Karrierewachstum, Boni beispielsweise bei Microsoft, Acronis oder Yandex. Ja, Sie können gut programmieren, aber selbst wenn Sie in der Ecke sitzen, verliert selbst ein starker Spezialist immer gegen jemanden, der weiß, wie man seinen Erfolg gut prĂ€sentiert.
  • Akademisches Schreiben . UnabhĂ€ngig davon lohnt es sich, das akademische Schreiben hervorzuheben. FĂŒr SchĂŒler ist es hilfreich, sich mit den Regeln fĂŒr das Schreiben wissenschaftlicher Texte, das Verwenden von Argumenten, das Suchen nach Informationen in verschiedenen Quellen und das VerknĂŒpfen mit diesen Quellen vertraut zu machen. Es ist ratsam, dies auf Englisch zu tun, da die internationale akademische Gemeinschaft viel mehr gute Texte hat und es fĂŒr verschiedene Disziplinen bereits gut etablierte Vorlagen fĂŒr die PrĂ€sentation wissenschaftlicher Ergebnisse gibt. NatĂŒrlich sind auch akademische SchreibfĂ€higkeiten fĂŒr die Erstellung russischsprachiger Veröffentlichungen erforderlich, aber es gibt viel mehr Beispiele fĂŒr gute moderne Artikel in englischer Sprache. Sie können diese FĂ€higkeiten als Teil des entsprechenden Kurses erwerben, der jetzt in vielen Bildungsprogrammen enthalten ist.
  • FĂŒhrende Treffen . Die meisten SchĂŒler wissen nicht, wie sie sich auf Besprechungen vorbereiten, ein Protokoll fĂŒhren und Daten verarbeiten sollen. Wenn wir diese FĂ€higkeit jedoch an einer UniversitĂ€t entwickeln, indem wir beispielsweise an gemeinsamen Projekten teilnehmen, können wir vermeiden, Zeit am Arbeitsplatz zu verschwenden. Dazu benötigen wir die Kontrolle ĂŒber die Entwurfsarbeit der SchĂŒler, um ihnen beizubringen, wie sie Meetings effektiv durchfĂŒhren können. In der Praxis kostet es jedes Unternehmen viel Geld - denn wenn mehrere Personen, die ein hohes Gehalt erhalten, eine Stunde Arbeitszeit bei einer Kundgebung verbringen, möchte ich, dass sie die entsprechende Rendite erhalten.
  • Öffentliche Rede . Viele Studenten stehen vor der Notwendigkeit, öffentlich zu sprechen, nur um ihre These zu verteidigen. Und nicht jeder ist dazu bereit. Ich habe viele Studenten gesehen, die:

    • mit dem RĂŒcken zum Publikum
    • schwingen, versuchen, eine Kommission fĂŒr Trance einzufĂŒhren,
    • Kugelschreiber, Bleistifte und Zeiger,
    • im Kreis gehen
    • schau auf den Boden.

    Dies ist normal, wenn eine Person zum ersten Mal spricht. Aber mit diesem Stress mĂŒssen Sie frĂŒher anfangen zu arbeiten - mit dem Schutz der Kursarbeit in einer freundlichen AtmosphĂ€re unter Klassenkameraden.

    DarĂŒber hinaus besteht die Standardpraxis in Unternehmen darin, einem Mitarbeiter die Möglichkeit zu geben, eine Idee vorzuschlagen, Finanzmittel, eine Position oder ein spezielles Projekt dafĂŒr zu erhalten. Aber wenn Sie darĂŒber nachdenken - dies ist die gleiche Verteidigung der Hausarbeit, nur auf einer höheren Ebene. Warum nicht wĂ€hrend des Studiums so nĂŒtzliche berufliche FĂ€higkeiten trainieren?

Was fehlt mir?


Einer der GrĂŒnde fĂŒr das Schreiben dieses Beitrags war ein Artikel, der auf der Website der Tyumen State University veröffentlicht wurde . Der Autor des Artikels konzentriert sich nur auf die MĂ€ngel russischer SchĂŒler, die von auslĂ€ndischen Lehrern bemerkt werden. Die Praxis meines Unterrichts an verschiedenen UniversitĂ€ten zeigt, dass die russische Schule und Hochschulbildung eine gute Basis bieten. Russische Studenten sind versiert in Mathematik und Algorithmen, es ist einfacher, eine professionelle Kommunikation mit ihnen aufzubauen.

Bei auslĂ€ndischen SchĂŒlern hingegen können die Erwartungen eines Russischlehrers manchmal ĂŒberbewertet werden. Zum Beispiel sind die indischen Studenten, die ich getroffen habe, auf der Ebene der Grundausbildung in Mathematik den russischen Studenten Ă€hnlich. Am Ende des Grundstudiums fehlen ihnen jedoch manchmal spezielle Kenntnisse. Gute europĂ€ische SchĂŒler haben eher weniger gute Mathematik auf Schulebene.

Und wenn Sie an einer UniversitĂ€t studieren oder arbeiten, können Sie jetzt die Arbeit an kommunikativen FĂ€higkeiten (Ihren oder Ihren Studenten) aufbauen, die grundlegende Basis erweitern und das Programmieren ĂŒben. Zu diesem Zweck sind im russischen Bildungssystem alle Möglichkeiten vorgesehen - Sie mĂŒssen sie nur richtig einsetzen.

Ich wĂŒrde mich freuen, wenn Sie in den Kommentaren zum Beitrag Ihre Links zu Kursen und Methoden teilen, die dazu beitragen, das Gleichgewicht in der Bildung auszugleichen, sowie auf andere Weise, um Soft Skills wĂ€hrend des Studiums an der UniversitĂ€t zu fördern.

Source: https://habr.com/ru/post/de458676/


All Articles