Wie Sie das Beste aus Ihrem Informatikstudium herausholen

Die Mehrheit der modernen Programmierer hat ihre Ausbildung an Hochschulen abgeschlossen. Diese Situation wird sich im Laufe der Zeit Ă€ndern, doch derzeit ist es so, dass talentierte FachkrĂ€fte in IT-Unternehmen nach wie vor aus UniversitĂ€ten kommen. In diesem Beitrag teilt Stanislav Protasov, Direktor fĂŒr Hochschulbeziehungen bei Acronis, seine Sicht auf die Besonderheiten der Hochschulausbildung zukĂŒnftiger Programmierer. Lehrer, Studenten und Personalvermittler finden unter dem Link sogar einige nĂŒtzliche Tipps.

Wie Sie das Beste aus Ihrem Informatikstudium herausholen

Seit ĂŒber zehn Jahren unterrichte ich Mathematik, Algorithmen, Programmiersprachen und maschinelles Lernen an verschiedenen Hochschulen. Heute bin ich neben meiner Position bei Acronis auch stellvertretender Abteilungsleiter fĂŒr Theoretische und Angewandte Informatik an der MFTI. Aus meiner Erfahrung an guten russischen (und nicht nur!) UniversitĂ€ten habe ich einige Beobachtungen zur Vorbereitung von Studenten in computerbezogenen Disziplinen gewonnen.

Die 30-Sekunden-Regel funktioniert nicht mehr.

Ich bin sicher, dass Sie bereits auf die 30-Sekunden-Regel gestoßen sind, die besagt, dass ein Programmierer den Zweck einer Funktion nach einem kurzen Blick auf ihren Code verstehen sollte. Diese Regel wurde lange Zeit etabliert, und seitdem sind viele Betriebssysteme, Programmiersprachen, Hardware und Algorithmen entstanden. Ich schreibe seit 12 Jahren Code, aber vor einiger Zeit habe ich den Quellcode eines Produkts gesehen, das mir auf den ersten Blick wie magische ZaubersprĂŒche vorkam. Heutzutage funktioniert die 30-Sekunden-Regel nicht mehr, wenn man sich nicht in dem jeweiligen Fachgebiet auskennt. In diesem Fall reichen nicht einmal 30, sondern 300 Sekunden nicht aus, um herauszufinden, was was ist.

Wenn Sie beispielsweise Treiber schreiben möchten, mĂŒssen Sie in dieses Gebiet eintauchen und Tausende von Zeilen spezifischen Codes lesen. Mit diesem Ansatz des Lernens entwickelt der Fachmann ein "Flow-GefĂŒhl". Wie im Rap, wo das GefĂŒhl fĂŒr gute Reime und den richtigen Rhythmus ohne spezielle Rationalisierung aufkommt. So kann auch ein gut vorbereiteter Programmierer ineffizienten oder einfach schlechten Code leicht erkennen, ohne tief in die Details einzutauchen, wo der Stil verletzt wurde oder ein suboptimaler Ansatz verwendet wurde (aber es kann ziemlich schwierig sein, dieses GefĂŒhl zu erklĂ€ren).

Spezialisierung und 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 ist es wichtig, einen breiten Horizont zu erwerben. SpĂ€ter, im Masterstudium oder im Beruf, muss man sich dann einige Zeit mit den Problemen und der Spezifika des Themenfeldes auseinandersetzen, den Slang, Programmiersprachen und den Code der Kollegen studieren sowie Artikel und BĂŒcher lesen. Ich glaube, nur so kann man mit Hilfe der UniversitĂ€t "die Stange aufladen" fĂŒr die Zukunft. T-förmige Spezialisten.

Welche Programmiersprache sollte an UniversitÀten gelehrt werden?

Wie Sie das Beste aus Ihrem Informatikstudium herausholen
Zu meiner Freude haben die UniversitĂ€tsdozenten bereits aufgehört, nach der richtigen Antwort auf die Frage zu suchen: 'Worauf sollte man besser programmieren?'. Die Debatten, ob C# oder Java, Delphi oder C++ die bessere Wahl ist, sind praktisch zum Erliegen gekommen. Das Aufkommen zahlreicher neuer Programmiersprachen und das Sammeln von pĂ€dagogischen Erfahrungen haben dazu gefĂŒhrt, dass in der akademischen Welt das VerstĂ€ndnis gewachsen ist, dass jede Sprache ihre eigene Nische hat.

Das Problem der Lehre mit der einen oder anderen Programmiersprache hat an PrioritĂ€t verloren. Es ist nicht wichtig, in welcher Sprache der Kurs gehalten wird. Entscheidend ist die Ausdruckskraft der Sprache. Das Buch “The Art of Multiprocessor Programming” ist ein gutes Beispiel fĂŒr diese Beobachtung. In dieser bereits als klassisch geltenden Ausgabe sind alle Beispiele in Java — einer Sprache ohne Zeiger, aber mit Garbage Collector — angegeben. Es wird wohl niemand bestreiten, dass Java weit von der idealen Wahl fĂŒr das Schreiben von leistungsstarkem, parallel auszufĂŒhrendem Code entfernt ist. Doch um die in dem Buch dargelegten Konzepte zu erklĂ€ren, erwies sich die Sprache als geeignet. Ein weiteres Beispiel ist — Klassischer Kurs fĂŒr maschinelles Lernen Unterricht von Andrew Ng, angeboten in Matlab in der Umgebung von Octave. Heute könnte man eine andere Programmiersprache wĂ€hlen, aber was spielt das schon fĂŒr eine Rolle, wenn die Ideen und AnsĂ€tze wichtig sind?

Praktischer und nÀher an der RealitÀt

In den letzten Jahren gab es an den UniversitĂ€ten einen deutlichen Anstieg der praktischen FachkrĂ€fte. WĂ€hrend frĂŒher die russischen Hochschulprogramme oft kritisiert wurden, weil sie von der RealitĂ€t abgekoppelt waren, kann man heute das Gleiche ĂŒber die IT-Ausbildung nicht mehr sagen. Vor zehn Jahren waren an den UniversitĂ€ten fast keine Dozenten mit praktischer Berufserfahrung in der Industrie. Heute ĂŒbernehmen immer hĂ€ufiger IT-Profis, die nicht angestellte Dozenten fĂŒr Informatik sind, die Lehrveranstaltungen an den Fachbereichen – sie lehren in ihrer Freizeit, abseits ihrer HauptbeschĂ€ftigung, oft nur 1-2 Kurse. Dieser Ansatz bewĂ€hrt sich hinsichtlich der qualitativ hochwertigen Ausbildung und der Aktualisierung der LehrplĂ€ne und ist natĂŒrlich auch wichtig fĂŒr die Suche nach potenziellen Mitarbeitern im Unternehmen. Ich denke, es ist kein Geheimnis, dass wir die Grundabteilung am MIPT unterstĂŒtzen und Beziehungen zu anderen Hochschulen aufbauen, unter anderem um Studenten auszubilden, die ihre Karriere bei Acronis beginnen könnten.

Mathematiker oder Programmierer?

Wie Sie das Beste aus Ihrem Informatikstudium herausholen
Die frĂŒheren Auseinandersetzungen rund um Programmiersprachen haben sich zu philosophischen Diskussionen entwickelt. Nun streiten sich die sogenannten „Programmierer“ und „Mathematiker“ miteinander. Diese beiden Schulen könnten grundsĂ€tzlich in zwei Bildungsprogramme unterteilt werden, aber die Branche trennt solche Nuancen immer noch schlecht, und von Hochschule zu Hochschule erhalten wir eine Ă€hnliche Ausbildung mit leichten verschiedenen Schwerpunkten. Das bedeutet, dass sowohl der Student als auch die Firma, in der er spĂ€ter arbeiten wird, den Wissens-Puzzle mit fehlenden Teilen ergĂ€nzen mĂŒssen.

Das Erscheinen von Praktikern in den Hochschulen, die industriellen Code in verschiedenen Programmiersprachen schreiben, vermittelt den Studenten qualitativ hochwertigere EntwicklungsfÀhigkeiten. Da sie gut mit den Implementierungen der Standardbibliotheken, Frameworks und Programmiertechniken vertraut sind, vermitteln die praktizierenden Programmierer den Studenten das Streben, guten Code zu schreiben und dies schnell und qualitativ zu tun.

Dieses nĂŒtzliche Können fĂŒhrt jedoch manchmal dazu, dass Hobbyisten das Rad neu erfinden. Studenten-Programmierer denken sich: „Was hindert mich daran, noch 200 Zeilen guten Codes zu schreiben, die das gestellte Problem direkt lösen?“

Lehrer mit klassischer mathematischer Ausbildung (zum Beispiel Mathematik oder angewandte Mathematik) arbeiten hĂ€ufiger in akademischen Umfeldern oder im Bereich der Datenmodellierung und -analyse. Mathematiker betrachten Probleme in der Informatik anders. Sie arbeiten primĂ€r mit Algorithmen, Theoremen und formalen Modellen und weniger mit Code. Ein wichtiger Vorteil des mathematischen Ansatzes ist das klare, prinzipielle VerstĂ€ndnis dafĂŒr, was lösbar ist und was nicht, sowie die Methoden zur Lösung.

Entsprechend vermitteln MathematikpĂ€dagogen das Programmieren mit einer theoretischen Ausrichtung. Studierende, die von Mathematikern kommen, schlagen oft gut durchdachte und theoretisch ĂŒberlegene Lösungen vor, die jedoch in der Regel aus sprachlicher Sicht suboptimal und oftmals einfach unordentlich sind. Solche Studierenden glauben, dass es ihr Hauptziel ist, ihre FĂ€higkeit zu demonstrieren, solche Aufgaben grundsĂ€tzlich zu lösen. Die Umsetzung kann jedoch mangelhaft sein.

Die Studenten, die an Schulen oder in den ersten Semestern von Programmierern geprĂ€gt wurden, bringen oft ein „sehr schönes Rad“ mit, das jedoch in der Regel asymptotisch nicht besonders effizient funktioniert. Im Gegensatz dazu haben sie es nicht eilig, tief theoretisch zu denken oder LehrbĂŒcher nach optimalen Lösungen zu durchsuchen, sondern bevorzugen schönen Code.

Bei VorstellungsgesprĂ€chen an verschiedenen Hochschulen merke ich oft, welche „Schule“ die Grundlage ihrer Ausbildung bildet. Ich habe kaum eine perfekte Balance in der Grundausbildung erlebt. In meiner Kindheit konnte man in meiner Stadt auf die olympische Mathematik hinarbeiten, aber Programmierclubs gab es nicht. Jetzt lernen Kinder in Clubs „moderne“ Sprachen wie Go und Python. Daher gibt es schon bei der Aufnahme an UniversitĂ€ten Unterschiede in den AnsĂ€tzen. Ich halte es fĂŒr wichtig, dass an der UniversitĂ€t beide FĂ€higkeiten gefördert werden, sonst kommt entweder ein Spezialist mit unzureichender theoretischer Basis ins Unternehmen oder jemand, der nicht gelernt hat oder nicht bereit ist, guten Code zu schreiben.

Wie kann man tatsĂ€chlich die "Stange" fĂŒr zukĂŒnftige T-shaped Spezialisten "trainieren"?

Wie Sie das Beste aus Ihrem Informatikstudium herausholen
In solchen FÀllen wÀhlt der Student oft das, was ihm am besten gefÀllt. Der Dozent hingegen vermittelt lediglich eine Sichtweise, die ihm nÀher steht. Alle profitieren jedoch davon, wenn der Code sowohl schön geschrieben ist als auch in Bezug auf Algorithmen klar, fundiert und effizient ist.

  • IT-Horizont. Ein Bachelor-Absolvent im Bereich Computer Science ist bereits ein kompetenter Fachmann mit einem entwickelten technischen VerstĂ€ndnis, der vermutlich seinen Schwerpunkt gewĂ€hlt hat. Doch in den ersten Semestern wissen wir nicht, welchem Weg er oder sie folgen wird. Vielleicht geht es in die Wissenschaft oder in die Analyse, oder man wird jeden Tag eine große Menge Code schreiben. Daher ist es wichtig, dem Studenten alle Aspekte der IT-Welt zu zeigen und mit allen Tools vertraut zu machen. Ideal wĂ€re es, wenn die Dozenten in den theoretischen Kursen die Verbindung zur Praxis aufzeigen (und umgekehrt).
  • Entwicklungspunkt. Vermeiden Sie extreme Ansichten – im Interesse der Studierenden selbst. Es ist nicht schwer zu erkennen, ob Sie „Mathematiker“ oder „Programmierer“ sind. Hören Sie einfach auf Ihren ersten Impuls, wenn Sie ein Problem lösen: Was möchten Sie tun – im Lehrbuch nach dem besten Ansatz suchen oder ein paar Funktionen schreiben, die Ihnen spĂ€ter nĂŒtzlich sein werden? Auf dieser Grundlage können Sie Ihren weiteren, komplementĂ€ren Bildungsweg gestalten.
  • Alternative Wissensquellen. Manchmal ist das Programm gut ausgewogen, aber „Systemprogrammierung“ und „Algorithmen“ werden von völlig unterschiedlichen Personen unterrichtet. Einige Studierende fĂŒhlen sich mehr zum ersten Dozenten hingezogen, andere zum zweiten. Aber selbst wenn Ihnen der Professor nicht gefĂ€llt, ist das kein Grund, einige FĂ€cher zu vernachlĂ€ssigen zugunsten anderer. Die Studierenden selbst sind daran interessiert, den Willen zu finden, mit Wissensquellen zu arbeiten, und sollten in keinem Fall radikalen Meinungen vertrauen, wie etwa „Mathematik ist die Königin der Wissenschaften, das Wichtigste sind die Algorithmen“ oder „guter Code kompensiert alles andere“.

Vertiefen Sie Ihr Wissen in der Theorie, indem Sie sich auf Fachliteratur und Online-Kurse konzentrieren. Ihre Programmierkenntnisse können Sie beispielsweise auf Coursera, Udacity oder Stepik verbessern, wo eine Vielzahl verschiedener Kurse angeboten wird. Außerdem neigen Studierende dazu, sich intensiv mit harten Kursen zu beschĂ€ftigen, wenn sie das GefĂŒhl haben, dass der Algorithmus-Dozent gut in Mathe ist, jedoch bei komplexen Fragen zur Implementierung nicht weiterhelfen kann. Nicht jeder wird meiner Meinung zustimmen, aber in meiner Erfahrung hat sich das bewĂ€hrt. die C++-Spezialisierung von Yandex, die schrittweise immer komplexere Funktionen der Sprache behandelt. Insgesamt sollten Sie einen Kurs mit hohen Bewertungen von anerkannten Unternehmen oder UniversitĂ€ten wĂ€hlen.

Soft Skills

Wie Sie das Beste aus Ihrem Informatikstudium herausholen
Wenn Absolventen von Hochschulen in Unternehmen – sei es ein Startup oder ein großes Unternehmen – eintreten, sind selbst die Studierenden der renommiertesten UniversitĂ€ten oft schlecht auf die reale Arbeitswelt vorbereitet. Der Grund dafĂŒr ist, dass Hochschulen heutzutage sehr nachsichtig mit den Studierenden sind. Selbst wenn sie zahlreiche Kurse versĂ€umen, nicht rechtzeitig fĂŒr PrĂŒfungen lernen oder zu spĂ€t zu Klausuren kommen, können sie dennoch bestehen und gegebenenfalls wiederholen – und am Ende trotzdem ihr Diplom erhalten.

Dennoch gibt es heute alle Voraussetzungen, um Studierende auf das Erwachsenenleben und die selbststĂ€ndige BerufstĂ€tigkeit vorzubereiten. Sie mĂŒssen nicht nur programmieren, sondern auch kommunizieren. Und auch dies muss gelehrt werden. An Hochschulen gibt es verschiedene Formate zur Förderung dieser FĂ€higkeiten, aber leider wird oft nicht genĂŒgend Aufmerksamkeit darauf gelegt. Dennoch bieten wir zahlreiche Möglichkeiten, um FĂ€higkeiten fĂŒr eine effektive Teamarbeit zu erlangen.

  • GeschĂ€ftliche schriftliche Kommunikation. Leider haben die meisten Absolventen am Ende ihres Studiums keine Ahnung von den Gepflogenheiten der schriftlichen Kommunikation. Die Besonderheiten der Kommunikation in Messenger-Diensten, das Versenden von Nachrichten in der Nacht und am Tag sowie die Verwendung umgangssprachlicher und informeller AusdrĂŒcke sind hierbei entscheidend. Dennoch könnte man die schriftliche Ausdrucksweise durch die Kommunikation zwischen Studierenden und der FakultĂ€t sowie der UniversitĂ€t trainieren.

    In der Praxis sehen sich Manager oft mit der Notwendigkeit konfrontiert, ein großes Projekt in kleinere Aufgaben zu zerlegen. Dazu ist es wichtig, jede Aufgabe und ihre Komponenten gut zu beschreiben, damit die Junior-Entwickler verstehen, was von ihnen erwartet wird. Schlecht formulierte Aufgaben fĂŒhren hĂ€ufig dazu, dass etwas ĂŒberarbeitet werden muss, weshalb Erfahrung in der schriftlichen Kommunikation Absolventen hilft, in verteilten Teams zu arbeiten.

  • Schriftliche PrĂ€sentation der Ergebnisse Ihrer Arbeit. Um ihre Studienprojekte zu prĂ€sentieren, können Studierende im fortgeschrittenen Semester BeitrĂ€ge auf Habrahabr verfassen, wissenschaftliche Artikel oder einfach Berichte erstellen. DafĂŒr gibt es viele Möglichkeiten – bereits im zweiten Studienjahr beginnen in einigen Hochschulen die ersten Projektarbeiten. Essays können ebenfalls als Kontrollform eingesetzt werden – sie sind in der Regel in ihrer Form nĂ€her an einem publizistischen Artikel. Dieser Ansatz wird bereits an der Nationalen ForschungsuniversitĂ€t Higher School of Economics umgesetzt.

    Wenn ein Unternehmen einen flexiblen Ansatz in der Entwicklung verfolgt, muss man die Ergebnisse seiner Arbeit in kleineren Portionen, dafĂŒr aber hĂ€ufiger prĂ€sentieren. Daher ist es wichtig, die Resultate eines einzelnen Spezialisten oder des gesamten Teams prĂ€gnant zu kommunizieren. Heute finden in vielen Unternehmen regelmĂ€ĂŸig „Reviews“ statt – jĂ€hrliche oder halbjĂ€hrliche. Die Mitarbeiter diskutieren die Ergebnisse und Perspektiven der Arbeit. Ein erfolgreiches Review ist der Hauptgrund fĂŒr Karrierefortschritt und Boni, beispielsweise bei Microsoft, Acronis oder Yandex. Ja, Sie können gut programmieren, aber „im Verborgenen“ zu sitzen, bedeutet, dass selbst ein hervorragender Spezialist immer demjenigen unterlegen ist, der es versteht, seinen Erfolg gut zu prĂ€sentieren.

  • Academic Writing. Besonders hervorzuheben ist das akademische Schreiben. FĂŒr Studierende ist es nĂŒtzlich, sich mit den Regeln fĂŒr das Verfassen wissenschaftlicher Texte, der Verwendung von Argumenten, der Recherche in verschiedenen Quellen und der korrekten Zitierung dieser Quellen vertraut zu machen. Es ist ratsam, dies auf Englisch zu tun, da im internationalen akademischen Raum weitaus mehr qualitativ hochwertige Texte vorhanden sind und in verschiedenen Disziplinen bereits etablierte Vorlagen fĂŒr die PrĂ€sentation wissenschaftlicher Ergebnisse existieren. NatĂŒrlich sind FĂ€higkeiten im akademischen Schreiben auch bei der Vorbereitung russischsprachiger Publikationen erforderlich, jedoch gibt es deutlich weniger Beispiele fĂŒr gute moderne Artikel in Englisch. Diese FĂ€higkeiten können im Rahmen eines entsprechenden Kurses erworben werden, der mittlerweile in viele Bildungsprogramme integriert ist.
  • DurchfĂŒhrung von Meetings. Die meisten Studierenden wissen nicht, wie sie Meetings vorbereiten, Protokolle fĂŒhren und Daten verarbeiten. Wenn wir jedoch diese FĂ€higkeiten an der UniversitĂ€t entwickeln, zum Beispiel durch die Teilnahme an Gruppenprojekten, können wir vermeiden, dass am Arbeitsplatz Zeit verschwendet wird. HierfĂŒr ist eine Kontrolle der Projektarbeit der Studierenden notwendig, um sie zu lehren, Meetings effizient zu gestalten. In der Praxis kostet dies jedes Unternehmen viel Geld – denn wenn mehrere hochbezahlte Mitarbeiter eine Stunde ihrer Arbeitszeit in einem Meeting verbringen, möchte man sicherstellen, dass es auch entsprechende Ergebnisse bringt.
  • Öffentliches Sprechen. Viele Studierende sehen sich nur bei der Verteidigung ihrer Abschlussarbeit mit der Notwendigkeit konfrontiert, öffentlich zu sprechen. Und nicht alle sind dafĂŒr vorbereitet. Ich habe viele Studierende gesehen, die:
    • mit dem RĂŒcken zu den Zuhörern stehen,
    • hin und her schwanken, wĂ€hrend sie versuchen, das Komitee in Trance zu versetzen,
    • Stifte, Bleistifte und Pointer zerbrechen,
    • im Kreis laufen,
    • auf den Boden schauen.

    Das ist normal, wenn jemand zum ersten Mal spricht. Aber man sollte frĂŒher mit diesem Stress anfangen zu arbeiten – mit der Verteidigung von Seminararbeiten in einer freundlichen AtmosphĂ€re unter Kommilitonen.

    DarĂŒber hinaus ist es in Unternehmen gĂ€ngige Praxis, Mitarbeitern die Möglichkeit zu geben, Ideen einzubringen, dafĂŒr Finanzierung, eine Position oder ein spezielles Projekt zu erhalten. Überlegt man genauer, Ă€hnelt das der Verteidigung einer Abschlussarbeit, jedoch auf einem höheren Niveau. Warum sollten solche nĂŒtzlichen KarrierefĂ€higkeiten nicht schon wĂ€hrend des Studiums trainiert werden?

Was habe ich ĂŒbersehen?

Einer der AnlĂ€sse fĂŒr diesen Beitrag war ein Artikel, veröffentlicht auf der Website der Tyumen State University. Der Autor des Artikels konzentriert sich ausschließlich auf die MĂ€ngel russischer Studenten, die von auslĂ€ndischen Dozenten festgestellt wurden. Meine Erfahrungen als Lehrender an verschiedenen Hochschulen zeigen, dass das russische Schul- und Hochschulsystem eine solide Grundlage bietet. Russische Studierende verfĂŒgen ĂŒber gute Kenntnisse in Mathematik und Algorithmen, was die professionelle Kommunikation mit ihnen erleichtert.

Im Falle von internationalen Studierenden können die Erwartungen der russischen Dozenten manchmal ĂŒbertrieben sein. Zum Beispiel scheinen indische Studierende im Bereich der grundlegenden Mathematik den russischen Ă€hnlich zu sein. Ihnen fehlt jedoch manchmal spezifisches Wissen, wenn sie ihren Bachelorabschluss machen. Gute europĂ€ische Studierende haben oft eine weniger starke mathematische Ausbildung auf Schulniveau.

Wenn Sie an einer Hochschule studieren oder arbeiten, können Sie bereits jetzt an den kommunikativen FĂ€higkeiten (Ihrer oder der Ihrer Studierenden) arbeiten, Ihre Grundlagen erweitern und Programmieren ĂŒben. Das russische Bildungssystem bietet dafĂŒr alle Möglichkeiten – man muss sie nur richtig nutzen.

Ich wĂŒrde mich freuen, wenn Sie in den Kommentaren zu diesem Beitrag Links zu Kursen und Methoden teilen, die helfen, das Gleichgewicht in der Bildung zu verbessern, sowie andere Möglichkeiten, um Soft Skills wĂ€hrend des Studiums an der Hochschule zu fördern.

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster