Pourquoi un diplôme en informatique est-il important pour un programmeur professionnel? [fermé]


63

J'ai un diplôme en informatique. Cela a été formidable d'ouvrir des portes et de trouver un emploi. En ce qui me concerne dans le domaine professionnel de la programmation C # .NET (la plate-forme et le langage les plus populaires dans la région où je travaille, sinon l'ensemble des États-Unis sur le système d'exploitation le plus populaire au monde), ce n'est guère utile. Pourquoi pensez-vous que cela vous aide en tant que programmeur dans votre carrière professionnelle (en dehors de l'algorithme prims pour impressionner certains intervieweurs)?

Dans le monde actuel, l'adaptation, un esprit rapide, une communication forte, des compétences en OO et des compétences fondamentales en conception permettent à un développeur d'écrire un logiciel qu'un client acceptera. Ces compétences ne sont survolées que dans le programme cs. Dans mon esprit, la lecture d’un livre C # de 500 pages par Wrox offre des compétences bien plus utilisables que quatre années de cours de maths blaster en comp-sci. Beaucoup ne sont pas d'accord. Alors, pourquoi un diplôme en informatique est-il important?


59
"L'informatique ne concerne pas plus les ordinateurs que l'astronomie ne concerne les télescopes." - Edsger Dijkstra
Eric Lippert

4
La mémorisation ne suffit pas. Il faut la formation pour savoir comment utiliser Reg Ex et l'expérience pour savoir quand l'utiliser. Je voudrais inclure des livres de lecture dans le cadre de l'éducation. L’expérience professionnelle vous encourage rarement à faire les choses correctement.
Zachary Scott

10
C'est important quand tu n'en as pas
Aditya P

2
J'ai eu un 2.8 aussi, assez moyen. Mais nous avons surtout appris le C / Java et certains éléments Web, aucun élément C #. Quoi qu'il en soit, je pense que CS est la "deuxième meilleure chose", car les programmes de 4 ans de CS ne sont pas vraiment faciles et cela montre que vous pouvez travailler dur pour obtenir le diplôme. Pourquoi est-ce important de toute façon? ça vous fait le boulot!

1
@ luis.espinal Je remets en question ces statistiques. Je doute que 70% de tout le code soit en C (pensez à tous les groupes silencieux Fortran, COBOL, PL1 et Rexx). Une pluralité, certes, mais une vaste majorité, je suis sceptique. Il y a beaucoup de périphériques intégrés, mais le nombre de périphériques intégrés ne dit rien sur la source d'origine. Une fois qu’il est écrit pour le premier périphérique spécifique, il est généralement bon pour tous les périphériques suivants. et vraisemblablement, un lot est réutilisé pour des dérivés proches, que ce soit dans la même ligne d'une révision ultérieure ou dans une ligne différente de la même famille de produits.
JustinC

Réponses:


133

Pourquoi un diplôme en informatique ?:

  • J'ai travaillé avec un développeur qui stockait des milliers d'éléments dans une table de hachage et ne faisait qu'itérer les valeurs. Il n'a jamais accédé par un hachage. De toute évidence, il ne savait pas comment une table de hachage fonctionnait ou pourquoi vous en utiliseriez une - un diplôme en informatique pourrait vous aider.
  • Lorsque vous travaillez avec des expressions régulières, il semble plus facile pour les personnes exposées à la théorie de base des automates et aux langages formels de raisonner sur ce qui se passe et de résoudre leurs problèmes - un diplôme de niveau CS pourrait vous aider.
  • Un développeur qui vient de terminer ses études peut être en mesure de décomposer les problèmes dans divers états d'esprit de paradigme (OO, fonctionnel, logique) immédiatement, tandis qu'un nouveau développeur sans diplôme a besoin d'expérience pour pouvoir faire de même.
  • Les écoles enseignent la complexité informatique. Les développeurs non diplômés peuvent sentir ce qui est le mieux, mais une compréhension formelle est parfois agréable, en particulier pour expliquer les résultats à un collègue.
  • Un diplôme offre une introduction à de nombreux modèles de la machine - matériel, système d'exploitation, structures de données communes, réseau, machines virtuelles. Avec ces modèles en tête, il est plus facile de développer une intuition lorsqu'un problème survient lorsque quelque chose ne va pas. Encore une fois, les développeurs non diplômants construisent les mêmes modèles, mais cela prend du temps.
  • Les conseils d'un expert dans n'importe quelle discipline peuvent aider l'apprenant à éviter les impasses et les sujets manqués. La lecture est excellente mais elle ne remplace pas un excellent professeur.

Cela ne veut pas dire qu'un diplôme CS est nécessaire pour être un bon développeur. À peine. Certains des meilleurs développeurs avec lesquels j'ai travaillé n'ont aucun diplôme. Un diplôme vous donne un bon départ. À la fin de vos études, vous avez (espérons-le) écrit une bonne quantité de code dans divers langages et environnements afin de résoudre de nombreux types de problèmes. Cela vous met sur la voie des 10 000 heures requises pour être un expert.

Un deuxième avantage est que cela montre aux employeurs que vous êtes capable de vous engager dans un objectif à long terme et de réussir. Dans de nombreuses entreprises, je pense que cela est plus important que ce que vous avez appris.


4
+1 - Cela a du sens. Les conseils d'experts m'ont probablement aidé de façons que je ne reconnais pas. Je me demande encore si quatre années d'enseignement général l'emportent sur quatre années d'expérience dans l'industrie, en supposant que les deux développeurs sont également motivés à apprendre. Il y a un certain niveau de discipline que je n'avais pas avant le diplôme, cela compte certainement pour quelque chose.
P.Brian.Mackey

4
Apprendre la bonne terminologie et passer beaucoup de temps avec d’autres personnes qui apprennent le même matériel sont également des avantages qui vont de pair avec ce morceau de papier coûteux.
Sal

65
D'autre part, j'ai vu des diplômés qui échouent encore au maximum de cette liste :)
Joel Gauvreau

1
Gee ils pourraient avoir entendu parler de la théorie des graphes aussi. Cela pourrait simplifier un peu les applications de partitionnement en clients et serveurs, réseaux, DAG et arborescences.
Tim Williscroft

3
@JustinC - Votre affirmation selon laquelle "les titulaires de diplômes ont tendance à les défendre pour une raison quelconque parce qu'ils les ont" est l'une des raisons fondamentales pour lesquelles j'ai posé la question. J'ai vu cette défense irrationnelle aveugle de première main. Le contraire est également vrai.
P.Brian.Mackey

87

Dans 40 ans, je m'attends à ce que .NET et C # ne soient rien de plus qu'un lourd tas de code hérité sur des systèmes d'exploitation obsolètes.

Mais les concepts informatiques fondamentaux seront toujours aussi vivants que lorsque Shannon, Von Neumann, Knuth, Dijkstra, Hoare et les autres les ont extraits des bases de la logique formelle et des mathématiques ... il y a plus de 40 ans.


28
+1 - très vrai, mais dans 40 ans, je m'en fous.
P.Brian.Mackey

3
@ P.Brian.Mackey: Je suppose que dans 10 ans, C # sera sur la route et dans 20 ans, ce sera plus un souvenir, et dans 30 ans, il faudra des archéologues chevronnés du code à cheveux gris . Les personnes qui s’attachent à un ensemble d’outils deviennent obsolètes. J'ai eu la chance de lire d'anciens articles sur les logiciels système de la fin des années 1970 et du début des années 1980. Parmi ces systèmes logiciels, très peu sont dans le radar d'aujourd'hui. Peut-être 1 ou 2 (Unix et Lisp). Bien que la base d'installation d'aujourd'hui soit plus grande, je m'attends à ce que quelque chose de similaire se produise.
Paul Nathan

4
@ P.Brian.Mackey Dites ce que vous voudrez, mais je prévois de continuer à jouer dans 40 ans et dans 80 ans aussi si j'ai un mot à dire.
Matthew Scharley

2
@Paul Nathan: Pour approfondir votre point de vue, certains des fondements fondamentaux de la programmation remontent aux années 1930 (par exemple, en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis ). Je me demande si / comment nous allons écrire du code dans 80 ans :)
phooji

3
@phooji (charge "routines legacy-c-sharp" ...): P
Mark C

37

J'utilise presque tous les CS que j'ai étudiés à l'école (*) tous les jours à mon travail. Si vous souhaitez travailler dans la conception de langages de programmation, l'optimisation des moteurs de recherche, l'analyse quantitative ou tout autre domaine similaire, je suppose que vous pouvez le faire sans diplôme pertinent, mais il semble que vous ayez énormément de choses à apprendre sur le tas. Je ne suis pas particulièrement instruit compte tenu de mon travail; beaucoup de mes collègues ont un doctorat en informatique et plusieurs d'entre eux ont été professeurs de CS.

L'obtention de mon diplôme en valait la peine pour moi. il s'est payé beaucoup, beaucoup de fois en dollars et en satisfaction.

Cela dit, je comprends parfaitement votre argument. La plupart des personnes qui programment des ordinateurs ont des emplois qui n'exigent pas de diplôme en informatique; ils ont besoin, par exemple, d'une solide expérience de la programmation pratique au niveau de la communauté et du collège, ainsi que de la connaissance des tendances actuelles du secteur. Et c'est bon. Vous n'avez pas besoin d'un diplôme en biologie marine pour gérer un magasin d'aquariophilie avec succès, et je pense que les magasins d'aquarium sont géniaux. Mais il est extrêmement difficile de trouver un emploi à Woods Hole si tout ce que vous savez faire, c'est élever des poissons rouges.


(*) J'ai un baccalauréat en mathématiques appliquées et informatique de Waterloo.


4
Je me souviens de l'un de mes professeurs de CS qui disait que seulement 2% d'entre vous obtiendraient un emploi qui leur permettrait de traiter régulièrement des principes de l'informatique .
terre rouge

15
@el fuser: En effet; Maintenant, une question intéressante qui est peut-être en rapport avec cette discussion est : le but de l’enseignement supérieur est-il simplement de former à un travail particulier? Je ne crois pas que ce soit le cas. Les universités ne sont pas des écoles professionnelles. leur fonction est de créer des connaissances par la recherche et d’exposer les étudiants à cet univers de connaissances. Le fait que cela donne aux étudiants des compétences professionnelles me semble être un effet secondaire plutôt qu'un objectif. À Waterloo, on nous a dit explicitement que nous allions apprendre la théorie et non la pratique.
Eric Lippert

1
Cependant, en général et quel que soit le programme, la création de recherches originales dans un cadre universitaire se produit rarement avant la fin de la période de formation appelée programme de licence. La recherche a lieu avant cela, mais généralement, l’étude de matériaux véritablement nouveaux est réservée à ceux qui suivent un programme de maîtrise ou de doctorat. En d’autres termes, vous vous écartez souvent des découvertes, mais vers un renforcement de ce que vous savez déjà. La recherche de premier cycle porte davantage sur le processus de recherche que sur la croissance d'un corpus de connaissances particulier. La recherche privée a un objectif différent.
JustinC

1
Le jour où les meilleurs emplois n'exigent plus de diplôme, c'est le jour où les universités n'ont plus d'étudiants pour financer leurs programmes.
P.Brian.Mackey

combien de fois Anders utilise-t-il le sien?)
Matthew Whited

22

C'est important parce que la technologie ne reste pas statique. L'informatique est la base de toute technologie numérique. La plupart des programmeurs autodidactes durent exactement un cycle technologique car ils ne possèdent pas les bases pour survivre à un changement de paradigme majeur. Bien sûr, il existe des exceptions à la règle, mais une base solide en informatique augmente considérablement les chances de survivre à un changement de paradigme majeur.


4
Je ne savais pas ce qu'était un peu difficile avant de lire Coders At Work . Je suppose que vous avez survécu à un changement de paradigme ou à deux et que vous parlez d'expérience. :)
Dave Neeley

3
Je ne suis pas d'accord. Il est facile d’accéder à des ressources qui enseignent les concepts fondamentaux en ligne (et il est gratifiant de pouvoir les trouver par vous-même). Par exemple, academearear.org/subjects/computer-science est un bon point de départ. Des informations détaillées sur les nouveaux modèles architecturaux peuvent être consultées gratuitement sur chromium.org/developers/design-documents/… . Souvent, les ressources en ligne disponibles gratuitement sont bien meilleures et plus récentes que celles que vous attendez d’un collège local.
Evan Plaice

13
Je pense que vous l'avez exactement à l'envers. Un programmeur n'a jamais fini d'apprendre. Les programmeurs autodidactes ont démontré leur capacité à acquérir des connaissances sans avoir besoin d'un cadre formel, de délais impartis de l'extérieur, etc. C'est exactement ce dont on a besoin pour survivre aux changements du marché.
Mud

2
(suite) Si vous parlez de changement de paradigme logiciel ... Quel changement de paradigme? La POO n'est pas tout à fait nouvelle, pas plus que la programmation fonctionnelle. Les bases de données existent depuis très longtemps. Les nombres à virgule flottante sont normalisés depuis 1985 (IEEE 754). Le seul changement important que je vois est le passage aux systèmes de traitement distributifs (systèmes extrêmement en réseau qui évoluent et programmes qui tirent parti de nombreuses plates-formes matérielles de base), et la transition vers un jeu de caractères international normalisé (UTF-8); qui ne sont pas vraiment couverts par compsci.
Evan Plaice

2
@Mud and Evan: Je suppose que vous avez manqué la partie "Bien sûr, il y a des exceptions à la règle" de mon commentaire. Je suppose que vous êtes tous les deux jeunes et non grevés. Cette dynamique changera avec l'âge. Je suis sur le terrain depuis plus de trente ans. J'ai vu beaucoup de programmeurs autodidactes disparaître après que le stress d'élever une famille a commencé à entrer en scène et que le temps qu'il fallait pour apprendre les bases sur ses propres approches a été réduit à zéro. J'aimerais beaucoup avoir cette même conversation quand vous aurez tous les deux 40 ans.
peu-twiddler

14

Cela dépend de ce que vous voulez faire. Si votre objectif est principalement la programmation de logiciels de gestion dans le monde, où le problème commercial et les problèmes pratiques de gestion de la complexité sont la partie difficile, alors oui, un diplôme en informatique ne vous aidera pas beaucoup. Si, toutefois, votre objectif est de programmer des programmes dont la difficulté principale est technique, alors un diplôme en informatique est plus utile. (Bien que je n’aie pas de diplôme de CS, je me sens donc comme un gros hypocrite, alors n'hésitez pas à ajouter "ou autodidacte dans des matières de CS".)

Je suis sûr que de nombreux programmeurs sont très doués pour la gestion de la complexité, la programmation dans l’ensemble et la résolution de problèmes professionnels courants, mais seraient totalement perdus si vous leur demandiez d’écrire un allocateur de mémoire, une bibliothèque de parallélisme ou une bibliothèque. collections de bibliothèque, ou un système d'exploitation, ou un compilateur, etc. Je suis sûr que le contraire existe également dans une mesure décente. Les deux ont leur place et méritent le respect, mais un diplôme de niveau CS aide beaucoup plus sur le plan technique.


Pourquoi? CS est tout au sujet de résoudre les problèmes complexes, quelle que soit la nature d'un problème. CS devrait être utile même si vous ne programmez rien du tout - c'est un descendant d'une cybernétique oubliée mais essentielle.
SK-logic

12

Je ne pense pas qu'un diplôme CS soit un indicateur absolu qu'une personne est un bon développeur de logiciels. En fait, j'ai débuté ma carrière en tant que programmeur avec un diplôme en mathématiques, mais avec un fort parti pris pour les CS (les mathématiques et les CS étaient intégrées dans mon programme d'études). Je pense que globalement, c'est important pour deux raisons.

1 - Parce que les ingénieurs ne sont pas les premiers à recruter

Les ressources humaines sont. Et pendant que je vois beaucoup de gens rouler des yeux, je dis "Dieu merci!" Quoi de plus important - que vous laissiez les ingénieurs faire des choses (ou casser des choses), ou que vous leur fassiez trier des milliers de CV et des milliers d'entretiens?

Nous avons donc des responsables des ressources humaines et ceux-ci sélectionnent les candidats jusqu'à ce que nous arrivions à un groupe clé pouvant être sélectionnés par des ingénieurs. Les responsables des ressources humaines ont appris au fil des ans que l'obtention d'un diplôme de niveau CS est un indicateur assez convaincant du fait que le candidat sait quelque chose sur le développement de logiciels. Espérons qu'ils sachent également que l'écriture de logiciel pendant 20 ans est un bon indicateur que le candidat peut écrire un logiciel.

2 - Parce qu’avoir un système d’apprentissage de la CS est mieux que rien

CS est un domaine immense avec beaucoup à connaître. Et ça change tout le temps. Ces jours-ci, je peux affirmer sans crainte que les 75% de cours suivis dans mes études de premier cycle sont devenus inutiles pour ma carrière. Et que les cours de ma maîtrise d'il y a 5 ans se déprécient rapidement. Mais quand j'ai commencé, j'étais heureux d'avoir payé une grande institution pour m'enseigner quelque chose sur l'organisation informatique, les réseaux, un bon processus d'ingénierie logicielle, la conception orientée objet, les compilateurs et la syntaxe / sémantique d'un langage de programmation important qui était actuellement commercialisable.

Et j'étais heureux que ce soit dans un environnement où quelqu'un était payé pour m'expliquer des choses lorsque le projet livre / site web / tour n'était pas évident.

Et j'étais heureux d'avoir accès à un laboratoire où la santé de l'ordinateur et le SDE n'étaient pas mon problème - je pouvais plus ou moins me concentrer et me concentrer sur une petite partie du problème plutôt que d'avoir à réparer tous les outils nécessaires pour résoudre le problème. le problème.

Et bien que les cours n'enseignent pas explicitement une bonne communication, je pense que la seule façon de vraiment apprendre cela consiste à travailler en équipe - ce qui EST un élément majeur de nombreuses institutions proposant des diplômes de CS.

Et un calendrier avec des retours fréquents (notes et examens) qui me permettait de savoir si j'avais vraiment compris ce que l'on m'avait enseigné.

Ces choses se combinent dans mon esprit pour valoir plus que n'importe quel livre sur le sujet, mais ce n’est certainement pas la solution idéale. Il y a certainement des choses qui ne me dérangeraient pas de voir les établissements d'enseignement supérieur s'améliorer, et je pense qu'environ 10 ans après l'obtention de votre diplôme, le diplôme que vous avez obtenu à l'origine est moins important que le travail que vous avez accompli depuis.


12

Pour moi, la raison en est que je sais qu'ils ont vécu des parcours difficiles et qu'ils n'ont pas abandonné. Certains cours tels que Compilers, Data Struct, Discrete Math (et autres) ont eu tendance à effacer beaucoup de gens des programmes CS. Avoir un diplôme CS signifie que vous avez travaillé dur et payé un prix (longues nuits pour que les programmes fonctionnent), plutôt que de sortir pour le plaisir.


+1 - lol, je ne peux pas discuter beaucoup avec ça. Bien que j'aimais les mathématiques discrètes. Eu un grand professeur qui a fait beaucoup d'impressions de Yoda.
P.Brian.Mackey

10

Pour moi, c'est une question de mentalité .

Votre état d'esprit définit la manière dont vous allez aborder un problème donné et vous permet d'envisager un plus large éventail d'opportunités que celles non couvertes par les concepts.

Un exemple typique est le problème "Travelling Salesman" où vous savez qu'il 1) est NP-complet pour la version générale, vous devez donc essayer toutes les possibilités sauf 2) que si vous en savez plus sur le problème, vous pouvez soit approximer dans un intervalle certaines limites ou dites que vous savez que le courant alternatif est toujours plus long que AB + BC (ce qui est vrai pour les distances mais pas pour les prix) vous permettant de le résoudre en moins de temps.

L'analyse numérique est un autre exemple. Vous devez savoir que, pour minimiser les imprécisions numériques, vous devez aborder vos calculs différemment de la méthode mathématique simple. Cela prend des connaissances théoriques et il est peu probable que vous en preniez conscience à moins que vous ne soyez explicitement mordu par cela.


9

Vraiment? Sensationnel.

Donc, vous me dites que les compétences en C # et en POO sont suffisantes et que vous pouvez concevoir votre propre algorithme de tri aléatoire et déchiffrer les nuances les plus fines de la manière de traiter les problèmes complets des NP dans la vie réelle?

C # et OOP conviennent, mais si vous essayez de faire quelque chose de logique, alors vous avez besoin des bases de l’informatique.

Mec, vous ne saurez même pas quel conteneur C # utiliser si vos compétences en structures de données ou en algorithmes ne sont pas à la hauteur.

Permet de grandir, maintenant.


23
Facile là-bas, tigre.
Whatsisname

23
"concevez votre propre algorithme pour le tri aléatoire et déchiffrez les nuances les plus fines de la manière de traiter les problèmes complets du NP dans la vie réelle", je ne saurais trop insister sur le fait que la majeure partie de mon travail quotidien consiste en ces activités .... / sarcasme
quentin-starin

4
Ce que je dis, c’est que 95% des personnes avec qui je travaille et avec qui j’ai travaillé par le passé passent presque 0 heure à concevoir des algorithmes. Je passe la majorité de mon temps à rendre le code plus concis et facile à lire. Très peu de temps est consacré aux "nuances les plus fines". En fait, je trouverais intéressant de passer au moins un peu de temps à trier un flux de travail sur un tableau blanc ... quelque chose que je viens de faire moi-même. Discutez-vous régulièrement de NP avec vos collègues? Dans quel domaine travaillez-vous où vous devez écrire des sortes personnalisées au lieu de mettre en œuvre des langages de programmation fonctionnels?
P.Brian.Mackey

3
@ P.Brian.Mackey: Le développement logiciel est une profession en plein essor. Combien de développeurs de logiciels travaillent pour votre organisation et ont plus de 50 ans? À mesure que les développeurs de logiciels vieillissent, un diplôme en informatique peut faire la différence entre avoir un emploi et être inemployable. Alors que je suis actuellement titulaire de diplômes de premier cycle et de cycles supérieurs en informatique, j'ai reçu ma formation initiale dans ce domaine dans les écoles techniques de la marine et du DoD à la fin des années soixante-dix. Tous les gars avec qui j'ai servi et qui ne se sont pas donné la peine de terminer un diplôme en informatique après avoir quitté l'armée ne sont plus sur le terrain.
peu-twiddler

7
Pourquoi tout le monde semble-t-il accepter aveuglément l'hypothèse selon laquelle un programme d'études collégial en CS formel est obligatoire pour avoir une connaissance des concepts CS? Peut-être que c'est un échec de leur raisonnement déductif. Je suppose qu'ils ont besoin de plus de cours de CS.
Quentin-Starin

6

Je suppose que vous ne vous êtes pas vraiment impliqué dans le diplôme à ce moment-là, vous avez juste pris ce dont vous aviez besoin et êtes sorti, ou vous êtes allé dans une école qui considérait les majors CS comme des "codeurs" et non des "programmeurs". En outre, certains de mes meilleurs / préférés "CS" classes sont ceux qui - au moins dans mon université - sont sous le département de génie électrique. Mon exposition à divers styles et architectures a toujours été très importante et mon diplôme a facilité cela dans un environnement "contrôlé".

Des classes qui ne sont pas que des algorithmes et des mèches délicates:

  • Compilateurs
  • Systèmes d'exploitation
  • VHDL / Systèmes Embarqués
  • Assemblage et micro-contrôleurs
  • Génie logiciel

Et enfin, une classe qui a battu la merde hors de moi et qui n'était que des algorithmes et des structures de données: l'intelligence artificielle. Il y a des choses qui passent par le système universitaire vont grandement accélérer le processus d'apprentissage, et je considérerais que ce qui a été appris est précieux pour la recherche d'emploi ultérieure.


Quelle est votre définition de "codeur" et de "programmeur"? Pour moi, cela peut être la même chose et contraste avec "informaticien".
Mark C

Coder écrit simplement le code, ne pense pas nécessairement aux différents paradigmes de conception ou processus de pensée applicables à la création de meilleurs codes. En réalité, les programmeurs pensent au code qu'ils écrivent et l'abordent dans une perspective descendante au lieu d'une première perspective ascendante.
Jeff Langemeier

Quelle est votre définition de "singe de code" et "programmeur"? Le programmeur peut penser aux moyens de résoudre le problème que le code argent ne peut pas ...
Coyote21

La passion n'est pas récompensée par un diplôme. C'est juste une partie de qui vous êtes.
P.Brian.Mackey

@ P.Brian Parfois, il se trouve que votre passion décerne un diplôme et est stimulée par l'obtention de ce diplôme.
Jeff Langemeier

4

Mon opinion est que, sauf si vous postulez pour des postes en "Computer-Sciency", tout diplôme qui implique une concentration sur les compétences informatiques est à peu près équivalent.

En fait, beaucoup de programmeurs que je connais ont obtenu un diplôme dans une discipline complètement différente. Les meilleurs programmeurs que je connaisse ont des diplômes en génie civil, linguistique, économie et finance.

En fin de compte, une fois que vous avez de l'expérience, votre diplôme devient un test de réussite ou d'échec pour un recruteur. Autrement dit, à moins que vous ne le receviez d'une école impressionnante ou d'un diplôme de troisième cycle, peu importe ce que votre majeure était.


L’un des meilleurs programmeurs est un économiste qui travaille exclusivement dans Excel / VBA et R. Il a réalisé d’excellentes choses dans Excel.
Sal

@sal Ecrire dans Excel et R ne nécessite pas de diplôme CS. Écrire Excel ou R le plus probablement le ferait.
Alnitak

@ alnitak - L'écriture d'Excel ou de R ne nécessite pas non plus de diplôme en informatique. Voilà le genre de propos de ma réponse et de celle de sal
JohnFx

@JohnFX: J'ai obtenu mon diplôme avec les honneurs latins de l'un des vingt meilleurs programmes CS aux États-Unis, et ce seul titre de certification me permet de franchir la porte (je suis également titulaire d'un MSCS d'une autre école réputée). J'ai commencé sur le terrain en tant qu'opérateur informatique et programmeur tout droit sorti du lycée. J'ai reçu ma formation initiale en développement de systèmes informatiques et de logiciels de la US Navy et de la National Security Agency; par conséquent, j'ai travaillé sur le terrain sans BSCS pendant plusieurs années. Tout ce que je peux dire, c'est que c'était littéralement comme si les cieux s'étaient séparés lorsque j'ai terminé ma BSCS.
peu-twiddler

@ bit-twiddler - est-ce que cela a pour but de soutenir ou de réfuter ma réponse? Il semble que cela corrobore mon affirmation finale selon laquelle il importe que vous ayez un diplôme d'études supérieures ou de troisième cycle.
JohnFx

4

ce n'est pas le cas pour moi et beaucoup de mes collègues (aucun d'entre nous n'a obtenu de diplôme de CS)


3

OK alors qu'en est-il

Si vous avez parcouru les sujets suivants:

a.architecture et organisation de l'ordinateur

b.Ingénierie logicielle

c.DBMS

Électronique de base

e. Circuit électronique numérique de base

f.Microprocesseur

g.Compiler Design

Pensez-vous que tout ce qui précède n’est que purement formel? N'oubliez pas que les points ci-dessus font de "bon programmeur" un "grand programmeur".

Parcourez-le pour en savoir plus sur l'importance des matières électriques et électroniques


3

J'ai un diplôme en informatique. Cela a été formidable d'ouvrir des portes et de trouver un emploi. En ce qui me concerne dans le domaine professionnel de la programmation C # .NET (la plate-forme et le langage les plus populaires dans la région où je travaille, sinon l'ensemble des États-Unis sur le système d'exploitation le plus populaire au monde ), il n'est guère utile.

Plus de 70% du code est écrit en C (car il y a plus de périphériques intégrés que d'applications de haut niveau). Selon les recherches d’emploi les plus courantes, telles que les dés ou l’indice TIOBE, Java est le langage de programmation le plus utilisé par les entreprises (les serveurs principaux Unix / Linux étant plus nombreux que les serveurs Windows). Il existe davantage de smartphones et de tablettes (la plate-forme informatique de l’avenir) utilisant une variante de Linux ou Mac OS autre que Windows, programmée sur autre chose que C # ou .NET.

Regardez votre routeur chez vous, regardez votre téléphone portable, regardez l'ordinateur à l'intérieur de votre voiture, regardez le micro-ondes à la maison, les contrôleurs à l'intérieur de votre système de climatisation à la maison, à l'intérieur de votre téléphone et de votre télécopieur et imprimante de travail / scanner. Regardez le nombre d'appareils informatisés (qui sont plus nombreux que les systèmes Windows.)

Pensez-vous qu'ils sont programmés en C #?

Si vous pensez vraiment que .NET ou C # sont les plates-formes les plus populaires au monde, vous voudrez peut-être retourner dans votre école CS et demander un remboursement.

Pourquoi pensez-vous que cela vous aide en tant que programmeur dans votre carrière professionnelle (en dehors de l'algorithme prims pour impressionner certains intervieweurs)?

Peut-être parce que la programmation représente bien plus que la création de pages Web dynamiques de développement de base et d'applications d'entreprise? Pour cela, vous n'avez même pas besoin d'un baccalauréat, un AA suffit - je le sais parce que j'ai commencé ma carrière en programmation avec un diplôme d'AA, puis lentement mais sûrement vers un CS, puis j'ai poursuivi des études supérieures tout en travaillant à plein temps en tant que développeur. .

Il y a développement intégré, développement de pilote de périphérique, développement de systèmes d'exploitation, développement d'algorithmes, signaux, communications, protocoles réseau, développement de moteur de base de données, développement de système de fichiers, calcul distribué, compilateurs. Pas de recherche, mais du travail réel dans des organisations à but lucratif. Sauf ceux qui sont naturellement doués, on ne peut généralement pas les pirater dans l'un de ces domaines industriels sans un diplôme CS (parfois même pas avec un BS.)

Une personne qui obtient un diplôme de CS et qui y prête attention le sait. Comment se fait-il que vous ne l'ayez pas?

Dans le monde actuel, l'adaptation, un esprit rapide, une communication forte, des compétences en OO et des compétences fondamentales en conception permettent à un développeur d'écrire un logiciel qu'un client acceptera.

OO est né à cause de CS. Et la plupart des gens qui pensent faire de l’OA ne peuvent même pas faire du bon travail. Il suffit de regarder à l'extérieur et de regarder l'état désastreux des logiciels (en particulier en Java et .NET, sans parler de PHP.) Une solide expérience en CS (ou un diplôme d'études supérieures en ingénierie) ne garantit pas à 100% une bonne compréhension de OO. et des compétences analytiques, mais cela aide généralement. OTH, ne pas avoir une formation de base en CS est généralement un drapeau rouge en ce qui concerne OO et les compétences analytiques. L'industrie dispose de suffisamment de preuves empiriques pour appuyer cette affirmation.

Ces compétences ne sont survolées que dans le programme cs.

En fonction du programme CS et en fonction de l'étudiant. Au moins pour moi, j'ai vu plein de bons cours sur la conception, l'analyse OO, les outils et pratiques commerciaux, nous avions des cours mixtes avec des entreprises locales et des stages, des projets financés par l'entreprise et des travaux de recherche, de rédaction technique, etc. Désolé, je ne peux pas comprendre ou comprendre cette déclaration.

Dans mon esprit, la lecture d’un livre C # de 500 pages par Wrox offre des compétences bien plus utilisables que quatre années de cours de maths blaster en comp-sci.

Encore une fois, en fonction du travail que vous faites. Même dans l'entreprise, j'ai utilisé mon CS pour réellement réparer ou améliorer des choses. Tout cela implique modélisation, architecture, calcul distribué, sécurité et hautes performances, haute disponibilité et tolérance aux pannes. J'ai appris tout ça dans CS.

Il n'y a rien de mal à utiliser un livre Wrox pour obtenir un ensemble de compétences spécifiques au contexte et à la technologie . Je le fais moi-même. Mais mon expérience en CS me donne le contexte sur lequel travailler. Sans mon expérience en informatique, tout ce que je pourrais faire serait programmer, coder (c'est tout ce que je pourrais faire quand je n'avais qu'un grade AA au début de ma carrière.)

Beaucoup ne sont pas d'accord.

Surprenant, non.

Alors, pourquoi un diplôme en informatique est-il important?

Selon vous, qui propose Google, Hadoop, Cassandra ou des moteurs de base de données haute performance? Qui a écrit le noyau du système d'exploitation Windows? Qui pensez-vous programmer les outils bien-aimés que vous utilisez pour faire votre développement C #?

Une chose dont je suis sûr, c’est que les outils que vous utilisez pour faire du développement C # sont accompagnés d’un type CS.

Que vous ayez besoin ou non d'un diplôme de niveau CS dépend du type de travail que vous effectuez, du type de travail que vous souhaitez effectuer, du type de travail que vous êtes capable de réaliser.

Il y a beaucoup de travail dans l'entreprise et le développement Web qui n'exigent pas de diplôme CS. Je l'accorde. Je sais aussi que le monde de la programmation est beaucoup plus vaste que ces deux domaines, avec de nombreux domaines (la plupart d’entre eux en réalité) exigeant un diplôme en informatique ou plus.

Vous avez un diplôme en informatique, mais vous ne savez pas que c'est un mystère.


TIOBE est une merde pour déterminer combien de langage de programmation est utilisé. C'est une mesure de la popularité d'une langue sur Internet (en termes de nombre de références), et non en termes de lignes de code écrites.
Billy ONeal

En raison de ses variabilités spécifiques aux langages, les lettres de crédit ne sont pas pertinentes d’un langage de programmation à l’autre et ne peuvent donc pas être utilisées pour mesurer l’utilisation du langage de programmation d’un secteur à l’autre. Et la popularité des recherches linguistiques sur Internet agit comme un indicateur partiel de la profondeur et de l'intérêt de l'utilisation (ou de l'absence d'utilisation) ... si vous êtes conscient du biais inévitable. En soi, ** l'indice TIOBE ne signifie rien - seul un imbécile penserait le contraire; et seul un imbécile pourrait penser que c'est ce que je dis.
luis.espinal

Lorsqu'il est associé à d'autres indicateurs (tels que la recherche d'emploi et le développement d'un type de produit), il aide à estimer les tendances en matière d'utilisation de la technologie. En d’autres termes, il est utile ou inutile, selon l’utilisation que vous en faites, la manière dont vous l’utilisez, et avec quels autres indicateurs il est associé.
luis.espinal

Mon point est que vous semblez utiliser cet index pour faire une déclaration sur l' utilisation d'un langage de programmation, ce que cet index ne mesure pas. Je me suis mal exprimé lorsque j'ai dit que LoC était écrite - mais il n'y a pas de bonne façon de dire «quantité de code écrit», ce que je voulais dire. TIOBE est un concours de popularité, et dans cette course, Java va faire sauter tous les autres aussi longtemps que c'est la linqua franca des cours d'initiation à la programmation. (Non pas parce que cela signifie que ces étudiants ne savent rien d'autre; mais parce que les étudiants sont généralement plus forts que les professionnels. (C'est-à-dire vraiment le vôtre)
Billy ONeal

1

Je me souviens avoir vu quelques notions de base dans les cours de CS qui étaient parfois très utiles. Le processus de Waterfall et ses étapes ont été quelque chose que j'ai utilisé à plusieurs reprises dans ma carrière, avec quelques variantes pour Agile où il n'est pas aussi rigide, mais les étapes sont les mêmes.

Des compétences en résolution de problèmes et diverses méthodes heuristiques algorithmiques peuvent également être utiles. Il y a quelque chose à dire sur les avantages indirects d'un diplôme CS. Par exemple, apprendre à justifier une réponse pour montrer pourquoi quelque chose est correct n'est que l'une des compétences que j'ai perfectionnées à l'université, mais je ne sais pas à quel point il serait évident qu'il s'agisse d'un avantage à la fin du programme.


1

Je suis d'accord avec Thorbjørn Ravn Andersen en ce qui concerne l'état d'esprit. C’est l’essentiel que vous développez avec un bon cursus CS.

Cela revient essentiellement à comprendre des choses telles que les structures de données et les algorithmes. Ce n’est pas que vous ne puissiez pas l’apprendre par vous-même, mais un bon programme d’études en CS donnera une meilleure visibilité.


Il existe d'autres sujets que seuls les majors du génie informatique et du génie informatique ont tendance à apprendre, tels que l'organisation informatique et l'architecture informatique. Apprendre à construire des ordinateurs à partir de la logique séquentielle et combinatoire en fait un meilleur développeur de logiciels car il donne un aperçu de ce qui se passe réellement à l'intérieur d'un ordinateur. En outre, les premiers programmeurs utilisant un nouveau processeur doivent comprendre des concepts tels que mémoire hiérarchique et E / S, pipelines, caches associatifs de blocs, unités de contrôle (microcodées et câblées) et différence entre le traitement scalaire et vectoriel.
peu-twiddler

Comment une étude collégiale sur la CS offrira-t-elle une meilleure exposition que dans un laboratoire où cela compte vraiment avec un mentor qualifié qui ne sait pas seulement comment cela est censé fonctionner et comment cela fonctionne réellement?
JustinC

@bit D'accord. Oui, ma réponse est plutôt désinvolte. C'était censé être comme ça pour une raison.
George Marian

@justin Je ne sais pas trop ce que vous essayez de dire. Combien de programmeurs travaillent dans un laboratoire, sans parler de mentors qualifiés?
George Marian

@JustinC: On apprend comment les choses fonctionnent dans un laboratoire (niveau technicien). On comprend pourquoi les choses fonctionnent dans les cours d’organisation et d’architecture de niveau supérieur (niveau ingénieur). Si vous achetez quelques manuels de niveau supérieur sur l'architecture et l'organisation informatiques, vous verrez ce que je veux dire.
peu-twiddler

1

L'écriture

Dans le développement de logiciels d'entreprise, il est essentiel de pouvoir écrire du code et de l' écrire . J'entends par là: écrire des courriels, des rapports de bogues, des documents techniques, etc. L'écriture et le codage nécessitent la clarté de la pensée et une économie d'expression appropriée.

Entre 2 développeurs de logiciels, mon pari est que celui qui possède un diplôme en sciences d'une université solide (programme solide en CS et cours optionnels en sciences humaines) possède les deux compétences. (Certes, cela n’est pas une garantie: les personnes en sciences humaines peuvent être de grands codeurs et des rédacteurs de premier plan; de nombreux diplômés en CS sont des machines de codage qui ne savent pas écrire, etc.).

En train de lire

Un de mes mentors a affirmé qu'il pouvait juger les développeurs de ce qu'ils lisaient. L'article original mentionne les livres WROX. À mon avis, une personne ayant un diplôme en informatique est plus susceptible de rechercher de tels ouvrages informatiques professionnels et de pouvoir les utiliser efficacement. Si on peut gérer CLR , alors on peut gérer "Professional C #".

Math

Les mathématiques développent la logique, la preuve, la rigueur, etc., et l’effet secondaire est qu’elles facilitent l’écriture. Bien que la plupart des technologies de l’information n’exigent pas d’excellentes compétences en mathématiques, la personne titulaire d’un diplôme en informatique le possédera si nécessaire. C'est une bien meilleure façon de traverser la vie que de vivre sans elle et de se demander ce que vous avez manqué à l'école.


1

Je suppose que cela dépend vraiment de la qualité du programme CS que vous avez suivi. Je sais ce que vous voulez dire, la plupart du code que j’écris quotidiennement n’est que du standard VB.Net, récupérez les données à partir de SQL Server, mettez-les sur le formulaire, sauvegardez-les dans la base de données, créez des rapports. Laver, rincer, répéter. (Très ennuyeux parfois) Le programme CS que j'ai traversé, en plus de couvrir la théorie et les connaissances fondamentales, enseignait beaucoup de choses pratiques. Nous avons couvert des domaines tels que la conception de logiciels, la conception de bases de données et la gestion de projets. Apprendre les langages de programmation était la partie la plus facile, la conception et la méthodologie de création de logiciels étaient ce que j’avais retenu de mon expérience universitaire. Nous avons eu des projets basés sur des problèmes du monde réel, parfois même la conception de systèmes logiciels pour d'autres départements sur le campus.

En tant que programmeurs, nous avons évidemment la capacité d’apprendre par nous-mêmes, c’est une nécessité dans notre domaine. Je dois dire que je suis très heureux d'avoir suivi le programme CS. Mes professeurs étaient incroyables et m'ont beaucoup appris. Mes camarades de classe étaient des gens très amusants et nous avons passé de bonnes nuits au laboratoire d’informatique. A vrai dire, ces jours me manquent un peu ......


1

Tout est dans la capacité de vivre par procuration.

Si vous sautez le diplôme, vous devrez probablement apprendre les leçons de manière très personnelle (à la dure). L'absence de diplôme ne signifie pas que vous emprunterez le chemin le plus difficile d'apprentissage par essais et erreurs. Cependant, le diplôme vous garantit une exposition à un trésor de connaissances précédemment acquises que d'autres devaient gagner par la fin des nuits, des sessions de programmation frustrées et, en général, "faire les choses à la dure".

La personne vraiment excellente ne rejettera pas ce que les autres ont trouvé vrai, mais la remettra au défi jusqu'à ce qu'elle connaisse les limites de la connaissance, puis jouera avec le "système" d'idées nouvellement acquises jusqu'à ce qu'elles se l'approprient. Il repose sur les épaules de ceux qui sont venus auparavant et vit les solutions des années écoulées sans avoir à les redécouvrir.

Bien sûr, une personne avec un diplôme en informatique n'est pas toujours le meilleur candidat. Il y a ces personnes uniques qui ont été conduites vers le ruisseau mais (pour une raison étrange) refusent de le boire.


0

J'ai 21 ans et je viens de terminer un baccalauréat en CS. Je pense que quelle que soit votre qualité de programmation, si vous êtes un CS Grad, vous serez déjà exposé à divers domaines. Donc, si vous voulez apprendre de nouvelles choses, n’ayez pas peur d’explorer, même si cela n’est pas pertinent . Si vous êtes un expert en technologie ou en langage de programmation, tant mieux. Mais je ne pense pas que vous soyez aventureux et prêt à explorer d'autres technologies. C’est comme ça que vous vous salissez (et vite aussi). Vous ne penserez pas que ce que vous explorez ne sera pas pertinent car cela ne vous aidera pas à gagner de l'argent. (Vous avez déjà étudié beaucoup de choses non pertinentes dans votre CS UG;)).
Après avoir obtenu votre diplôme, c’est la passion que vous avez dans le domaine des technologies de l’information qui fait de vous un professionnel du logiciel.
Quelqu'un est d'accord?


1
Vous ne pouvez pas supposer que quelqu'un ne sera pas intéressé à «explorer d'autres technologies» simplement parce qu'il n'a pas de diplôme de niveau CS. Ceci est une erreur.
Steven Striga

0

Eh bien, quand je suis entré dans CS, je me suis dit que je suis vraiment bon et que je ne vais rien apprendre ici. Après 5 ans, j’ai seulement appris à travailler en équipe. de l'ingénierie qui me sépare de quelqu'un qui peut écrire uniquement du code et de quelqu'un qui peut penser à ce qu'il fait avant de coder, bref, cela m'a appris à réfléchir avant même de taper une seule lettre dans mon éditeur de texte ou mon ide.


0

Obtenir un emploi en utilisant un langage open source ne signifie pas squat. La plupart des entreprises recrutent sur la base de leurs compétences plutôt que de leurs qualifications et des langages tels que PHP ont une réputation d’hobbyiste, affirmant que les gens peuvent avoir du talent sans avoir jamais étudié le CS. La seule fois où il est utile d’obtenir un emploi en utilisant les langages .Net étant donné que la plupart des amateurs ne voudront pas débourser une licence pour des milliers de licences, mais que ceux qui recherchent un premier emploi en C # auront probablement 2-3 ans d'expérience.

Bien sûr, l'expérience commerciale est vraiment précieuse car elle démontre votre capacité à livrer un code de qualité dans les délais.

En conclusion, vous obtenez des interviews pour travailler avec des langues non-open-source.


0

Un diplôme universitaire ou universitaire signifie que vous avez étudié et maîtrisé certaines notions de base, indispensables à un emploi dans le monde réel, même si vous devez en apprendre d’autres par vous-même.

En outre, quand un recruteur informatique doit trouver un Soft. Dev., Et 500 candidats envoient leur CV et doivent interroger au moins 50 d'entre eux, ayant un diplôme en rapport avec votre CV, aide à la fois le recruteur et vos chances d'être embauché.

(d'un développeur de logiciel qui a étudié certaines ressources humaines)


0

Cela n'aide probablement pas beaucoup, mais maintenant que j'ai appris l'assemblage et toutes les connaissances nécessaires, je me sens comme un programmeur plus complet et je suis sûr que cela se reproduira lorsque j'irai à l'université. Je veux dire, j'utilise principalement C ou VB, je n'ai pas besoin de savoir ce qu'est un état d'attente pour créer mes programmes, mais je sais simplement que ce qui se passe derrière mon code est génial! Et la connaissance vous aide à écrire du code meilleur, plus rapide et plus facile à gérer. Un diplôme en informatique donne exactement les connaissances nécessaires pour écrire un bon code, à mon avis.


0

le génie logiciel est aujourd'hui une science expérimentale et non des mathématiques appliquées.

Les diplômes en informatique mettent l’accent sur les algorithmes. Quelle part de votre travail quotidien consiste à implémenter ou même à utiliser de nouveaux algorithmes et structures de données?

Combien implique de traiter avec des couches de cadres et les abstractions qui fuient? Dans quelle mesure essaie-t-il de déterminer ce que certaines API font réellement - plutôt que ce que la documentation implique? Combien coûte de tester et de décider comment tester?

Malgré tout, un diplôme en physique ou en chimie est une bien meilleure formation que d’avoir mémorisé Knuth.


0

Cela est important parce que les recruteurs ont l’indication que vous n'êtes pas tout à fait au courant de ce que vous êtes censé faire, mais cela ne signifie pas nécessairement que vous savez vraiment ce que vous faites ou que vous le faites d’une manière techniquement pratique.

Il y a des gens brillants diplômés qui aiment ce qu'ils font et qui sont de très bons programmeurs. Il y a aussi des idiots avec des diplômes qui sont de très mauvais programmeurs et qui ne connaissent même pas certains principes fondamentaux. Il y a des gens brillants sans diplômes qui peuvent tout développer (logiciels de gestion / compilateurs / un système d'exploitation) et il y a des idiots sans diplômes qui ne savent pas utiliser correctement une table de hachage.


0

Absolument correct, le diplôme en informatique importe peu; c'est pourquoi votre seul choix devrait être d'obtenir un diplôme d'ingénieur.

Lors des entretiens avec des candidats de différentes origines, le trait qui distingue les candidats sans diplôme est le suivant: manque de compétences techniques en communication et manque de discipline. Ce sont des traits fondamentaux appris lors de l'obtention d'un diplôme en sciences (je dirais encore plus avec un diplôme d'ingénieur).

La plupart des choses étant égales par ailleurs (et une seule série d'entretiens aboutit souvent à des candidats "à peu près égaux"), j'engagerais la personne détenant le diplôme d'ingénieur en premier, le diplôme en informatique en second lieu et le troisième sans diplôme. Cependant, il existe des moyens de rendre les choses très inégales dans la comparaison, de sorte que n'importe qui puisse battre, même ceux qui ont un pedigree - mais c'est une question distincte, n'est-ce pas?


-1

Pour un programmeur ... ça ne fait pas grand chose (à part peut-être ouvrir des portes aux interviews, comme vous l'avez dit).

Pour un travail en informatique (recherche, analyse d’algorithmes, théorie et conception du langage formel). Il est peu probable que vous appreniez ces choses dans d'autres programmes non basés sur les mathématiques.

// Disclaimer: mon diplôme est en informatique, j'ai donc dû retourner pour tous ces autres cours dans le cadre de mon travail.


-1

J'ai un diplôme en informatique. Ce qui m'a aidé à obtenir mon premier rôle en informatique, c'est le fait que la troisième année a été un stage en tant qu'administrateur informatique. Je recommande des stages en entreprise.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.