Choisiriez-vous un camp d’entraînement au codage ou un diplôme lié à l’informatique ? Pourquoi ?


Les personnes qui répondent à cette question sont pour la plupart des instructeurs de bootcamps ou des personnes qui ont participé à des bootcamps. Cependant, j'ai l'intention de répondre à votre question du point de vue d'un employeur's. (Je suis le cofondateur et l'ancien CTO de FiscalNote qui est une entreprise d'IA qui s'occupe de l'analyse gouvernementale)

Lorsque je cherche à embaucher un nouvel ingénieur, je cherche quelqu'un qui a au moins ou l'équivalent d'un diplôme en informatique. (Le coding bootcamp ne compte pas comme un diplôme de CS).


Voici mes raisons pour lesquelles je ne considérerais PAS un développeur bootcamp:

  1. Quelqu'un ayant un diplôme en informatique comprend les fondamentaux de l'informatique. Algorithmes, concurrence, allocation efficace de la mémoire, pile / tas, complexité big-O / temps, structures de données avancées etc.... Ces compétences sont extrêmement importantes lorsque vous allez au-delà du framework (rails, node, etc...) que ces bootcamps vous enseignent. Je vais vous donner un exemple simple mais plausible. Disons que vous avez 1 milliard d'objets utilisateurs, chacun avec un âge (de type entier positif). Imaginez maintenant que vous deviez trier cette liste par âge assez fréquemment dans votre application. (Supposons que vous triiez au niveau de l'application (pas au niveau de la base de données). Supposons également que vous disposiez d'une bonne quantité de RAM, la mémoire n'est donc pas un problème). Quelqu'un qui a suivi un cours d'initiation à Rails se contentera d'appeler la méthode ruby.sort (parce que c'est ce qu'on lui a appris). Maintenant ce n'est pas un mauvais choix, la méthode ruby.sort utilise le tri rapide qui est un algorithme O(nlogn) dans le cas moyen. Cependant, nous trions 1 milliard d'utilisateurs et cela augmente rapidement ! Nous avons besoin d'un meilleur algorithme. Une personne ayant une formation en informatique comprendrait cela et écrirait sa propre solution. Dans ce cas, puisque l'âge a une limite supérieure (supposons que les gens ne peuvent pas vivre au-delà de 150 ans), vous avez une contrainte où l'âge est un nombre entier entre 0 et 150. En connaissant ces informations supplémentaires, nous pouvons concevoir un algorithme en temps O(n) tel que le tri par comptage, le tri par seau ou le tri radix. Ces algorithmes sont beaucoup plus efficaces en termes de vitesse. Mais que faire si la mémoire est également une contrainte ? Que faites-vous ? Je suis à peu près sûr que je ne peux pas'compter sur quelqu'un qui n'a pas de formation en CS pour tenter de résoudre ce problème ou même réaliser que c'est un problème !
  2. Les bootcamps n'enseignent pas les fondements de la CS, ils enseignent comment utiliser les frameworks, et ce qui est populaire en ce moment. C'EST DANGEREUX si vous avez une entreprise technologique à croissance rapide. Imaginez que vous commenciez à utiliser Ruby on Rails et que vous embauchiez des développeurs Ruby on Rails. Trois ans plus tard, Rails décide de mettre fin à sa vie, d'arrêter le développement actif et d'arrêter la maintenance (en gros, il s'agit d'une fermeture, bien que très improbable). Ou, imaginez, vous décidez que vous devez changer de technologie en cours de route pour une raison X ou Y (c'est ce qui est arrivé à ma société FiscalNote, nous avons commencé avec Rails, et nous passons à Node.js). Vous devez disposer d'ingénieurs qui comprennent comment les choses fonctionnent en arrière-plan des frameworks et des langages de programmation afin d'effectuer une transition en douceur. Les ingénieurs doivent être malléables lorsqu'il s'agit de technologie. La technologie évolue rapidement, et si vos ingénieurs sont incapables de changer avec elle, votre entreprise ne survivra pas longtemps.
  3. Selon le type d'entreprise que vous êtes, vous pouvez ne pas vous soucier ou même connaître la différence entre un ingénieur avec une formation CS et un ingénieur avec seulement une formation dev bootcamp. Par conséquent, il existe une énorme différence de calibre d'ingénierie entre les entreprises qui ont besoin d'une équipe technique et les entreprises d'ingénieurs/techniques. Il est fort probable que les développeurs ayant suivi le dev bootcamp ont très peu de chances d'obtenir un poste d'ingénieur chez Google/Facebook/Microsoft ou dans des start-ups technologiques à croissance rapide comme Slack, Stripe et Uber. Ces entreprises n'embaucheront probablement pas de développeurs bootcamp mais plutôt les meilleurs des meilleurs étudiants en informatique. Les entreprises qui embauchent des personnes issues de la formation initiale ne sont généralement pas des entreprises technologiques, mais plutôt des entreprises locales ou des entreprises qui ne connaissent pas vraiment la technologie. Par exemple, un restaurant mexicain local souhaite peut-être créer une application. Ils ne se soucieront pas de savoir si leur programmeur n'a pas de diplôme en informatique, mais seulement de savoir si l'application est construite et fonctionne afin de pouvoir vendre leurs tacos en ligne. Cependant, il y a quelques exceptions où ils travaillent dans des entreprises technologiques.
  4. Le débogage est difficile et la plupart du temps, le débogage nécessite des connaissances plus approfondies en CS et en langages de programmation, ainsi que peut-être des trucs au niveau de l'OS. Le débogage est beaucoup plus facile lorsque vous comprenez ces concepts de base de la CS. Le débogage est un enfer si vous savez seulement comment utiliser le cadre mais pas comprendre pourquoi les choses sont faites par le cadre.
  5. Je commence à voir une tendance où une bonne quantité de startups tech, quand ils tombent sur un développeur d'un bootcamp, ils roulent juste leurs yeux, *soupir, et passent sur le candidat. Je suis désolé pour ceux qui lisent cette réponse, mais c'est la triste vérité. Nous, les startups technologiques, aimons parler entre nous des pratiques et des stratégies de recrutement et c'est un sujet qui revient souvent.

Je n'essaie pas de dénigrer les développeurs bootcamp de quelque façon que ce soit, je dis simplement qu'ils ne sont peut-être pas la meilleure embauche pour une entreprise lourde en technologie/ingénierie. J'encourage les gens à se tourner vers le domaine technique parce que je souhaite que davantage de personnes fassent des carrières techniques. Mais de mon point de vue, dépenser beaucoup d'argent pour prendre la voie facile (je dis facile parce que vous pouvez sauter ces horribles cours d'algorithme à l'université) du dev bootcamp ne vous apporte rien de bon. Vous passez à côté des parties les plus importantes de la CS. Oui, vous pouvez suivre un camp d'entraînement et apprendre à être pratique immédiatement. Mais ce n'est pas différent d'apprendre MS Excel et de ne pas comprendre la programmation et les algorithmes derrière.


Ce que je recommande, c'est de peut-être assister à quelques cours de CS à l'université près de chez vous (la plupart des universités autorisent les sit ins) ou de prendre quelques cours en ligne gratuits de Stanford, etc. Je ne pense vraiment pas'que vous devriez dépenser votre argent durement gagné (10K$ - 15K$) dans un dev bootcamp.