La programmation informatique est un domaine très vaste et très évolutif, mais il existe de nombreux moyens par lesquels les développeurs peuvent apprendre et se mettre à jour afin de faire face aux enjeux du génie logiciel. Parmi ces moyens, il y a la programmation compétitive, un "sport" de plus en plus pratiqué dans l'industrie. L'on estime que la programmation compétitive est un bon outil pour développer le muscle de la programmation. Toutefois, une poursuite extrême de la programmation compétitive serait une chose dangereuse et inutile. Pour certains experts, elle ne fait pas de vous un bon programmeur.La programmation compétitive : définition et objectifs
La programmation compétitive est un sport mental qui permet de coder un problème donné sous des contraintes données. Pour être plus précis, prenez n'importe quel sport, considérons le cricket par exemple, vous entrez dans la partie pour la première fois. Un coup et un raté, faites-le plusieurs fois et vous finirez par en frapper un dans les cordes. Maintenant, considérez un concours de programmation comme un jeu de cricket. Vous compilez un code et le soumettez, vous pouvez recevoir un WA (Wrong Answer). Modifiez le code, soumettez-le à nouveau et vous obtiendrez peut-être votre première AC (Accepted/Correct Answer).
Ainsi, la programmation compétitive est un sport intellectuel qui se déroule généralement sur Internet ou sur un réseau local et qui implique des participants essayant de programmer selon des spécifications fournies. Les participants sont appelés programmeurs sportifs. Dans le cadre d'un concours de programmation, l'hôte présente généralement un ensemble de problèmes logiques ou mathématiques - également appelés énigmes - aux participants (dont le nombre peut varier de quelques dizaines à plusieurs milliers), qui doivent écrire des programmes informatiques capables de résoudre chaque problème.
Généralement, l'appréciation du résultat est basée sur le nombre de problèmes résolus dans le temps imparti, mais peut également inclure d'autres facteurs (qualité du résultat produit, temps d'exécution, taille du programme, etc.). Pour les experts, l'objectif unique et clair de ces concours de programmation est de "préparer un programmeur de telle sorte que sa capacité logique augmente et qu'il soit capable d'écrire du code dans une situation difficile". La programmation compétitive est reconnue et soutenue par plusieurs multinationales du logiciel et de l'Internet, telles que Google et Facebook - qui embauchent régulièrement par le biais de ces concours.
Cependant, si la programmation compétitive est devenue très célèbre pendant la dernière décennie - avec la montée en puissance des GAFAM et de nombreuses autres grandes multinationales - des experts pensent qu'elle a aujourd'hui dévié de son objectif initial et tend désormais à devenir inutile. En effet, à mesure que les concours se succédaient, des plateformes de préparation à la programmation compétitive (leetcode, geeksforgeeks, etc.) ont fait leur apparition. Elles ont commencé à rassembler à constituer un recueil des réponses aux exercices de ces concours pour permettre aux candidats de s'exercer avant de se présenter.
Cela dit, selon Kislay Verma, un technologue, les choses ont mal tourné par la suite. Grâce à l'accès croissant à ces questions, les organisateurs de ces concours et les entreprises qui se basent sur ces questions lors d'entretiens d'embauche ont commencé à poser des questions de plus en plus difficiles lors des séries de codage dans le cadre d'entretiens avec des étudiants (souvent avec moins de 5 ans d'expérience). Selon Verma, les attentes pour ces épreuves seraient actuellement dénuées de sens. « Nous avons laissé la compétence derrière nous et nous sommes maintenant dans le domaine du fétichisme », a-t-il déclaré.
La programmation compétitive est-elle devenue inutile ?
« En réaction, les étudiants universitaires s'adonnent désormais à la programmation compétitive de manière obsessionnelle pour rester au sommet. Dans cette étrange course aux armements contre les candidats à l'embauche, les entreprises posent des questions de plus en plus difficiles dans une tentative malavisée d'élever la barre. Les étudiants répondent en ne faisant rien d'autre que de résoudre chaque question disponible sur chaque site Web de programmation compétitive », a ajouté Kislay Verma. Selon ce dernier, le processus d'entretien des jeunes ingénieurs, tel qu'il existe aujourd'hui, présente un problème systémique.
Pour lui, peu importe que les débutants se situent au-dessus d'une certaine barre de compétences en matière de logique, de codage et d'algorithmique - c'est du pareil au même. « Il s'agit d'un cas classique d'utilisation d'une métrique. Une prime est accordée à la capacité de résoudre des questions très complexes sur les structures de données. Pour répondre à ce critère inutilement élevé, les étudiants font tout ce qu'il faut », a-t-il déclaré. Il estime qu'être capable de résoudre des problèmes typiques de structures de données et d'algorithmes est un signal dans le processus d'entretien plus large.
« En abaissant la barre trop haute des questions, les organisations peuvent permettre aux étudiants d'exercer leur curiosité et de développer leur passion pour quelque chose qui leur est propre - leur technologie préférée, leur pile technologique préférée, leur industrie préférée. Cela les aidera à trouver des personnes qui peuvent être formées, qui sont motivées et qui ont un intérêt réel pour la technologie au-delà d'une version gamifiée de celle-ci », préconise Verma. « Tout...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.
