Comment tirer le meilleur parti d'une formation en informatique

La plupart des programmeurs modernes ont fait leurs études dans les universités. Au fil du temps, cela va changer, mais aujourd'hui, les choses sont telles que le bon personnel des entreprises informatiques vient toujours des universités. Dans cet article, Stanislav Protasov, directeur des relations universitaires d'Acronis, parle de sa vision des caractéristiques de la formation universitaire pour les futurs programmeurs. Les enseignants, les étudiants et ceux qui les embauchent peuvent même trouver quelques conseils utiles sous cette coupe.

Comment tirer le meilleur parti d'une formation en informatique

Depuis 10 ans, j'enseigne les mathématiques, les algorithmes, les langages de programmation et l'apprentissage automatique dans diverses universités. Aujourd'hui, en plus de mon poste chez Acronis, je suis également chef adjoint du département d'informatique théorique et appliquée au MIPT. À partir de mon expérience de travail dans de bonnes universités russes (et pas seulement), j'ai fait quelques observations sur la préparation des étudiants dans les disciplines informatiques.

La règle des 30 secondes ne fonctionne plus

Je suis sûr que vous avez rencontré la règle des 30 secondes, qui stipule qu'un programmeur doit comprendre le but d'une fonction après un rapide coup d'œil à son code. Il a été inventé il y a longtemps et depuis lors, de nombreux systèmes d'exploitation, langages, matériels et algorithmes sont apparus. J'écris du code depuis 12 ans, mais relativement récemment, j'ai vu le code source d'un produit, qui à première vue me semblait être une formule magique. Aujourd’hui, si vous n’êtes pas immergé dans le sujet, la règle des 30 secondes ne fonctionne plus. Sinon, non seulement 30, mais aussi 300 secondes ne vous suffiront pas pour comprendre de quoi il s'agit.

Par exemple, si vous souhaitez écrire des pilotes, vous devrez vous plonger dans ce domaine et lire des milliers de lignes de code spécifique. Avec cette approche de l’étude d’un sujet, un spécialiste développe un « sentiment de flux ». Comme dans le rap, où le sentiment d'une bonne rime et du bon rythme apparaît sans rationalisation particulière. De même, un programmeur bien formé peut facilement reconnaître un code inefficace ou simplement mauvais sans entrer dans une étude détaillée de l'endroit où une violation de style s'est produite ou où une approche sous-optimale a été utilisée (mais ce sentiment peut être très difficile à expliquer).

La spécialisation et la complexité croissante font qu’une formation de licence n’offre plus la possibilité d’étudier tous les domaines de manière suffisamment approfondie. Mais c’est précisément à ce niveau d’éducation qu’il faut acquérir une perspective. Ensuite, aux études supérieures ou au travail, vous devrez passer du temps à vous immerger dans les problèmes et les spécificités du domaine, à étudier l'argot, les langages de programmation et le code de collègues, à lire des articles et des livres. Il me semble que c'est le seul moyen, avec l'aide de l'université, de « gonfler la barre transversale » pour l'avenir Spécialistes en forme de T.

Quel langage de programmation est-il préférable d’enseigner à l’université ?

Comment tirer le meilleur parti d'une formation en informatique
À ma grande joie, les professeurs d’université ont déjà renoncé à chercher la bonne réponse à la question : « Quelle est la meilleure langue pour programmer ? » Le débat sur ce qui est le meilleur – C# ou Java, Delphi ou C++ – a pratiquement disparu. L'émergence de nombreux nouveaux langages de programmation et l'accumulation d'expériences pédagogiques ont conduit à une compréhension établie dans le milieu académique : chaque langage a sa propre niche.

Le problème de l'enseignement en utilisant l'un ou l'autre langage de programmation a cessé d'être une priorité. Peu importe la langue dans laquelle le cours est dispensé. L'essentiel est une expressivité suffisante de la langue. Livre "L'art de la programmation multiprocesseur» est une bonne illustration de ce constat. Dans cette édition désormais classique, tous les exemples sont présentés en Java - un langage sans pointeurs, mais avec Garbage Collector. Presque personne ne contestera que Java est loin d’être le choix optimal pour écrire du code parallèle hautes performances. Mais le langage était adapté pour expliquer les concepts présentés dans le livre. Un autre exemple - cours classique d'apprentissage automatique Andrew Nna, a enseigné sous Matlab dans l'environnement Octave. Aujourd’hui, vous pouvez choisir un langage de programmation différent, mais quelle différence cela fait-il réellement si les idées et les approches sont importantes ?

Plus pratique et plus proche de la réalité

Dans le même temps, ces dernières années, il y a eu beaucoup plus de praticiens dans les universités. Si les programmes universitaires russes antérieurs étaient activement critiqués pour être déconnectés de la réalité, on ne peut pas en dire autant aujourd'hui de l'enseignement des technologies de l'information. Il y a 10 ans, il n'y avait presque aucun professeur dans les universités ayant une réelle expérience de l'industrie. De nos jours, de plus en plus souvent, les cours d'un département spécialisé sont dispensés non pas par des professeurs d'informatique à temps plein, mais par des informaticiens en exercice qui n'enseignent que 1 à 2 cours pendant leur temps libre par rapport à leur travail principal. Cette démarche se justifie du point de vue de la formation de qualité du personnel, de la mise à jour des cours et, bien entendu, de la recherche d'employés potentiels dans l'entreprise. Je ne pense pas révéler le secret en disant que nous soutenons un département de base au MIPT et construisons des relations avec d'autres universités, notamment afin de préparer les étudiants qui pourraient commencer leur carrière chez Acronis.

Mathématicien ou programmeur ?

Comment tirer le meilleur parti d'une formation en informatique
Les guerres saintes, qui tournaient auparavant autour des langages de programmation, ont pris une direction philosophique. Aujourd’hui, les soi-disant « programmeurs » et « mathématiciens » se disputent. En principe, ces écoles pourraient être séparées en deux programmes éducatifs, mais l'industrie est encore incapable de séparer ces subtilités, et d'une université à l'autre, nous avons un enseignement similaire avec un objectif légèrement différent. Cela signifie que tant l'étudiant que l'entreprise dans laquelle il continuera à travailler devront compléter le puzzle des connaissances avec les pièces manquantes.

L'émergence de praticiens dans les universités qui écrivent du code industriel dans différentes langues donne aux étudiants de meilleures compétences de développement. Connaissant bien les implémentations de bibliothèques standards, de frameworks et de techniques de programmation, les programmeurs en exercice inculquent aux étudiants le désir d'écrire du bon code, de le faire rapidement et efficacement.

Cette compétence utile fait cependant parfois émerger ceux qui aiment réinventer la roue. Les étudiants en programmation pensent ainsi : « Dois-je écrire encore 200 lignes de bon code qui résoudront le problème de front ?

Les enseignants ayant reçu une formation mathématique classique (par exemple de la Faculté de mathématiques ou de mathématiques appliquées) travaillent souvent dans un environnement pseudo-scientifique, ou dans le domaine de la modélisation et de l'analyse de données. Les « mathématiciens » voient les problèmes dans le domaine de l’informatique différemment. Ils fonctionnent principalement non pas avec du code, mais avec des algorithmes, des théorèmes et des modèles formels. Un avantage important de l’approche mathématique est une compréhension fondamentale claire de ce qui peut et ne peut pas être résolu. Et comment le résoudre.

En conséquence, les professeurs de mathématiques parlent de programmation avec un penchant pour la théorie. Les étudiants issus de la filière « mathématiciens » proposent souvent des solutions bien pensées et théoriquement supérieures, mais généralement sous-optimales d'un point de vue linguistique et souvent simplement rédigées de manière bâclée. Un tel étudiant estime que son objectif principal est de démontrer sa capacité à résoudre en principe de tels problèmes. Mais la mise en œuvre risque d’être boiteuse.

Les enfants qui ont été élevés comme programmeurs à l’école ou dans leurs premières années apportent avec eux un « très beau vélo », qui ne fonctionne cependant généralement pas de manière très efficace de manière asymptotique. Au contraire, ils ne se donnent pas pour tâche de théoriser en profondeur et de se tourner vers les manuels à la recherche de solutions optimales, préférant le beau code.

Dans différentes universités, lors des entretiens avec les étudiants, je vois généralement quelle « école » est à la base de son éducation. Et je n’ai presque jamais rencontré un équilibre parfait dans l’éducation de base. Quand j'étais enfant, dans ma ville, on pouvait se préparer aux olympiades de mathématiques, mais il n'y avait pas de clubs de programmation. Désormais, dans les clubs, les enfants apprennent à programmer en Go et Python « à la mode ». Par conséquent, même au niveau de l’admission dans les universités, il existe des différences dans les approches. Je crois qu'il est important de maintenir les deux compétences dans une université, sinon un spécialiste avec une base théorique insuffisante ou une personne qui n'a pas appris et ne veut pas écrire du bon code viendra travailler dans l'entreprise.

Comment « gonfler la barre transversale » pour l’avenir Des spécialistes en forme de T ?

Comment tirer le meilleur parti d'une formation en informatique
Il est clair que dans de telles conditions, l'étudiant choisit simplement ce qu'il préfère. L'enseignant transmet simplement le point de vue qui lui est le plus proche. Mais tout le monde en bénéficiera si le code est magnifiquement écrit, et du point de vue des algorithmes, tout est clair, raisonnable et efficace.

  • Horizons informatiques. Un diplômé d'une licence en informatique est un spécialiste tout fait avec une vision technique développée, qui a probablement choisi son profil. Mais en première année, on ne sait pas ce qu'il fera. Il peut se lancer dans la science ou l'analyse, ou, au contraire, écrire une énorme quantité de code chaque jour. Par conséquent, l’étudiant doit découvrir tous les aspects du travail dans le domaine informatique et être initié à tous les outils. Idéalement, les enseignants des cours théoriques montreront un lien avec la pratique (et vice versa).
  • Point de croissance. Il est dans l’intérêt de l’étudiant lui-même de ne pas se permettre d’aller aux extrêmes. Comprendre si vous êtes un « mathématicien » ou un « programmeur » n’est pas difficile. Il suffit d'écouter la première impulsion lors de la résolution d'un problème : que voulez-vous faire - consulter le manuel à la recherche de l'approche optimale ou écrire quelques fonctions qui seront certainement utiles plus tard ? Sur cette base, vous pouvez construire une autre trajectoire complémentaire de votre apprentissage.
  • Sources alternatives de connaissances. Il arrive que le programme soit bien équilibré, mais la « programmation système » et les « algorithmes » sont enseignés par des personnes complètement différentes, et certains étudiants sont plus proches du premier enseignant et d'autres du second. Mais même si vous n’aimez pas le professeur, ce n’est pas une raison pour négliger certaines matières au profit d’autres. Les bacheliers eux-mêmes souhaitent trouver la volonté de travailler avec des sources de connaissances et ne font en aucun cas confiance à des opinions radicales telles que « les mathématiques sont la reine des sciences, l'essentiel est de connaître les algorithmes » ou « un bon code compense tout le reste ».

Vous pouvez approfondir vos connaissances théoriques en vous tournant vers la littérature spécialisée et les cours en ligne. Vous pouvez améliorer vos compétences en langages de programmation sur Coursera, Udacity ou Stepik, où de nombreux cours différents sont présentés. En outre, les étudiants commencent souvent à regarder des cours de langue intensifs s'ils estiment que le professeur d'algorithmes connaît bien les mathématiques, mais ne peut pas répondre à des questions complexes de mise en œuvre. Tout le monde ne sera pas d'accord avec moi, mais dans ma pratique, cela a fait ses preuves spécialisation en C++ de Yandex, dans lequel des caractéristiques de plus en plus complexes de la langue sont analysées séquentiellement. En général, choisissez un cours très bien noté par des entreprises ou des universités réputées.

Soft skills

Comment tirer le meilleur parti d'une formation en informatique
En sortant de l'université pour travailler dans n'importe quelle entreprise, d'une startup à une grande entreprise, les étudiants des meilleures universités se retrouvent mal adaptés à l'environnement de travail réel. Le fait est qu’aujourd’hui, les universités « gardent » beaucoup les étudiants. Même après avoir manqué de nombreux cours, ne pas avoir préparé les tests et les tests à temps, avoir dormi trop longtemps ou être en retard à un examen, tout le monde peut le réussir et le repasser - et finalement recevoir un diplôme.

Cependant, il existe aujourd'hui toutes les conditions pour que les étudiants soient préparés à la vie adulte et à une activité professionnelle indépendante. Ils devront non seulement programmer, mais aussi communiquer. Et cela aussi doit être enseigné. Les universités disposent de différents formats pour développer ces compétences, mais, hélas, elles ne reçoivent souvent pas suffisamment d’attention. Cependant, nous avons de nombreuses opportunités d’acquérir des compétences efficaces en matière de travail d’équipe.

  • Communication commerciale écrite. Malheureusement, la plupart des diplômés qui quittent l’université n’ont aucune idée de l’étiquette de correspondance. La spécificité de la communication dans les messageries instantanées réside dans l'échange de messages nuit et jour et dans l'utilisation d'un style conversationnel et d'un vocabulaire informel. Cependant, il serait possible d'entraîner l'expression écrite lorsque l'étudiant communique avec le département et l'université.

    En pratique, les managers sont souvent confrontés à la nécessité de décomposer un grand projet en petites tâches. Pour ce faire, vous devez décrire clairement chaque tâche et ses composants afin que les développeurs juniors comprennent ce qui est attendu d'eux. Une tâche mal définie conduit souvent à devoir refaire quelque chose, c'est pourquoi l'expérience en communication écrite aide les diplômés à travailler en équipes distribuées.

  • Présentation écrite des résultats de vos travaux. Pour présenter leurs projets pédagogiques, les étudiants seniors peuvent rédiger des articles sur Habr, des articles scientifiques, mais aussi simplement des rapports. Il existe de nombreuses possibilités pour cela - les cours commencent dès la deuxième année dans certaines universités. Vous pouvez également utiliser des essais comme forme de contrôle - leur forme est généralement plus proche d'un article journalistique. Cette approche a déjà été mise en œuvre à l’École supérieure d’économie de l’Université nationale de recherche.

    Si une entreprise adopte une approche flexible du développement, elle doit présenter les résultats de son travail en portions plus petites, mais plus souvent. Pour ce faire, il est important de pouvoir transmettre brièvement les résultats du travail d'un spécialiste ou de l'ensemble de l'équipe. En outre, de nombreuses entreprises effectuent aujourd'hui des « examens » - annuels ou semestriels. Les employés discutent des résultats et des perspectives de travail. Une évaluation réussie est la principale raison de l'évolution de carrière, des primes, par exemple chez Microsoft, Acronis ou Yandex. Oui, vous pouvez bien programmer, mais « assis dans un coin », même un spécialiste sympa perdra toujours face à quelqu'un qui sait bien présenter son succès.

  • Rédaction des travaux universitaires. Les écrits académiques méritent une mention particulière. Il est utile pour l'étudiant de se familiariser avec les règles de rédaction de textes scientifiques, d'argumentation, de recherche d'informations dans diverses sources et de formatage des références à ces sources. Il est conseillé de le faire en anglais, car il existe de nombreux autres bons textes dans la communauté universitaire internationale et pour diverses disciplines, il existe déjà des modèles établis pour présenter les résultats scientifiques. Bien entendu, des compétences rédactionnelles académiques sont également nécessaires lors de la préparation de publications en langue russe, mais il existe beaucoup moins d'exemples de bons articles modernes en anglais. Ces compétences peuvent être acquises grâce à un cours approprié, désormais inclus dans de nombreux programmes éducatifs.
  • Diriger des réunions. La plupart des étudiants ne savent pas comment se préparer aux réunions, rédiger des procès-verbaux et traiter les données. Mais si on développe cette compétence au collégial, par exemple, en participant à des projets d’équipe, on peut éviter de perdre du temps au travail. Cela nécessite une supervision du travail de projet des étudiants afin de leur apprendre à mener efficacement des réunions. En pratique, cela coûte beaucoup d'argent à chaque entreprise - après tout, si plusieurs personnes percevant un salaire élevé consacrent une heure de travail à un rassemblement, vous voulez que cela rapporte un bénéfice correspondant.
  • Art oratoire. De nombreux étudiants sont confrontés à la nécessité de s'exprimer publiquement uniquement pendant la soutenance de leur thèse. Et tout le monde n’est pas prêt pour cela. J'ai vu de nombreux étudiants qui :
    • se tenir dos au public,
    • se balançant, essayant d'introduire la commission en transe,
    • casser les stylos, crayons et pointeurs,
    • marcher en rond
    • regarde le sol.

    C'est normal lorsqu'une personne joue pour la première fois. Mais vous devez commencer à travailler avec ce stress plus tôt - en défendant vos cours dans une atmosphère conviviale, entre vos camarades de classe.

    De plus, la pratique courante dans les entreprises est de donner à un employé la possibilité de proposer une idée et de recevoir un financement, un poste ou un projet dédié pour celle-ci. Mais si vous y réfléchissez bien, il s’agit de la même protection des cours, mais à un niveau supérieur. Pourquoi ne pas mettre en pratique ces compétences professionnelles utiles pendant vos études ?

Qu'est-ce que je rate?

L'une des raisons pour lesquelles j'ai écrit cet article était l'article, publié sur le site Web de l'Université d'État de Tioumen. L'auteur de l'article se concentre uniquement sur les lacunes des étudiants russes constatées par les enseignants étrangers. La pratique de mon enseignement dans différentes universités suggère que l’école et l’enseignement supérieur russes constituent une bonne base. Les étudiants russes maîtrisent les mathématiques et les algorithmes et il est plus facile d’établir une communication professionnelle avec eux.

Dans le cas des étudiants étrangers, au contraire, les attentes d’un professeur de russe peuvent parfois être trop élevées. Par exemple, au niveau de la formation de base en termes de mathématiques, les étudiants indiens que j'ai rencontrés sont semblables aux étudiants russes. Cependant, ils manquent parfois de connaissances spécialisées à la fin de leurs études de premier cycle. Les bons élèves européens sont susceptibles d’avoir une formation en mathématiques moins solide au niveau scolaire.

Et si vous étudiez ou travaillez dans une université, vous pouvez désormais travailler sur vos compétences en communication (les vôtres ou celles de vos étudiants), élargir vos bases fondamentales et pratiquer la programmation. À cette fin, le système éducatif russe offre toutes les opportunités - il suffit de les utiliser correctement.

Je serai heureux si, dans les commentaires de l'article, vous partagez vos liens vers des cours et des méthodes qui contribuent à égaliser l'équilibre dans l'éducation, ainsi que d'autres moyens d'améliorer les compétences générales tout en étudiant dans une université.

Source: habr.com

Ajouter un commentaire