So machen Sie das Beste aus einer Informatikausbildung

Die meisten modernen Programmierer erhielten ihre Ausbildung an Universitäten. Mit der Zeit wird sich das ändern, doch inzwischen ist es so, dass gutes Personal in IT-Unternehmen immer noch von Universitäten kommt. In diesem Beitrag spricht Stanislav Protasov, Acronis Director of University Relations, über seine Vision von den Besonderheiten der Universitätsausbildung für zukünftige Programmierer. Lehrer, Schüler und diejenigen, die sie einstellen, finden möglicherweise sogar einige nützliche Tipps unter dem Schnitt.

So machen Sie das Beste aus einer Informatikausbildung

Seit 10 Jahren unterrichte ich an verschiedenen Universitäten Mathematik, Algorithmen, Programmiersprachen und maschinelles Lernen. Heute bin ich zusätzlich zu meiner Position bei Acronis auch stellvertretender Leiter der Abteilung für theoretische und angewandte Informatik am MIPT. Aufgrund meiner Erfahrung an guten russischen (und nicht nur) Universitäten habe ich einige Beobachtungen zur Vorbereitung von Studenten in Computerdisziplinen gemacht.

Die 30-Sekunden-Regel funktioniert nicht mehr

Ich bin mir sicher, dass Sie schon einmal auf die 30-Sekunden-Regel gestoßen sind, die besagt, dass ein Programmierer den Zweck einer Funktion nach einem kurzen Blick auf den Code verstehen sollte. Es wurde vor langer Zeit erfunden und seitdem sind viele Betriebssysteme, Sprachen, Hardware und Algorithmen erschienen. Ich schreibe seit 12 Jahren Code, aber vor relativ kurzer Zeit habe ich den Quellcode für ein Produkt gesehen, der mir auf den ersten Blick wie Zaubersprüche vorkam. Wenn Sie heute nicht in das Themengebiet eintauchen, funktioniert die 30-Sekunden-Regel nicht mehr. Andernfalls reichen nicht nur 30, sondern auch 300 Sekunden nicht aus, um herauszufinden, was was ist.

Wenn Sie beispielsweise Treiber schreiben möchten, müssen Sie in diesen Bereich eintauchen und Tausende Zeilen spezifischen Codes lesen. Mit dieser Herangehensweise an das Studium eines Fachs entwickelt ein Spezialist ein „Gefühl des Flusses“. Wie beim Rap, wenn das Gefühl eines guten Reims und des richtigen Rhythmus ohne besondere Rationalisierung auftritt. Ebenso kann ein gut ausgebildeter Programmierer leicht ineffektiven oder einfach schlechten Code erkennen, ohne sich eingehend mit der Frage zu befassen, wo eine Stilverletzung aufgetreten ist oder ein suboptimaler Ansatz verwendet wurde (aber dieses Gefühl kann sehr schwer zu erklären sein).

Spezialisierung und zunehmende Komplexität führen dazu, dass ein Bachelorstudium nicht mehr die Möglichkeit bietet, alle Bereiche in ausreichender Tiefe zu studieren. Aber gerade auf diesem Bildungsniveau muss man sich eine Perspektive aneignen. Anschließend müssen Sie in der Graduiertenschule oder bei der Arbeit einige Zeit damit verbringen, sich in die Probleme und Besonderheiten des Fachgebiets zu vertiefen, Slang, Programmiersprachen und den Code von Kollegen zu studieren sowie Artikel und Bücher zu lesen. Mir scheint, dass dies die einzige Möglichkeit ist, mit Hilfe der Universität „die Latte für die Zukunft hochzupumpen“. T-förmige Spezialisten.

Welche Programmiersprache eignet sich am besten für den Unterricht an der Universität?

So machen Sie das Beste aus einer Informatikausbildung
Zu meiner Freude haben Universitätslehrer bereits aufgegeben, nach der richtigen Antwort auf die Frage zu suchen: „Welche Sprache eignet sich am besten zum Programmieren?“ Die Debatte darüber, was besser ist – C# oder Java, Delphi oder C++ – ist praktisch verschwunden. Das Aufkommen vieler neuer Programmiersprachen und die Anhäufung pädagogischer Erfahrungen haben zu einem etablierten Verständnis im akademischen Umfeld geführt: Jede Sprache hat ihre eigene Nische.

Das Problem des Unterrichtens mit der einen oder anderen Programmiersprache hat keine Priorität mehr. Es spielt keine Rolle, in welcher Sprache der Kurs unterrichtet wird. Die Hauptsache ist eine ausreichende Ausdruckskraft der Sprache. Buch "Die Kunst der Multiprozessor-Programmierung„ist ein gutes Beispiel für diese Beobachtung. In dieser mittlerweile klassischen Ausgabe werden alle Beispiele in Java präsentiert – einer Sprache ohne Zeiger, aber mit Garbage Collector. Kaum jemand würde behaupten, dass Java bei weitem nicht die optimale Wahl für das Schreiben von Hochleistungs-Parallelcode ist. Aber die Sprache war geeignet, die im Buch vorgestellten Konzepte zu erklären. Ein anderes Beispiel - klassischer maschineller Lernkurs Andrew Nna, unterrichtete in Matlab in der Octave-Umgebung. Heute könnte man eine andere Programmiersprache wählen, aber welchen Unterschied macht es wirklich, wenn die Ideen und Ansätze wichtig sind?

Praktischer und näher an der Realität

Gleichzeitig gibt es in den letzten Jahren deutlich mehr Praktiker an den Universitäten. Wurden frühere russische Universitätsprogramme aktiv wegen ihrer Realitätsferne kritisiert, kann man das heute nicht mehr von der IT-Ausbildung sagen. Vor 10 Jahren gab es an Universitäten fast keine Lehrkräfte mit echter Branchenerfahrung. Heutzutage wird der Unterricht an einem Fachbereich immer häufiger nicht mehr von hauptberuflichen Informatiklehrern, sondern von praktizierenden Informatikern geleitet, die in ihrer Freizeit neben ihrer Haupttätigkeit nur 1-2 Kurse unterrichten. Dieser Ansatz rechtfertigt sich unter dem Gesichtspunkt einer qualitativ hochwertigen Personalschulung, der Aktualisierung von Kursen und natürlich der Suche nach potenziellen Mitarbeitern im Unternehmen. Ich glaube nicht, dass ich das Geheimnis preisgeben werde, wenn ich sage, dass wir am MIPT eine Basisabteilung unterstützen und Beziehungen zu anderen Universitäten aufbauen, auch um Studenten vorzubereiten, die ihre Karriere bei Acronis beginnen könnten.

Mathematiker oder Programmierer?

So machen Sie das Beste aus einer Informatikausbildung
Heilige Kriege, die sich früher um Programmiersprachen drehten, haben sich in eine philosophische Richtung entwickelt. Jetzt streiten die sogenannten „Programmierer“ und „Mathematiker“ miteinander. Im Prinzip könnten diese Schulen in zwei Bildungsprogramme aufgeteilt werden, aber die Branche ist immer noch schlecht darin, solche Feinheiten zu trennen, und von Universität zu Universität haben wir eine ähnliche Ausbildung mit leicht unterschiedlichen Schwerpunkten. Das bedeutet, dass sowohl der Student als auch das Unternehmen, in dem er weiterhin arbeiten wird, das Wissenspuzzle durch die fehlenden Teile ergänzen müssen.

Das Aufkommen von Praktikern an Universitäten, die Industriecode in verschiedenen Sprachen schreiben, verleiht den Studierenden bessere Entwicklungskompetenzen. Da praktizierende Programmierer mit den Implementierungen von Standardbibliotheken, Frameworks und Programmiertechniken gut vertraut sind, wecken sie bei den Schülern den Wunsch, guten Code zu schreiben, und zwar schnell und effizient.

Diese nützliche Fähigkeit führt jedoch manchmal dazu, dass diejenigen auftauchen, die das Rad neu erfinden möchten. Programmierstudenten denken so: „Soll ich noch 200 Zeilen guten Code schreiben, der das Problem direkt löst?“

Lehrkräfte mit einer klassischen mathematischen Ausbildung (z. B. an der Fakultät für Mathematik oder Angewandte Mathematik) arbeiten häufig in einem pseudowissenschaftlichen Umfeld oder im Bereich der Modellierung und Datenanalyse. „Mathematiker“ sehen Probleme im Bereich der Informatik anders. Sie arbeiten in erster Linie nicht mit Code, sondern mit Algorithmen, Theoremen und formalen Modellen. Ein wichtiger Vorteil 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 theorielastig über das Programmieren. Studierende, die von „Mathematikern“ abstammen, kommen oft mit gut durchdachten und theoretisch überlegenen Lösungen, die aber aus sprachlicher Sicht meist suboptimal und oft einfach schlampig geschrieben sind. Ein solcher Student glaubt, dass sein Hauptziel darin besteht, die Fähigkeit zu demonstrieren, solche Probleme grundsätzlich zu lösen. Aber die Umsetzung könnte lahm sein.

Kinder, die in der Schule oder in den ersten Jahren als Programmierer erzogen wurden, bringen ein „sehr schönes Fahrrad“ mit, das allerdings meist nicht sehr effizient asymptotisch arbeitet. Im Gegenteil, sie stellen sich nicht die Aufgabe, gründlich zu theoretisieren und sich auf der Suche nach optimalen Lösungen an Lehrbücher zu wenden, sondern bevorzugen schönen Code.

An verschiedenen Universitäten sehe ich bei Studenteninterviews normalerweise, welche „Schule“ seiner Ausbildung zugrunde liegt. Und ich habe in der Grundbildung fast nie eine perfekte Balance gefunden. Als Kind konnte man sich in meiner Stadt auf Mathematikolympiaden vorbereiten, aber es gab keine Programmierclubs. Jetzt lernen Kinder in Clubs das Programmieren im „modischen“ Go und Python. Daher gibt es auch auf der Ebene der Hochschulzulassung unterschiedliche Ansätze. Ich glaube, dass es wichtig ist, beide Fähigkeiten an einer Universität aufrechtzuerhalten, da sonst entweder ein Spezialist mit unzureichender theoretischer Grundlage oder eine Person, die nicht gelernt hat und keinen guten Code schreiben möchte, zur Arbeit in das Unternehmen kommt.

Wie man die Latte für die Zukunft „aufpumpt“. T-förmige Spezialisten?

So machen Sie das Beste aus einer Informatikausbildung
Es ist klar, dass der Schüler unter solchen Bedingungen einfach das wählt, was ihm am besten gefällt. Der Lehrer vermittelt einfach den Standpunkt, 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 effektiv ist.

  • IT-Horizonte. Ein Absolvent eines Bachelor-Studiengangs in Informatik ist ein fertiger Spezialist mit einer entwickelten technischen Perspektive, der wahrscheinlich sein Profil gewählt hat. Aber im Juniorjahr wissen wir nicht, was er oder sie tun wird. Er kann in die Wissenschaft oder Analytik gehen oder im Gegenteil jeden Tag eine riesige Menge Code schreiben. Daher müssen dem Studenten alle Aspekte der Arbeit im IT-Bereich gezeigt und an alle Tools herangeführt werden. Idealerweise weisen Lehrkräfte aus theoretischen Studiengängen einen Bezug zur Praxis auf (und umgekehrt).
  • Wachstumspunkt. Es liegt im Interesse des Studierenden selbst, sich keine Extreme zu erlauben. Es ist nicht schwer zu verstehen, ob Sie ein „Mathematiker“ oder ein „Programmierer“ sind. Es genügt, beim Lösen eines Problems auf den ersten Impuls zu hören: Was möchten Sie tun – im Lehrbuch nach dem optimalen Ansatz suchen oder ein paar Funktionen schreiben, die später bestimmt nützlich sein werden? Auf dieser Grundlage können Sie einen weiteren ergänzenden Verlauf Ihres Lernens aufbauen.
  • Alternative Wissensquellen. Es kommt vor, dass das Programm gut ausbalanciert ist, aber „Systemprogrammierung“ und „Algorithmen“ werden von völlig unterschiedlichen Leuten unterrichtet, und einige Schüler stehen dem ersten Lehrer näher, andere dem zweiten. Aber selbst wenn Sie den Professor nicht mögen, ist das kein Grund, einige Fächer zugunsten anderer zu vernachlässigen. Bachelors selbst sind daran interessiert, den Willen zu finden, mit Wissensquellen zu arbeiten, und vertrauen auf keinen Fall radikalen Meinungen wie „Mathematik ist die Königin der Wissenschaften, Hauptsache man kennt die Algorithmen“ oder „Guter Code gleicht alles andere aus.“

Sie können Ihr theoretisches Wissen durch den Zugriff auf Fachliteratur und Online-Kurse vertiefen. Ihre Kenntnisse in Programmiersprachen können Sie auf Coursera, Udacity oder Stepik verbessern, wo viele verschiedene Kurse angeboten werden. Außerdem fangen Studierende oft an, sich Hardcore-Sprachkurse anzuschauen, wenn sie das Gefühl haben, dass der Algorithmenlehrer zwar gute Mathematikkenntnisse hat, aber komplexe Implementierungsfragen nicht beantworten kann. Nicht jeder wird mir zustimmen, aber in meiner Praxis hat es sich bestens bewährt Spezialisierung auf C++ von Yandex, in dem immer komplexere Merkmale der Sprache nacheinander analysiert werden. Wählen Sie im Allgemeinen einen Kurs mit guten Bewertungen von renommierten Unternehmen oder Universitäten.

Soft Skills

So machen Sie das Beste aus einer Informatikausbildung
Studenten, die von der Universität kommen, um in einem beliebigen Unternehmen zu arbeiten, von einem Start-up bis hin zu einem großen Konzern, sind selbst von Spitzenuniversitäten schlecht an die reale Arbeitsumgebung angepasst. Tatsache ist, dass Universitäten heutzutage häufig auf Studenten „babysitten“. Auch wenn man viele Vorlesungen verpasst, sich nicht rechtzeitig auf Prüfungen vorbereitet, verschlafen hat oder zu spät zu einer Prüfung kommt, kann jeder die Prüfung bestehen und noch einmal absolvieren – und am Ende trotzdem ein Diplom erhalten.

Heute sind jedoch alle Voraussetzungen gegeben, um Studierende auf das Erwachsenenleben und die selbstständige Berufstätigkeit vorzubereiten. Sie müssen nicht nur programmieren, sondern auch kommunizieren. Und das muss auch gelehrt werden. Universitäten verfügen über verschiedene Formate zur Entwicklung dieser Fähigkeiten, aber leider wird ihnen oft nicht genügend Aufmerksamkeit geschenkt. Wir haben jedoch viele Möglichkeiten, effektive Teamfähigkeit zu erwerben.

  • Schriftliche Geschäftskommunikation. Leider haben die meisten Absolventen, die die Universität verlassen, keine Ahnung von der Korrespondenzetikette. Die Besonderheit der Kommunikation in Instant Messengern liegt im Austausch von Nachrichten Tag und Nacht sowie in der Verwendung von Konversationsstil und informellem Vokabular. Es wäre jedoch möglich, das schriftliche Sprechen zu trainieren, wenn der Student mit dem Fachbereich und der Universität kommuniziert.

    In der Praxis stehen Führungskräfte häufig vor der Notwendigkeit, ein großes Projekt in kleine Aufgaben zu zerlegen. Dazu müssen Sie jede Aufgabe und ihre Komponenten klar beschreiben, damit Nachwuchsentwickler verstehen, was von ihnen verlangt wird. Eine schlecht definierte Aufgabe führt oft dazu, dass etwas noch einmal gemacht werden muss, weshalb Erfahrung in der schriftlichen Kommunikation den Absolventen bei der Arbeit in verteilten Teams hilft.

  • Schriftliche Präsentation der Ergebnisse Ihrer Arbeit. Um ihre Bildungsprojekte vorzustellen, können Oberstufenschüler Beiträge auf Habr, wissenschaftliche Artikel und auch nur Berichte schreiben. Die Möglichkeiten dafür gibt es viele – an manchen Universitäten beginnt das Studium bereits im zweiten Jahr. Zur Kontrolle können Sie auch Essays nutzen – diese ähneln in der Regel eher einem journalistischen Artikel. Dieser Ansatz wurde bereits an der National Research University Higher School of Economics umgesetzt.

    Wenn ein Unternehmen einen flexiblen Entwicklungsansatz praktiziert, muss es die Ergebnisse seiner Arbeit in kleineren Portionen, dafür aber häufiger präsentieren. Dazu ist es wichtig, die Ergebnisse 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. Mitarbeiter besprechen Ergebnisse und Arbeitsaussichten. Eine erfolgreiche Überprüfung ist der Hauptgrund für Karrierewachstum, Boni beispielsweise bei Microsoft, Acronis oder Yandex. Ja, man kann gut programmieren, aber wenn man „in der Ecke sitzt“, verliert selbst ein cooler Spezialist immer gegen jemanden, der weiß, wie man seinen Erfolg gut präsentiert.

  • Academic Writing. Besondere Erwähnung verdient das wissenschaftliche Schreiben. Für Studierende ist es hilfreich, sich mit den Regeln für das Verfassen wissenschaftlicher Texte, die Verwendung von Argumenten, die Suche nach Informationen in verschiedenen Quellen und die Formatierung von Verweisen auf diese Quellen vertraut zu machen. Es empfiehlt sich, dies auf Englisch zu tun, da es in der internationalen akademischen Gemeinschaft noch viel mehr gute Texte gibt und es für verschiedene Disziplinen bereits etablierte Vorlagen zur Präsentation wissenschaftlicher Ergebnisse gibt. Natürlich sind bei der Erstellung russischsprachiger Publikationen auch wissenschaftliche Schreibfähigkeiten erforderlich, aber es gibt viel weniger Beispiele für gute moderne Artikel auf Englisch. Diese Fähigkeiten können durch einen entsprechenden Kurs erworben werden, der mittlerweile in vielen Bildungsprogrammen enthalten ist.
  • Leitung von Meetings. Die meisten Studierenden wissen nicht, wie sie sich auf Besprechungen vorbereiten, Protokolle führen und Daten verarbeiten sollen. Aber wenn wir diese Fähigkeit im Studium entwickeln, beispielsweise durch die Teilnahme an Teamprojekten, können wir Zeitverschwendung am Arbeitsplatz vermeiden. Dies erfordert eine Betreuung der Projektarbeit der Studierenden, um ihnen beizubringen, wie man Meetings effektiv durchführt. In der Praxis kostet das jedes Unternehmen viel Geld – denn wenn mehrere Leute mit einem hohen Gehalt eine Stunde Arbeitszeit auf einer Kundgebung verbringen, möchte man, dass es dafür auch eine entsprechende Rendite gibt.
  • Öffentliches Reden. Viele Studierende stehen vor der Notwendigkeit, nur während der Verteidigung ihrer Abschlussarbeit öffentlich zu sprechen. Und nicht jeder ist dazu bereit. Ich habe viele Studenten gesehen, die:
    • mit dem Rücken zum Publikum stehen,
    • schwankend, versuchend, die Kommission in die Trance einzuführen,
    • Kugelschreiber, Bleistifte und Zeiger zerbrechen,
    • im Kreis gehen
    • Schau auf den Boden.

    Dies ist normal, wenn eine Person zum ersten Mal auftritt. Aber Sie müssen mit diesem Stress früher anfangen, indem Sie Ihre Studienleistungen in einer freundlichen Atmosphäre unter Ihren Klassenkameraden verteidigen.

    Darüber hinaus ist es in Unternehmen üblich, einem Mitarbeiter die Möglichkeit zu geben, eine Idee vorzuschlagen und dafür eine Förderung, eine Stelle oder ein eigenes Projekt zu erhalten. Aber wenn Sie darüber nachdenken, ist dies derselbe Schutz für Studienleistungen, nur auf einem höheren Niveau. Warum diese nützlichen beruflichen Fähigkeiten nicht schon während des Studiums üben?

Was vermisse ich?

Einer der Gründe für das Schreiben dieses Beitrags war der Artikel: veröffentlicht auf der Website der Staatlichen Universität Tjumen. Der Autor des Artikels konzentriert sich ausschließlich auf die von ausländischen Lehrern festgestellten Mängel russischer Schüler. Die Praxis meiner Lehrtätigkeit an verschiedenen Universitäten zeigt, dass die russische Schul- und Hochschulbildung eine gute Grundlage bietet. Russische Studierende beherrschen Mathematik und Algorithmen und es ist einfacher, mit ihnen eine professionelle Kommunikation aufzubauen.

Bei ausländischen Studierenden hingegen können die Erwartungen an einen Russischlehrer manchmal zu hoch sein. Auf dem Niveau der Grundausbildung in Mathematik ähneln die indischen Studenten, die ich getroffen habe, beispielsweise den russischen. Allerdings mangelt es ihnen manchmal an Fachkenntnissen, wenn sie ihr Grundstudium abschließen. Gute europäische Schüler verfügen wahrscheinlich über weniger fundierte Mathematikkenntnisse auf Schulebene.

Und wenn Sie an einer Universität studieren oder arbeiten, können Sie jetzt an Ihren Kommunikationsfähigkeiten (Ihren eigenen oder denen Ihrer Studierenden) arbeiten, Ihre Grundlagen erweitern und das Programmieren üben. Dafür bietet das russische Bildungssystem alle Möglichkeiten – man muss sie nur richtig nutzen.

Ich würde mich freuen, wenn Sie in den Kommentaren zum Beitrag Ihre Links zu Kursen und Methoden teilen, die zur Ausgewogenheit in der Bildung beitragen, sowie zu anderen Möglichkeiten, Soft Skills während des Studiums an einer Universität zu verbessern.

Source: habr.com

Kommentar hinzufügen