118 votes

Pourquoi don ' t ils enseignent ces choses à l’école ?

Au cours de l'été, j'ai eu la chance d'entrer dans Google Summer of Code. J'ai appris beaucoup de choses (probablement plus que ce que j'ai appris, dans la somme, de l'université, tous mes cours). Je suis vraiment se demander pourquoi ils n'enseignent pas un peu de ce que j'ai appris plus tôt dans l'école. Pour n'en nommer que quelques-uns:

  • les tests unitaires
  • le contrôle de version
  • développement agile

Il me semble qu'ils passent beaucoup de temps à l'enseignement d'autres choses comme des structures de données et algorithmes. Même si je continue de penser à ceux qui sont très important pour apprendre dès le début, pourquoi ne pas enseigner plus de ces trois devant eux? Ou est-ce juste mon école qui n'enseigne pas beaucoup de ce genre de choses?

Ne vous méprenez pas, je ne pense pas que c'est souhaitable pour les universités de toujours enseigner les plus branchés de la programmation des caprices, mais qui ne devrait pas mes professeurs à enseigner moi autre chose que "dessiner un diagramme avant de commencer à coder?"

187voto

Glyph Points 17756

La réponse la plus simple à votre question, c'est que les domaines de l'informatique et développement de logiciels sont à la fois très nouveau, et pas très bien compris. Bien que tous les scientifiques et les disciplines de l'ingénierie progressent plus rapidement dans les temps modernes, d'autres domaines ont beaucoup plus d'expérience et il est beaucoup plus large compréhension commune de la façon dont ils travaillent.

Par exemple, en dépit de progrès récents de la science des matériaux, les ingénieurs ont connu de près de 2000 ans, la façon de construire une arche de ne pas tomber, et c'est quelque chose qui peut être enseigné et appris à l'université avec relativement peu de controverse. Même si je suis entièrement d'accord avec vous sur les techniques que les développeurs de logiciels doivent apprendre, cet accord est basé sur l'expérience personnelle et informelle raisonnement. Pour être socialement acceptées sur les "meilleures pratiques", nous avons besoin de données quantitatives qui peuvent être très coûteux à collecter: combien de contrôle de version de l'aide? Comment peut-il aider? Les tests unitaires? Nous pouvons raisonner sur l'efficacité de diverses techniques, mais le fait de prouver de façon concluante que l'efficacité serait très coûteux. Nous aurions besoin de s'exécuter, logiciels réalistes projet du début à la fin, à de nombreuses reprises, avec des groupes de programmeurs qui ont l'équivalent de l'expertise, à l'aide de différentes techniques. À tout le moins, nous aurions besoin de beaucoup de données sur les projets existants de ces projets ne seraient pas disposés à la libération.

Les ingénieurs civils ont des milliers d'années de ponts à regarder, avec beaucoup d'informations. Les développeurs de logiciels, en revanche, n'ont que quelques décennies de l'information, la plupart de ce qui est gardé secret, puisqu'il y a peu de motivation pour les organisations de recueillir et de publier des informations sur leurs développeurs efficacité, même si elles sont de collecte (dont la plupart ne le sont pas).

Il y a aussi une certaine confusion des champs. De développement de logiciels, de logiciel ou de "génie", est vraiment une chose différente de l'informatique. Les développeurs de logiciels ont besoin d'une connaissance de l'informatique, mais travaillant sur les limites de la complexité algorithmique ou de raisonnement sur le parallélisme n'est pas quelque chose qu'un travail de programmeur ferons de chaque jour; de même, une véritable "informaticien" va écrire des tonnes de jeter le code qui ne fonctionne pas ou ne fasse pas quelque chose d'intéressant, et de ne pas profiter de la sorte de rigueur qu'un véritable logiciel produit.

L'émergence de l'internet et de la communauté open-source peut fournir suffisamment de données pour commencer à répondre à ces questions de façon concluante, mais même si les réponses étaient disponibles demain, il faudra probablement 100 ans, de perméat international de la société au point où tout le monde est d'accord sur ce qui devrait être enseigné dans les écoles.

Enfin, il y a certaines considérations économiques. Il a été un temps relativement court étant donné que presque tout le monde impliqué dans le développement de logiciels bon marché, facile d'accès à des machines dédiées à exécuter n'importe quel outils de développement qu'ils veulent. Il y A quelques décennies, complètement dédier une machine à juste exécutez vos tests, ou même logement une histoire infinie de code source, aurait semblé frivole cher pour beaucoup de gens.

42voto

mislav Points 7379

Parce que nos professeurs :

  1. Jamais essayé les tests unitaires,
  2. Ne sais pas comment utiliser le contrôle de version et
  3. N’avez pas entendu parler de « développement agile ».

Les étudiants devraient prendre les choses en mains propres. Nous avons fait cela et tourné très bien juste, n’a pas de nous ?

42voto

Alan Points 2190

Leonardo da Vinci a écrit,

Ceux qui sont épris de la pratique sans la science, sont comme un pilote qui va dans un navire sans gouvernail ou boussole et n'a jamais de certitude où il va. La pratique devrait toujours être fondée sur une bonne connaissance de la théorie.

Les bonnes écoles d'enseigner à la fois la théorie (structures de données, algorithmes, etc.) ainsi que la pratique (tests unitaires, contrôle de version, etc.). Cela nécessite un mélange approprié de la faculté de sorte que les deux côtés de cette pièce peut être enseignée correctement. Un corps professoral composé entièrement d'théorique types avec aucune expérience ne peut pas faire. De même, un corps professoral composé entièrement de praticiens ne le fera pas. Vous avez besoin d'un mélange, et les bonnes écoles.

40voto

pjz Points 11925

L'informatique a toujours été quelque peu contradictoires; La partie qui est au sujet de l'informatique n'est pas une science, et la partie qui est une science n'est pas sur les ordinateurs.

Les universités ont tendance à se pencher plus sur la "science" de la fin (algorithmes, datastrctures, compilateurs, etc.) parce que ces choses sont beaucoup plus 'intemporel' que les meilleures pratiques de l'industrie, qui ont tendance à évoluer et à changer d'une année à l'autre. Le Contrôle de Version, par exemple, a subi des changements étonnants dans les 5 ou 10 dernières années, mais big-O est encore big-O, et de hachage, btrees, et la récursivité sont toujours aussi utiles qu'ils étaient il y a 40 ans. Leur idée est généralement de vous donner assez de fondations que vous pouvez ramasser des outils comme git et de comprendre ce que cela signifie quand on vous dit que le sous-jacent discbased est un graphe orienté acyclique de l'algorithme SHA-1 de la cendre, et que les développeurs ont travaillé dur pour optimiser le nombre d'appels, de sorte que c'est io-lié.

Maintenant, pensez à où vous avez appris toutes les choses que vous avez eu à connaître pour comprendre cette dernière phrase - si la réponse est "université", ils font un bon travail.

11voto

Steven A. Lowe Points 40596

oh mon dieu ne me lancez pas

une fois, j'ai eu le doyen de cs à la bonne réputation de l'université me dire que la programmation orientée objet était juste une "manie" de sorte qu'ils ne proposent pas toutes les classes, en passant, les images mentales, comme le C++

pourquoi ils n'enseignent pas ces choses, eh bien, le collège est là pour vous enseigner les fondamentaux de la discipline, pas forcément les meilleures pratiques de l'industrie

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X