Comment évoluer d'un étudiant ingénieur logiciel?

salut! Je m'appelle Denis Dovzhenko et depuis plusieurs années je mène des entretiens techniques avec des candidats au poste d'ingénieur logiciel C / C ++. Si la conversation principale avec les candidats aux postes d'ingénieur SW principal et au-dessus concerne l'expérience de travail, la sélection des futurs stagiaires et juniors est basée sur les connaissances acquises à l'université et la capacité à résoudre des problèmes académiques du même niveau. C'est ici qu'il s'avère que même dans les grandes universités techniques, ils enseignent «pas ça» et «pas ainsi». Et ce serait bien de commencer à préparer la transition de l'état étudiant à l'état d'ingénieur presque dès les premiers jours de formation.

Dans cet article, je parlerai de la façon dont nous, au Centre de développement de Saint-Pétersbourg, Dell Technologies, aidons les étudiants à se préparer à un avancement réussi sur la voie d'un ingénieur logiciel.



L'éducation, ou où et comment étudier?


À l'école, nous sommes habitués au fait que chaque tâche a la seule bonne solution. À la fin du baccalauréat, certains élèves ont le sentiment que ce n'est peut-être pas le seul, mais les critères de choix de la solution la plus adaptée aux conditions du problème ne sont pas encore compris. Quoi qu'il en soit, dans la tête du célibataire, il y a généralement une confiance absolue qu'un ingénieur logiciel n'est rien de plus qu'un singe formé (codemonkey). Après tout, ce sont précisément ces compétences qui sont développées par le travail en laboratoire: lire la tâche en diagonale et la remplir rapidement. Mais quel type d'étudiant commencera à faire des laboratoires plus d'une semaine avant la session? Et tout d'un coup, lors de l'interview, les oncles maléfiques lui demandent au moins une culture algorithmique minimale, parlent de certains "processus de développement", les forcent à résoudre des problèmes complexes ... Il s'avère,que l'étape junior pour le baccalauréat est trop grande et que le maître ne semble pas déjà avoir assez de statut.

À mon avis, le problème est que, même dans les spécialités informatiques, l'enseignement de la programmation est dissocié des tâches réelles. Dans le programme d'études, la discipline peut être appelée "Programmation dans la langue ...", mais en réalité, en classe, la syntaxe avec des exemples farfelus est longue et fastidieuse, et l'art de la programmation n'est presque pas là. Souvent dans les cours universitaires, comprendre que le code sera exécuté par un ordinateur n'est pas du tout posé, mais les gens le liront!

Il arrive souvent que la "programmation" soit étudiée indépendamment du matériel informatique, l'architecture logicielle est déplacée vers des cours supérieurs, et personne ne dérange avec la capacité de lire la tâche technique. Il y a, bien sûr, des exceptions, par exemple, le cours «Programmation industrielle en C ++», que mon collègue A.V. Martynov dirige au Polytechnique de Saint-Pétersbourg depuis plusieurs années.



En conséquence, lors des entretiens, et même dans le code rédigé par les participants aux projets étudiants, j'ai souvent remarqué la reproduction d'exemples «à partir d'un manuel» lorsque l'auteur ne pense tout simplement pas aux limites possibles. Par exemple, dans le cas du C / C ++, la plupart des étudiants, même les plus avancés, ne sont pas en mesure d'expliquer clairement la différence entre la mémoire statique, allouée dynamiquement et la mémoire de pile, et les questions sur la relation des mots-clés de langage avec la durée de stockage et la liaison les terrifient simplement. Lors des entretiens, j'ai essayé de donner des exemples d'analyses comme celle ci-dessous (note, aussi simple que possible), mais maintenant je ne fais pas ça. L'explication de pourquoi appeler la fonction f2 () fait planter le programme avec SEGFAULT est pour la plupart des étudiants bien au-delà de la compréhension.

#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;
}

Je pense qu'il est temps que les employeurs, les étudiants et les dirigeants universitaires reconnaissent qu'il y a un conflit d'intérêts. Pour simplifier considérablement l'image, elle peut être réduite aux déclarations suivantes:

  • L'étudiant souhaite un minimum d'efforts pour obtenir un diplôme et considère cela comme une étape inévitable sur la voie d'un emploi bien rémunéré.
  • L'établissement d'enseignement souhaite à coup sûr ou par escroc obtenir une note élevée, ce qui augmente une variété de fonds, y compris le fonds salarial de la faculté. Et dans les méthodes communes pour le calcul de la note, par exemple, par exemple , l'indicateur « emploi étudiant » est autant que 2% du total.
  • L'employeur crie mentalement «oui, vous commencez enfin à préparer des diplômés normaux qui n'ont pas besoin de se recycler pendant plusieurs années, ni même de se recycler, en dépensant ce temps des employés de niveau supérieur et supérieur».

Et ces problèmes sont visibles même dans les grandes universités techniques, alors que dire des moins «promus»?


Journée des technologies Dell au bureau de notre centre de développement de Saint-Pétersbourg

Lors du récent forum " Find IT"Un nombre étonnamment élevé d'étudiants ont été attirés par le stand Dell Technologies, racontant l'histoire suivante:" Je n'ai pas marqué de points exorbitants à l'examen d'État unifié, j'ai été effrayé par les exigences élevées des universités pour les candidats dans les spécialités informatiques, et je suis donc allé au Zaborostroitelny Institute N. À la fin de la deuxième année, j'ai soudain réalisé que la construction de clôtures n'est pas la mienne, emmenez-moi chez les programmeurs. " Ainsi, l'intrigue du roman d'Isaac Asimov «Profession», publié il y a plus d'un demi-siècle, est presque littéralement reproduite. Du point de vue d'un écolier moderne ou d'un étudiant junior, le monde représenté de l'avenir est presque parfait: il n'est pas nécessaire d'assister à des cours ou à des conférences pour faire ses devoirs. Juste un certain jour, vous arrivez au centre de formation, en quelques minutes, les informations du transporteur sont écrites directement dans le cerveau (elles sont appelées «bandes d'entraînement» dans l'histoire),et vous pouvez vous détendre - le processus d'apprentissage est terminé.

Un fragment de l'histoire "Profession"
– , , – . – . . , , , -. , . , , , , . ? , , - . .
– ? – . – , ? ?
– . - . . , , , , , . .
– ?
– , , , , , . , , . : « . , ». , : « , , ». , , , . , .

Comme investir instantanément des compétences dans la tête de l'élève est toujours fantastique, l'élève devra faire un effort par lui-même. Même si la programmation est enseignée «au niveau» à l'université, le cours doit être appris et non «écouté». Et la formation dans un institut de construction de clôtures peut même aider, car cela ne crée pas un faux sentiment de «ils nous l'ont lu, je sais tout».

De leur côté, les entreprises intéressées par un afflux de personnel qualifié devraient également prendre en charge la formation des étudiants. Dans la deuxième partie de l'article, je parlerai de plusieurs programmes pour soutenir les écoliers et les étudiants dans la construction d'une carrière professionnelle en informatique en utilisant l'exemple du Centre des technologies Dell R&D de Saint-Pétersbourg.

Comment les entreprises peuvent-elles «forger» du personnel?


La sagesse populaire dit: "Il est nécessaire d'élever un enfant pendant qu'il est allongé sur le banc." Sur la base de cette maxime, Dell Technologies a développé un système en plusieurs étapes pour interagir avec les futurs ingénieurs: de la formation des lycéens à la participation des ingénieurs du Centre aux commissions de protection des travaux de premier cycle et de maîtrise.

Depuis 2018, nous sommes amis avec les organisateurs de cours d'informatique pour les étudiants de Digital Banana. L'année dernière, nos ingénieurs ont aidé à organiser un hackathon pour les écoliers, donné des conférences et des master classes au Digital Jungle Festival. Un autre programme éducatif pour les élèves du secondaire, Student STAR, est soutenu à l'échelle internationale. La huitième année de participation de notre Centre de développement à ce programme est déjà terminée: chaque année en juin, environ 30 diplômés de la 10e année des écoles de physique sont plongés pendant une semaine dans le monde du génie logiciel. Et s'il est trop tôt pour parler des résultats mesurables de la coopération avec Digital Banana, alors nous voyons déjà des diplômés de Student STAR des années passées parmi les étudiants des meilleures universités techniques.

La recherche de futurs ingénieurs prometteurs se poursuit parmi les étudiants de première année. En collaboration avec la Fondation Leonard Euler de six universités affiliées au réseau d'affiliation Dell Technologies (Polytech, SPbSU, ITMO, LETI, SUAI, PSUPS), la première session est décernée aux meilleurs étudiants avec une «bourse réussie Freshman». Et au cours de la deuxième année, les boursiers auront la possibilité de participer à un programme de mentorat. D'ailleurs, un article à ce sujet a été publié sur ce blog sur Habré il y a plusieurs années . Je peux seulement ajouter que sur les photographies de ces dernières années, les mêmes visages peuvent être vus à nouveau - bon nombre de nos mentorés ont obtenu leur diplôme universitaire avec succès, sont devenus des employés de Dell Technologies et sont maintenant retournés au programme de mentorat déjà dans le rôle de mentors, d'enseignants et de conservateurs.


, , .

L'étape suivante est le «programme de projets étudiants communs», qui donne aux étudiants la possibilité de participer au projet de R&D directement à l'université. Et il n'est pas du tout nécessaire que tous les participants à un tel projet soient des étudiants de la même université; des étudiants d'autres universités - même conditionnelles "de construction de clôtures" peuvent les rejoindre. Les tâches des projets communs sont déjà tirées de notre véritable arriéré, de celles que j'aimerais faire pour le projet, mais il y a une forte probabilité de reporter "pour plus tard" sous la pression de tâches plus prioritaires. Dans un projet commun, le rôle de chef d'équipe est assuré par un employé de l'université, et nos ingénieurs agissent en tant que clients. Les bonus supplémentaires de la participation à un projet étudiant commun sont que les étudiants performants seront principalement considérés comme des candidats pour le poste de stagiaire,et les résultats de projets conjoints peuvent être utilisés comme matériel pour des dissertations ou des dissertations.

L'histoire de projets conjoints avec des universités a connu de nombreux succès. Par exemple, le développement d'un des utilitaires de stockage Unity a commencé comme un projet conjoint avec SUAI. Il y a aussi eu un cas curieux où les termes de référence d'un projet commun se sont avérés trop compliqués pour les étudiants de troisième année de l'ITMO (j'essaie de me décharger d'une partie de la responsabilité, en tant que l'un des commissaires de ce projet), mais les participants qui ont duré jusqu'à la finale ont pu démontrer leur capacité à faire face aux difficultés et pratiquement en pleine force sont devenus nos stagiaires. Maintenant, ce sont déjà des ingénieurs à part entière.

Ingénieurs Dell Technologies qui ont rejoint notre équipe après un projet étudiant commun: Anastasia Zinner, Nikita Tyukachev, Vladislav Alekseev

Les universités commencent à encourager les étudiants de troisième ou quatrième année de premier cycle de toutes les manières possibles à participer à de vrais projets (nous nous souvenons que le stimulus est un bâton pointu qui était utilisé pour conduire des taureaux attelés dans la Rome antique). C’est alors que dans la tête de l’étudiant moyen apparaît le mot magique «stage», qui devrait instantanément et automatiquement achever la transformation de la chrysalide en papillon d’un étudiant en ingénieur. Une autre transition qui ne nécessite aucun effort supplémentaire (en plus de postuler à un stage) est aussi fantastique que celle décrite par Isaac Asimov. Dans la vraie vie, il n'y a pas de transformations instantanées; le stage est un long processus. Chez Dell Technologies, les stagiaires jouent en fait le rôle de juniors, et dans les six mois à un an, ils grandissent dans le rôle de stagiaire avant de devenir un employé à temps plein de l'entreprise.

De toute évidence, les participants au programme de mentorat et aux projets conjoints d'étudiants bénéficient de certains avantages lorsqu'ils recrutent pour un poste de stagiaire. Au minimum, ils sont les premiers à recevoir des informations sur les postes vacants de la part de leurs mentors ou curateurs de projet. Et dans les entretiens, nous constatons que les participants aux programmes étudiants se révèlent généralement être des candidats plus forts. En revanche, nous n'allons pas fermer les portes aux candidats qui n'ont pas réussi le projet étudiant.

En dehors de la portée de cet article, il existe de nombreuses autres façons d'interagir avec les élèves. Par exemple, des conférences dans des forums d'étudiants ou des «journées de la technologie» organisées régulièrement dans notre bureau, auxquelles tout le monde peut assister. Compte tenu de la situation actuelle sur le marché du travail, les entreprises doivent consacrer du temps et de l'argent à la formation du personnel à l'intérieur ou à l'extérieur de l'entreprise. Je voudrais croire que nos actions nous permettent non seulement de nous préparer des spécialistes qualifiés, mais contribuent également à la croissance des ingénieurs et au développement de l'industrie dans son ensemble.

L'auteur du document est Denis Dovzhenko, ingénieur principal principal des logiciels.

All Articles