Sur l'enseignement supérieur, les programmeurs et les cols bleus



«Parfois, il arrive que le cercle d'horizon d'un homme devienne de plus en plus petit, et lorsque le rayon approche de zéro, il se concentre sur un point. Et puis cela devient son point de vue. "

David hilbert
"Quand j'ai pensé que j'avais touché le fond, quelqu'un a frappé par le bas."

Stanisław Jerzy Lec

Préface


Un programmeur a-t-il besoin d'un enseignement supérieur? Le flux d'opinions sur ce sujet sans aucun doute urgent ne s'est pas tari, j'ai donc décidé d'exprimer mon point de vue. Il me semble que la déception générale en matière d'éducation est due aux nombreux processus et changements dans la profession et nécessite une étude sérieuse. Ci-dessous, je vais discuter des idées fausses, des mythes et des causes sous-jacentes les plus courantes du phénomène.

Peut-être que tu es venu au mauvais endroit


Je vous rappelle encore une fois: l'université n'est pas une école professionnelle. Les universités produisent des scientifiques et des ingénieurs, pas des cols bleus et des techniciens.

L'université vous donne des connaissances fondamentales, qui ne deviendront pas obsolètes lorsque vous aurez terminé vos études. Un biologiste des National Institutes of Health m'a écrit: «Les temps changent mais les fondamentaux ne changent pas» . Excellents mots! C'est pourquoi il vaut mieux choisir la direction générale de l'éducation et essayer de suivre le nombre maximum de cours au choix, et c'est pourquoi dans les universités, les étudiants de premier cycle en physique reçoivent (comme beaucoup de gens le pensent) autant de cours «inutiles» tels que la biologie, la chimie ou la littérature, au lieu des sciences spéciales.

Carl Sagan, célèbre astronome, a mentionné dans ses livres qu'il travaillait dans le laboratoire de génétique et a fait des expériences pour tester l'hypothèse de l'abiogenèse pendant ses études. Il est formidable qu'aux États-Unis, il soit possible (en plus de la principale principale) d'ajouter quelques autres spécialités (mineures). Il s'agit d'une merveilleuse opportunité que de nombreux autres pays comme la Russie n'offrent pas. Donc, si vous avez le choix entre la théorie de l'évolution et la programmation Java - choisissez la première, peut-être qu'un jour ces connaissances seront utiles dans votre carrière ou même dans votre vie. Vous apprendrez toujours Java - si vous en avez vraiment besoin - mais il est peu probable que vous appreniez l'histoire de notre planète. De plus, l'évolution est une idée si générale et universelle qu'elle peut s'appliquer à presque toutes les disciplines d'ingénierie. N'oubliez pas qu'il est toujours plus facile de rétrécir vos horizons que de les élargir.

Au point, la situation dans les universités étrangères n'est pas fondamentalement différente. À la suite de nombreuses années d'évolution parallèle, le monde a développé des exigences similaires pour les professionnels. Vous avez tout à fait raison de dire que dans d'autres pays, on vous enseignera d'une manière différente, mais vous avez tort si vous pensez qu'on vous enseignera des choses différentes. Les universités des autres pays diffèrent dans les processus éducatifs, les noms et les quantités de cours, la qualité des pratiques et la science réelle, mais la base théorique est similaire partout. La raison d'une telle unification est assez claire: les lois de la nature sont invariantes dans tous les pays. Par conséquent, les spécialistes d'un pays peuvent travailler partout dans le monde.

Qui sont les programmeurs?


Pour illustrer l'importance de la question, je me tournerai vers une analogie. Imaginez que vous demandez à quelqu'un quel est son métier, et il dit qu'il est constructeur. Pouvez-vous deviner ce qu'il fait sans aucune information supplémentaire? Non. Il peut être architecte avec une formation artistique, ingénieur, contremaître, ouvrier qualifié ou nettoyeur. Inutile de dire que beaucoup de ces domaines ont leurs propres spécialisations. Et encore tous seraient appelés constructeurs, mais il est évident que ce sont des types de constructeurs très différents. Pour faire une niche, il n'est pas nécessaire d'avoir une éducation spéciale, mais sans elle, personne ne peut construire un gratte-ciel.

Cependant, ceux qui construisent des niches ne sont généralement pas appelés constructeurs. D'un autre côté, presque tout le monde s'appelle maintenant programmeur. Un informaticien qui invente de nouveaux algorithmes; développeur de logiciels de navigation à la NASA; un expert en langage assembleur qui étudie les virus; un écolier qui fait des pages HTML - tous sont maintenant des programmeurs. Donc, avant de répondre à la question: «Un programmeur a-t-il besoin d'un enseignement supérieur?», Vous devez clarifier - quel type de programmeur? Peut-être que dans votre cas particulier, l'éducation n'est évidemment pas nécessaire.

Que cela nous plaise ou non, les rêves des frères Strugatsky d'un monde de jeunes assistants de recherche s'effondrent. La grande majorité des gens ne vont pas devenir des scientifiques ou des ingénieurs, et ils n'ont certainement pas besoin d'un diplôme universitaire. Le diplôme d'associé de deux ans répond entièrement à leurs besoins. Parce que, en règle générale, leurs désirs et leurs besoins ne répondent pas aux objectifs de l'enseignement universitaire et leur travail proposé n'a pas grand-chose à voir avec la science ou l'ingénierie. Ce n'est pas terrible, car le nombre d'ingénieurs dans un domaine à un moment donné a toujours été inférieur à celui des techniciens et des cols bleus. Il n'y a rien d'humiliant dans la profession des cols bleus, surtout si vous l'aimez, mais cela n'a aucun sens pour une de ces personnes de s'appeler ingénieur. Au lieu de cela, vous devez admettre honnêtement qui vous voulez être et ne pas exiger que les universités soient ce qu'elles ne sont pas censées faire. Une seule chose, veuillez ne pas vous appeler programmeur, car un programmeur est un ingénieur.

Les ingénieurs ne peuvent pas être des cols bleus. Même pour développer un programme simple, vous devez être un bon ingénieur, ou votre programme sera gros et lent, consommant des ressources informatiques et produisant un trafic inutile, inondant le réseau. D'un autre côté, les cols bleus font des travaux non créatifs, ils ne prennent généralement pas de décisions et ne résolvent pas les problèmes; s'ils suivent les instructions, ils font très bien leur travail.

Cependant, il y a déjà des cols bleus dans la programmation il y a de nombreuses années. Ils étaient typographes, qui codaient des programmes écrits par des ingénieurs sur un papier. Et ils ont disparu très rapidement lorsque les ordinateurs ont obtenu des terminaux plus pratiques.

Mesurer trois fois et couper une fois


Chaque profession possède un minimum de connaissances obligatoires. En informatique et en programmation, une telle base est les cours de mathématiques; donc la question "Un programmeur a-t-il besoin de l'éducation?" se transforme généralement en "Le programmeur a-t-il besoin de maths?" ou "Le programmeur a-t-il besoin de tant de maths?" Étant donné qu'un programmeur au sens classique est un ingénieur, la question peut être formulée différemment: «Un ingénieur a-t-il besoin de formation?» La discussion sur cette forme de question ne se pose généralement pas. Le problème est peut-être que tout le monde ne veut pas être un scientifique ou un ingénieur. Si la limite de vos rêves est de publier un jeu simple dans l'App Store, et non de concevoir l'intelligence artificielle, l'algorithme cryptographique ou le logiciel d'ingénierie CAO, vous pouvez facilement contourner l'université pour commencer votre carrière, mais même dans ce cas, bon l'éducation vous aidera.

Les universités ne savent pas qui vous vous voyez comme à l'avenir, et même vous ne le savez souvent pas à l'âge de votre inscription. On pense qu'il vaut mieux vous enseigner toutes les bases que de manquer quelque chose d'important. De plus, les cours de base sont généralement interdépendants, et vous ne pouvez pas simplement en retirer et en retirer certains. Leur objectif principal n'est pas de vous enseigner toutes les connaissances du monde, car cela est impossible en principe, mais de vous fournir une carte approximative de la science et de l'ingénierie modernes.Ainsi, lorsque vous êtes parfois confronté à quelque chose d'inconnu, vous pouvez faire (probablement) bonne décision, dans quelle direction aller.

Revenons aux mathématiques. Presque tous les livres sur les algorithmes nécessitent une certaine culture mathématique du lecteur. Les algorithmes et les structures de données - comme l'a dit Niklaus Wirth - sont des programmes informatiques, et si vous n'êtes pas en mesure de travailler avec eux, vous ne pouvez pas être appelé programmeur. Ce n'est pas nécessairement la capacité de concevoir vos propres algorithmes, vous devez généralement modifier ceux existants, en les adaptant à des cas individuels, mais aussi la capacité de prouver leur validité et leur applicabilité à une variété de conditions, et la capacité d'analyser leur comportement dans certaines situations. Les mathématiques sont activement utilisées dans des domaines tels que la cryptographie, l'infographie, la reconnaissance des formes, la vidéo, le son, le traitement de l'image et du signal, la physique des calculs, la chimie et la biologie, etc. Même dans la programmation système (qui est généralement loin des mathématiques) sans fond mathématique sérieux, vous ne pouvez pas écrire de compilateurs, d'ordonnanceurs et de pilotes de système de fichiers.

Les mathématiques sont la base de toutes les autres connaissances. Mais beaucoup de gens commencent à apprendre le métier dès la fin. Les programmeurs qui ont étudié les langages de programmation, les outils de développement, diverses technologies et modèles, mais qui ne maîtrisent pas les fondements mathématiques, ressemblent à des artistes, qui ont une parfaite compréhension des peintures et des pinceaux, ont appris beaucoup de trucs, mais ne connaissent pas la couleur théorie, composition, perspective, anatomie humaine et autres bases. Ils ont peut-être beaucoup d'idées brillantes, mais ils ne pourront pas les exprimer. Et tout ce qu'ils peuvent faire, c'est travailler comme assistants ou repeindre les photos des autres.

Parfois, l'ignorance des bases crée de nouveaux styles, comme dans le cas de Vincent Van Gogh (à son crédit, je dois dire qu'il était conscient de ses problèmes et a pris des cours de peinture de professionnels), mais devient généralement un obstacle à la créativité. Et si, dans l'art, il est possible de justifier les images tordues de l'artiste disant «qu'il voit de cette façon» , dans l'industrie aérospatiale, de tels cas (comme lorsque le mauvais algorithme de génération de nombres aléatoires a conduit à des millions de dollars d'honnêtes contribuables ont raté la cible) ), ne peut être justifiée par rien.

Dans le même temps, nous ne devons pas oublier que, pour la plupart, les mathématiques pour les programmeurs sont une boîte à outils plutôt qu'une science, et les enseignants devraient les enseigner en conséquence, en particulier les cours de première année, en expliquant aux étudiants la raison de les étudier.

Quant aux sciences sociales et autres cours non essentiels, leur importance est marquée non seulement par le fait que tout le monde doit être bien cultivé et éduqué, mais aussi parce que l'esprit humain est extrêmement imprévisible et s'inspire parfois de sources inhabituelles. Mon professeur de langue russe m'a raconté une histoire de l'époque soviétique, lorsqu'un institut d'aviation a décidé d'économiser de l'argent et s'est ainsi débarrassé des cours de littérature. Et que pensez-vous qui s'est passé après? Bientôt, le niveau d'ingénieurs diplômés avait diminué. Par la suite, des cours de littérature ont été renvoyés à l'institut. Tous ces cours sont donc nécessaires. Malheureusement, ils sont souvent mal enseignés, ce qui n'ajoute pas à leur popularité; mais nous parlons de l'idée, non?

Donc, si vous n'utilisez pas les connaissances acquises à l'université, le problème n'est probablement pas dans votre université mais dans votre travail, ce qui ne vous donne pas la chance de les utiliser. Il est insensé de blâmer l'université d'avoir donné de «mauvais» cours, lorsque vous avez étudié comment concevoir des algorithmes de chiffrement, mais maintenant vous créez des pages Web simples ou même travaillez comme directeur des ventes.

Pourquoi les universités?


Eh bien, vous avez dit, mais pourquoi l'éducation régulière est-elle meilleure que l'auto-éducation? Après tout, la programmation n'est pas du génie génétique - vous n'avez pas besoin de travailler dans des laboratoires spéciaux coûteux et vous pouvez apprendre toutes les théories à la maison. En effet, les programmes éducatifs des universités sont connus, de nombreux cours sont ouverts, vous pouvez acheter n'importe quel livre, le prendre à la bibliothèque publique ou le lire sur le Web. Cependant, tout n'est pas aussi simple qu'il y paraît. Les mathématiques, contrairement aux technologies et aux langages de programmation, sont généralement très difficiles à apprendre. Vous ne savez peut-être pas que vous faites quelque chose de mal, à moins qu'on vous le dise. Les contacts personnels sont très importants et peuvent vous faire économiser beaucoup de temps et de nerfs. Par exemple, vous pouvez écouter la conférence pendant quelques heures et comprendre très peu, tandis que pendant la pause en quelques minutes, vous trouverez toutes les réponses du professeur. Certains programmeurs ont encore besoin de laboratoires et de conditions spéciales, par exemple ceux qui veulent travailler avec des microprocesseurs d'architecture uniques, des superordinateurs, des robots industriels ou des satellites.

Étudier dans une université est également l'occasion d'acquérir une expérience pratique dans des entreprises et des organisations, qui autrement n'aurait pas été possible. C'est l'occasion de faire de la science, d'écrire des articles et de participer à des conférences, ce qui est une condition nécessaire du travail dans les laboratoires de recherche de nombreuses entreprises, telles que Samsung, Phillips ou IBM. Presque toutes les technologies qui changent le monde ont été développées dans les universités, et certaines, comme le célèbre LLVM , sont issues de projets étudiants. Des entreprises bien connues ont été fondées par des scientifiques et des diplômés dans les murs des universités: Silicon Graphics, Sun Microsystems, Yahoo, Adobe et bien d'autres.

Enfin et surtout, sans éducation formelle, les portes de nombreuses organisations de recherche (telles que la NASA, le NIH, le CERN ou l'ARPA-E) seront fermées pour vous. Vous devez prouver votre professionnalisme et être bien meilleur que les concurrents, car lorsque toutes les autres qualifications sont égales, l'éducation formelle sera un avantage pour eux. De plus, sans diplôme, il est très difficile d'obtenir un permis de travail dans d'autres pays. (Ce n'est pas très important pour les États-Unis, mais c'est quand même utile.)

Quand quelqu'un frappe par le bas


Le problème est global, mais le plus pointu en programmation. Et c'est pourquoi. Réduire la barrière d'entrée de gamme a joué une blague cruelle sur la profession. Initialement, tous les outils de développement ont été écrits par des programmeurs expérimentés pour simplifier leur travail. Ces technologies n'étaient utiles que si vous comprenez quels processus s'y produisent. Ainsi, ils vous ont permis d'écrire plus de programmes en moins de temps, mais leur qualité dépendait exclusivement de vos connaissances et de vos compétences, car les outils de développement ne savent toujours pas penser et prendre des décisions pour vous. Quelqu'un a alors décidé que la simplification de la programmation attirerait plus de gens dans la profession. Beaucoup de gens rêvaient d'un temps où tout le monde pourrait écrire des programmes, indépendamment de leurs capacités.

Peur de vos désirs. Malheureusement, leurs rêves sont maintenant en grande partie une réalité, et non pas comme prévu dans les années 70. Vous pouvez maintenant créer des programmes à partir de blocs de construction, même sans comprendre comment ils fonctionnent. Si vous n'êtes pas un professionnel, ce sera un programme de travail mauvais mais (malheureusement). La diffusion de technologies bon marché et la facilité de développement ont conduit au fait que le marché est maintenant inondé de programmeurs peu qualifiés. Comme le dit la loi de Say, «l'offre crée sa propre demande». De nombreuses entreprises embauchent de tels «programmeurs» non pas parce qu'ils en ont vraiment besoin, mais simplement pour ne pas être pires que leurs concurrents. La règle est simple: si vous ne pouvez pas engager de programmeurs professionnels, vous n'en avez pas du tout besoin. Il vous suffit d'acheter un produit existant ou de le commander auprès d'un éditeur de logiciels professionnel.

Mais il ne suffit pas d'écrire un programme, il faut quand même le publier. Et encore une fois, l'émergence de nombreuses boutiques en ligne a fourni une telle opportunité pour tout le monde. Google, Apple, Microsoft et d'autres éditeurs de logiciels s'intéressent principalement au plus grand nombre possible de programmes pour leurs plateformes, et ils publient également des outils de développement pour eux. Dans de telles circonstances, le processus de développement est encore plus simplifié, ce qui a finalement conduit à une diminution encore plus importante de la barrière d'entrée de la programmation.

Le résultat de tout cela est l'illusion de la facilité de programmation, les gens ont commencé à y penser comme quelque chose de pas sérieux, qui ne nécessite pas de connaissances et d'éducation particulières. Une telle opinion a été formée non seulement par les débutants, mais aussi (ce qui est bien pire) par des clients et des employeurs inexpérimentés. Beaucoup d'entre vous ont vu les postes vacants avec une liste impressionnante de compétences, de langues, de bibliothèques et de technologies nécessaires, de nombreuses responsabilités (à l'exception peut-être des services de nettoyage), mais toutes offertes avec un salaire modeste (pour ne pas dire ridicule).

Il est difficile d'imaginer dans des industries telles que le génie aérospatial, où le prix des erreurs est la vie humaine. Dans ces professions, la sélection est très difficile. Personne ne veut perdre des millions de dollars en paiements d'assurance, retrait de licence et mauvaise réputation. Ainsi, un ingénieur aérospatial peut être bon ou inexistant, car personne ne souhaite embaucher le mauvais même s'il demande un très petit salaire. Tout à fait différent de la programmation, dans laquelle il n'y a pas de limite inférieure, et chaque programmeur, même très peu qualifié, ne restera pas sans travail. Notre civilisation n'est toujours vivante que parce que la plupart du travail effectué par les programmeurs n'est pas critique, nous pouvons facilement nous en passer et aucun problème ne conduit à un désastre. Imaginez que tous les jeux informatiques cessent soudainement de fonctionner dans le monde, serait-ce un désastre? Bien sûr que non! Ce sera sans aucun doute un problème mondial, mais certainement pas une catastrophe. Cependant, si le même sort arrivait aux avions, le résultat serait tragique.

Cependant, le danger arrive. La programmation est maintenant presque partout, et elle se propage très rapidement. Déjà les erreurs des programmeurs dans les logiciels coûtent trop cher, et le prix de ces erreurs augmentera jusqu'à ce qu'il atteigne la vie humaine. Vous vous souvenez des échecs de la sonde spatiale Mariner I (28 juillet 1962), Ariane 5 Flight 501 (4 juin 1996), Mars Climate Orbiter (10 novembre 1999), Patriot Missile (25 février 1991) et enfin Therac-25 qui a exposé six personnes à des surdoses massives de radiations, tuant quatre personnes et en laissant deux autres blessées à vie (1985-1987). Donc, le jour où votre théière programmable peut vous tuer parce que son micrologiciel est écrit par des programmeurs peu qualifiés d'une société d'externalisation sans nom (placée quelque part au Laos) n'est pas loin d'aujourd'hui. Vous êtes prévenu.

La vraie vie


Bien sûr, cela ne signifie pas qu'une excellente éducation ou une parfaite connaissance des mathématiques feront de vous un programmeur de classe mondiale (cela peut être nécessaire mais pas suffisant). Tout le monde sait que de nombreux diplômés universitaires ne travaillent pas dans leur domaine. Et je connais personnellement beaucoup de mathématiciens qui écrivent d'horribles programmes. Soit dit en passant, vous n'avez peut-être tout simplement pas de capacités de programmation, une situation très courante. Je suis donc généralement contre l'utilisation de critères simplifiés. Dans la vraie vie, tout est important: l'éducation formelle, les connaissances, la recherche, la pratique et enfin et surtout: votre désir.

Les gens pensent souvent que l'université est un ascenseur, ce qui les aidera à atteindre le sommet de leur carrière, alors qu'en réalité, cela ressemble plus à des escaliers, et pour atteindre vos objectifs, vous devez vous déplacer. L'éducation ne vous garantit pas un bon travail si vous ne faites pas d'effort, mais elle peut vous aider à en obtenir un si vous vous efforcez. Et si, pendant vos études, vous n'avez participé à aucun projet de recherche ou commercial et que vous n'avez commencé à chercher du travail qu'après votre diplôme, la programmation (comme tout autre génie) n'est pas la profession pour vous.

Comment l'ont-ils fait?


Bill Gates, Mark Zuckerberg, Larry Ellison. En lisant les histoires de réussite de personnes célèbres, de nombreux esprits immatures pensent comme ceci: "S'ils pouvaient le faire, alors je peux le faire." Peut-être. Mais gardez à l'esprit que le succès est un concept très polyvalent, c'est une chose d'être un spécialiste du marketing prospère et une autre d'être un ingénieur exceptionnel. Néanmoins, ce n'est un secret pour personne que certains programmeurs de renommée mondiale n'ont pas d'éducation formelle, mais avant de tenter leur vie par vous-même, n'oubliez pas qu'ils sont de rares exceptions parmi de nombreux perdants inconnus. Si quelqu'un a sauté par une fenêtre et a survécu, cela n'implique pas que vous ne devez pas utiliser les escaliers. De même, l'éducation ne doit pas (une erreur très courante) être confondue avec le diplôme, le fait que quelqu'un n'ait pas terminé ses études ne signifie pas qu'il n'en a pas du tout profité. Il est probable qu'ils ont étudié pendant plusieurs années, suivi des cours et acquis des connaissances. Certains d'entre eux (comme Steve Wozniak) sont toujours revenus et ont terminé leurs études de nombreuses années plus tard.

Leurs capacités mentales et leur caractère sont tout aussi importants: en règle générale, ce sont tous des personnes brillantes, intelligentes, talentueuses et quelque peu brillantes, qui savaient depuis le début ce dont elles avaient besoin, sont déterminées et ont une efficacité de travail phénoménale. Ils ne demandent pas l'opinion des autres et n'imposent pas la leur. Et pourtant, certains d'entre eux, par exemple, John Carmack (l'auteur des jeux DOOM et Quake) regrettent de ne pas avoir reçu d'éducation formelle et d'être trop sûr de lui.

Si vous êtes les mêmes qu'eux, je vous souhaite sincèrement du succès, sinon n'est-il pas préférable d'utiliser une méthode plus claire et éprouvée?

L'avenir des cols bleus


Le problème est que les professions de cols bleus disparaissent lentement parce qu'elles sont remplacées par des robots et des machines automatiques. Désormais, des usines entières sont dirigées par quelques ingénieurs et techniciens qualifiés. C'est bien car aucun travail industriel ne doit être fait à la main plus d'une fois. Et cela est particulièrement vrai en programmation, car en programmation, le travail non créatif peut être automatisé très facilement. Le monde actuel n'a pas besoin de plus de cols bleus, parce que les machines font très bien leur travail, il a besoin de plus de scientifiques et d'ingénieurs qui inventeront notre avenir. De même, le monde n'a pas besoin de plus de programmeurs peu qualifiés (même s'ils ne sont en aucun cas des cols bleus) car ils seront remplacés très rapidement par des machines et des programmes intelligents. Au lieu de cela, le monde a besoin de plus de programmeurs hautement qualifiés, de vrais ingénieurs, qui changeront notre vie, la rendant meilleure, plus sûre et plus longue.

Regardez les postes ouverts dans les départements de recherche de nombreuses entreprises. Comme mentionné précédemment, il y a trop de programmeurs et la concurrence est très forte, mais entre-temps, ces entreprises et institutions ne trouvent pas assez de bons chercheurs et ingénieurs en programmation! De nombreux postes sont ouverts depuis des années. Où sont donc la concurrence et le débordement? Ils sont largement aux niveaux bas. La triste vérité est que la programmation devenant plus facile pour les non-professionnels, les faibles niveaux seront plus débordés. Le salaire diminuera jusqu'à ce que les programmeurs peu qualifiés ne soient pas payés plus que les employés de McDonald's.

Une bonne éducation supérieure coûte très cher et prend de nombreuses années, mais c'est la base de votre avenir, qui s'étendra à l'avenir de votre famille. Il est donc temps de choisir si vous «coderez pour la nourriture» toute votre vie ou si vous travaillerez dans une bonne entreprise pour un salaire plus élevé. De plus, la récompense n'est pas seulement votre salaire, mais aussi un travail intéressant qui change le monde.

Source: https://habr.com/ru/post/fr439762/


All Articles