Wie kann man aus einem Studenten einen Software-Ingenieur machen?

Hallo! Mein Name ist Denis Dovzhenko und ich führe seit mehreren Jahren technische Interviews mit Kandidaten für die Position des C / C ++ - Software-Ingenieurs. Wenn es im Hauptgespräch mit Kandidaten für Positionen als Senior SW Engineer und höher um Berufserfahrung geht, basiert die Auswahl zukünftiger Praktikanten und Junioren auf dem an der Universität erworbenen Wissen und der Fähigkeit, Probleme des Bildungsniveaus zu lösen. Hier stellt sich heraus, dass sie selbst an führenden technischen Universitäten "nicht das" und "nicht so" unterrichten. Und es wäre schön, sich schon fast in den ersten Trainingstagen auf den Übergang vom Studenten- zum Ingenieurstaat vorzubereiten.

In diesem Artikel werde ich darüber sprechen, wie wir im Entwicklungszentrum von Sankt Petersburg, Dell Technologies, Studenten dabei helfen, sich auf den erfolgreichen Aufstieg auf dem Weg eines Softwareentwicklers vorzubereiten.



Bildung oder wo und wie man studiert?


In der Schule sind wir daran gewöhnt, dass jede Aufgabe die einzig richtige Lösung hat. Am Ende des Abiturjahres haben einige Schüler das Gefühl, dass dies möglicherweise nicht das einzige ist, aber die Kriterien für die Auswahl der Lösung, die für die Bedingungen des Problems am besten geeignet ist, sind noch nicht verstanden. Jedenfalls besteht im Bachelor-Kopf normalerweise das absolute Vertrauen, dass ein Software-Ingenieur nichts anderes als ein ausgebildeter Affe (Codemonkey) ist. Schließlich sind es genau solche Fähigkeiten, die durch Laborarbeit entwickelt werden: die Aufgabe diagonal zu lesen und schnell zu erledigen. Aber welche Art von Schüler wird früher als eine Woche vor der Sitzung mit dem Labor beginnen? Und plötzlich fordern böse Onkel beim Interview von ihm zumindest eine minimale algorithmische Kultur, sprechen über einige „Entwicklungsprozesse“ und zwingen sie, komplizierte Probleme zu lösen ... Es stellt sich heraus,dass der Junior-Schritt für den Junggesellen zu groß ist und der Meister noch nicht genug Status zu haben scheint.

Meiner Meinung nach besteht das Problem darin, dass der Programmierunterricht selbst in IT-Fachgebieten von realen Aufgaben getrennt ist. Im Lehrplan kann die Disziplin als "Programmieren in der Sprache ..." bezeichnet werden, aber in Wirklichkeit ist die Syntax mit weit hergeholten Beispielen im Klassenzimmer lang und langwierig, und die Kunst des Programmierens ist fast nicht vorhanden. Oft wird in Universitätskursen das Verständnis, dass der Code von einem Computer ausgeführt wird, überhaupt nicht vermittelt, aber die Leute werden ihn lesen!

Es kommt häufig vor, dass "Programmieren" isoliert von der Computerhardware studiert wird, die Softwarearchitektur auf Kurse für Senioren verlagert wird und niemand die Fähigkeit hat, die technische Aufgabe zu lesen. Es gibt natürlich Ausnahmen, zum Beispiel den Kurs „Industrielle Programmierung in C ++“, den mein Kollege A.V. Martynov seit mehreren Jahren am St. Petersburg Polytechnic durchführt.



Infolgedessen bemerkte ich während der Interviews und sogar im Code der Teilnehmer von Studentenprojekten oft die Reproduktion von Beispielen „aus einem Lehrbuch“, wenn der Autor einfach nicht über mögliche Einschränkungen nachdenkt. Im Fall von C / C ++ können beispielsweise die meisten älteren Schüler den Unterschied zwischen statischem, dynamisch zugewiesenem und Stapelspeicher nicht klar erklären, und Fragen zur Beziehung zwischen Sprachschlüsselwörtern und Speicherdauer und Verknüpfung erschrecken sie einfach. Bei den Interviews habe ich versucht, Beispiele für Analysen wie das folgende zu nennen (Anmerkung, so einfach wie möglich), aber jetzt mache ich das nicht. Die Erklärung, warum das Aufrufen der Funktion f2 () das Programm mit SEGFAULT zum Absturz bringt, ist für die meisten Schüler weit unverständlich.

#include <iostream>

using namespace std;

extern void populate(int* data, unsigned long size);

const unsigned long ARRAY_SIZE = 2048 * 2048;

int d1 [ARRAY_SIZE];

long f1()
{
  populate(d1, ARRAY_SIZE);
  long ret = 0;
  for (unsigned long i = 0; i < ARRAY_SIZE; ++i) {
    ret += d1[i];
  }
  return ret;
}

long f2()
{
  int d2 [ARRAY_SIZE];
  populate(d2, ARRAY_SIZE);
  long ret = 0;
  for (unsigned long i = 0; i < ARRAY_SIZE; ++i) {
    ret += d2[i];
  }
  return ret;
}

int main()
{
  cout << f1() << endl;
  cout << f2() << endl;
  return 0;
}

Ich glaube, es ist Zeit für Arbeitgeber, Studenten und Hochschulleiter, zu erkennen, dass ein Interessenkonflikt besteht. Um das Bild erheblich zu vereinfachen, kann es auf folgende Aussagen reduziert werden:

  • Der Student möchte ein Minimum an Aufwand, um ein Diplom zu erhalten, und sieht dies als einen unvermeidlichen Schritt auf dem Weg zu einem gut bezahlten Job.
  • Die Bildungseinrichtung möchte durch Haken oder Gauner eine hohe Bewertung erreichen, die eine Vielzahl von Fonds, einschließlich des Lohnfonds der Fakultät, erhöht. Und in den gängigen Methoden für die Bewertung der Berechnung, beispielsweise solche , die Anzeige „Student Beschäftigung“ ist sogar mehr als 2% der Gesamtkosten .
  • Der Arbeitgeber schreit mental: „Ja, Sie beginnen endlich damit, normale Absolventen vorzubereiten, die mehrere Jahre lang nicht umgeschult oder sogar umgeschult werden müssen, um für diese Zeit Mitarbeiter höherer und höherer Ebenen zu beschäftigen.“

Und diese Probleme sind auch an führenden technischen Universitäten sichtbar. Was können wir also über die weniger "beförderten" sagen?


Dell Technologies Day im Büro unseres St. Petersburg Development Center

Auf dem aktuellen Forum " Find IT"Eine unerwartet große Anzahl von Studenten zog es an den Stand von Dell Technologies und erzählte über die folgende Geschichte:" Ich habe in der USE keine exorbitanten Punkte erzielt, war von den hohen Anforderungen der Universitäten an Bewerber für IT-Fachgebiete erschrocken und ging daher zum Zaborostroitelny Institute N. Am Ende des zweiten Jahres wurde mir plötzlich klar dass der Bau von Zäunen nicht mir gehört, bring mich zu den Programmierern. " So wird die Handlung von Isaac Asimovs Roman "Beruf", der vor mehr als einem halben Jahrhundert veröffentlicht wurde, fast buchstäblich reproduziert. Aus der Sicht eines modernen Schülers oder Junior-Schülers ist die dargestellte Welt der Zukunft nahezu perfekt: Es besteht keine Notwendigkeit, Klassen oder Vorlesungen zu besuchen, um Hausaufgaben zu machen. Nur an einem bestimmten Tag, an dem Sie in wenigen Minuten zum Schulungszentrum kommen, werden Informationen vom Spediteur direkt an das Gehirn geschrieben (in der Geschichte werden sie als „Trainingsbänder“ bezeichnet).und Sie können sich entspannen - der Lernprozess ist abgeschlossen.

Ein Fragment der Geschichte "Beruf"
– , , – . – . . , , , -. , . , , , , . ? , , - . .
– ? – . – , ? ?
– . - . . , , , , , . .
– ?
– , , , , , . , , . : « . , ». , : « , , ». , , , . , .

Da es immer noch fantastisch ist, Fähigkeiten sofort in den Kopf des Schülers zu investieren, muss sich der Schüler selbst anstrengen. Auch wenn das Programmieren an der Universität „auf dem Niveau“ unterrichtet wird, muss der Kurs gelernt und nicht „angehört“ werden. Und die Ausbildung an einem Zaunbauinstitut kann sogar helfen, weil es nicht das falsche Gefühl erzeugt, "sie lesen es uns vor, ich weiß alles".

Unternehmen, die an einem Zustrom von qualifiziertem Personal interessiert sind, sollten ihrerseits auch die Verantwortung für die Ausbildung von Studenten übernehmen. Im zweiten Teil des Artikels werde ich am Beispiel des Dell Peters Center für Forschung und Entwicklung in St. Petersburg über verschiedene Programme sprechen, die Schüler und Studenten beim Aufbau einer professionellen Karriere in der IT unterstützen sollen.

Wie können Unternehmen Personal „schmieden“?


Die populäre Weisheit sagt: "Es ist notwendig, ein Kind zu erziehen, während es auf der Bank liegt." Basierend auf dieser Maxime hat Dell Technologies ein mehrstufiges System für die Interaktion mit zukünftigen Ingenieuren entwickelt: von der Ausbildung von Schülern bis zur Teilnahme von Center-Ingenieuren an Kommissionen zum Schutz der Arbeit von Studenten und Absolventen.

Seit 2018 sind wir mit den Organisatoren von IT-Kursen für Digital Banana-Studenten befreundet. Letztes Jahr halfen unsere Ingenieure bei der Durchführung eines Hackathons für Schulkinder, gaben Vorträge und Meisterkurse beim Digital Jungle Festival. Ein weiteres Bildungsprogramm für Schüler, Student STAR, wird international unterstützt. Das achte Jahr der Teilnahme unseres Entwicklungszentrums an diesem Programm ist bereits vorbei: Jährlich im Juni tauchen etwa 30 Absolventen der 10. Klasse der Physikschulen für eine Woche in die Welt des Software Engineering ein. Und wenn es zu früh ist, um über die messbaren Ergebnisse der Zusammenarbeit mit Digital Banana zu sprechen, dann sehen wir bereits Absolventen des Student STAR der vergangenen Jahre unter Studenten führender technischer Universitäten.

Die Suche nach vielversprechenden zukünftigen Ingenieuren geht unter Neulingen weiter. In Zusammenarbeit mit der Leonard Euler Foundation an sechs mit dem Dell Technologies-Partnernetzwerk verbundenen Universitäten (Polytech, SPbSU, ITMO, LETI, SUAI, PSUPS) wird die erste Sitzung an die besten Studenten mit einem personalisierten „Successful Freshman Scholarship“ vergeben. Im zweiten Jahr haben die Stipendiaten die Möglichkeit, an einem Mentoring-Programm teilzunehmen. Ein Artikel darüber wurde übrigens vor einigen Jahren in diesem Blog auf Habré veröffentlicht . Ich kann nur hinzufügen, dass auf den Fotos der letzten Jahre dieselben Gesichter wieder zu sehen sind - viele unserer Mentee haben die Universität erfolgreich abgeschlossen, wurden Mitarbeiter von Dell Technologies und kehrten nun als Mentoren, Lehrer und Kuratoren zum Mentoring-Programm zurück.


, , .

Die nächste Stufe ist das „Programm gemeinsamer Studentenprojekte“, das den Studenten die Möglichkeit gibt, direkt an der Universität am F & E-Projekt teilzunehmen. Und es ist überhaupt nicht notwendig, dass alle Teilnehmer an einem solchen Projekt Studenten derselben Universität sind, sondern Studenten anderer - sogar bedingter "Zaunbau" -Universitäten können sich ihnen anschließen. Aufgaben für gemeinsame Projekte stammen bereits aus unserem eigentlichen Rückstand, von denen, die ich für das Projekt erledigen möchte, aber es besteht eine hohe Wahrscheinlichkeit, dass sie unter dem Druck vorrangigerer Aufgaben "für später" verschoben werden. In einem gemeinsamen Projekt übernimmt ein Mitarbeiter der Universität die Rolle des Teamleiters, und unsere Ingenieure fungieren als Kunden. Zusätzliche Vorteile der Teilnahme an einem gemeinsamen Studentenprojekt sind, dass leistungsfähige Studenten in erster Linie als Kandidaten für die Position des Praktikanten angesehen werden.Die Ergebnisse gemeinsamer Projekte können als Material für Hausarbeiten oder Dissertationen verwendet werden.

Die Geschichte gemeinsamer Projekte mit Universitäten hat sicherlich viele erfolgreiche Fälle. Beispielsweise begann die Entwicklung eines der Dienstprogramme für Unity Storage als gemeinsames Projekt mit SUAI. Es gab auch einen merkwürdigen Fall, in dem sich das Mandat für ein gemeinsames Projekt für ITMO-Studierende im dritten Studienjahr als zu kompliziert herausstellte (ich versuche, einen Teil der Verantwortung als einer der Kuratoren dieses Projekts von mir zu nehmen), aber die Teilnehmer, die bis zum Finale blieben, konnten ihre Fähigkeit unter Beweis stellen, mit Schwierigkeiten und praktisch umzugehen in voller Kraft wurden unsere Praktikanten. Jetzt sind sie bereits vollwertige Ingenieure.

Ingenieure von Dell Technologies, die sich nach einem gemeinsamen Studentenprojekt unserem Team angeschlossen haben: Anastasia Zinner, Nikita Tyukachev, Vladislav Alekseev

Die Universitäten beginnen, Studenten dazu anzuregen, auf jede erdenkliche Weise an realen Projekten für Studenten im dritten bis vierten Studienjahr teilzunehmen (wir erinnern uns, dass Stimulus ein spitzer Stock ist, mit dem im alten Rom vorgespannte Bullen getrieben wurden). Zu diesem Zeitpunkt taucht im Kopf eines durchschnittlichen Schülers das Zauberwort „Praktikum“ auf, das die Umwandlung der Puppe in einen Schmetterling eines Schülers in einen Ingenieur sofort und automatisch abschließen sollte. Ein weiterer Übergang, der keine zusätzlichen Anstrengungen erfordert (außer sich für ein Praktikum zu bewerben), ist so fantastisch wie von Isaac Asimov beschrieben. Im wirklichen Leben gibt es keine sofortigen Veränderungen, ein Praktikum ist ein langer Prozess. Bei Dell Technologies spielen Praktikanten tatsächlich die Rolle von Junioren, und innerhalb von sechs Monaten bis zu einem Jahr werden sie zu Praktikanten, bevor sie Vollzeitmitarbeiter des Unternehmens werden.

Offensichtlich erhalten Teilnehmer am Mentoring-Programm und an gemeinsamen Studentenprojekten bestimmte Vorteile bei der Einstellung für eine Praktikumsstelle. Zumindest erhalten sie als erste Informationen über offene Positionen von ihren Mentoren oder Projektkuratoren. Und in Interviews sehen wir, dass sich Teilnehmer an Studentenprogrammen normalerweise als stärkere Kandidaten herausstellen. Auf der anderen Seite werden wir Kandidaten, die das Studentenprojekt nicht bestanden haben, nicht die Türen schließen.

Außerhalb des Umfangs dieses Artikels gibt es viele andere Möglichkeiten, mit Schülern zu interagieren. Zum Beispiel Vorlesungen in Studentenforen oder regelmäßig stattfindende „Technologietage“ in unserem Büro, an denen jeder teilnehmen kann. Angesichts der aktuellen Situation auf dem Arbeitsmarkt müssen Unternehmen Zeit und Geld für die Schulung von Personal innerhalb oder außerhalb des Unternehmens aufwenden. Ich möchte glauben, dass unser Handeln es uns nicht nur ermöglicht, qualifizierte Spezialisten auf uns vorzubereiten, sondern auch zum Wachstum der Ingenieure und zur Entwicklung der gesamten Branche beiträgt.

Der Autor des Materials ist Denis Dovzhenko, Senior Principal Engineer für Software.

All Articles