Quels sont les compétences que tout programmeur diplômé d'université devrait posséder? [fermé]

9

Nous avons eu un conférencier invité à notre école, il est allé sur une tangente concernant ceux qui obtiennent leur diplôme et ne pas être au niveau de compétence qu'il attend à savoir. connaissance d'une langue compilée à grande échelle comme Java, C ++ ou C #, d'un langage de script comme Python ou Ruby, d'un cadre Web. Quelles sont les autres compétences qui, selon vous, devraient être absolument essentielles pour les étudiants diplômés?


la source
Je suppose que vous voulez dire diplômé d'une université?
Michael Shaw
1
@Ptolémée: Aux États-Unis, le terme collège est correct.
Macneil
1
Volonté de se botter le cul et de désapprendre le texto, jeunes punks! socializedpr.com/…
Job

Réponses:

27

De loin, je dirais un désir d'apprendre. Le Collège n'est pas vraiment destiné à vous donner les compétences dont vous avez besoin pour devenir programmeur. Il est destiné à vous enseigner les compétences dont vous avez besoin pour apprendre ces compétences.

Jason Baker
la source
Je n'aurais pas pu mieux le dire.
Chris
4

Les nouveaux diplômés ont besoin de plus qu'un simple désir d'apprendre, ils ont besoin d'une obsession d'apprentissage, d'une compréhension de la façon d'apprendre et d'une solide connaissance des logiciels. Je ne me soucie généralement pas des langues que vous connaissez, mais chaque junior doit:

  1. Comprenez l'histoire . L'informatique est un domaine bien étudié, avec de nombreux problèmes résolus. Connaître ce fait ouvre la porte à l'apprentissage de ce qui vous attend. Même en sachant qu'il y a une histoire riche pour extraire des connaissances, c'est plus que de nombreux diplômés. Cela inclut des choses comme la notation big-O, l'histoire des algorithmes, les principes des prophètes (Knuth, K&R, Hofstdater, etc.), et les pratiques et modèles généralement acceptés.

  2. Sachez que cela peut être résolu . Je suis toujours surpris quand un développeur est bloqué par un problème. Une partie de l'apprentissage pour apprendre est le principe simple que les problèmes sont toujours facilement solubles. Une fois que vous le savez, cela oriente votre réflexion pour trouver une réponse sensée.

  3. Comprenez la décomposition . Non seulement les problèmes peuvent être résolus, mais le chemin à parcourir est aussi simple que diviser pour mieux régner. Réduisez un problème à des composants plus simples et votre réponse se présentera toujours.

  4. Savoir mesurer . En plus de pouvoir décomposer les problèmes, les nouveaux développeurs doivent savoir comment rassembler des faits sur ces problèmes. Combien de temps? Large comment? À quelle vitesse? Combien? Des faits simples sont une étape vers la compréhension et la réflexion objective. Faire des hypothèses sans faits est un moyen facile de se perdre dans l'espace problématique.

  5. Soyez objectif . Tous les problèmes peuvent être décomposés, mesurés et compris simplement. Les problèmes qui ne peuvent pas être compris nécessitent simplement une décomposition, une mesure et une compréhension supplémentaires. Il ne sert à rien de se mettre en colère ou d'être frustré, et il n'est pas productif de discuter des théories ou de blâmer. Tout comportement irrationnel ou toute croyance liée au processus de résolution des problèmes est un poison, ce qui rend les solutions très difficiles à trouver.

  6. Préférez les modèles et les principes . Vous découvrirez des dizaines de bonnes façons de faire les choses, les langages, les modèles de programmation, les architectures informatiques et même les méthodes d'ingénierie. Il n'y a pas de bonne voie, mais il existe de solides concepts sous-jacents que vous pouvez appliquer encore et encore. Apprenez à voir ces modèles, car ils guideront votre apprentissage et votre réflexion à chaque étape du processus.

Bruce Alderson
la source
1
  1. Une passion pour bien programmer
  2. Humilité
  3. La capacité d'apprendre rapidement de nouvelles choses
TaylorOtwell
la source
0

En tant qu'employeur, je n'emploierai que des programmeurs qui:

  1. Avoir une expérience du pas à pas unique dans le code.
  2. Peut sélectionner un motif de conception approprié pour résoudre un problème spécifique simple.
  3. Peut implémenter du code qui reflète le motif de conception choisi.

D'après mon expérience, moins de 5% des diplômés en informatique qui postulent pour des emplois en programmation possèdent effectivement ces compétences, au niveau de base. Ce sont les compétences minimales qui sont nécessaires pour être commercialement utiles, et surtout, tout le monde n'est pas capable d'apprendre ces compétences.

D'autres bons à avoir sont:

  • Expérience de travail sur un projet d'équipe
  • Utilisation du contrôle de source
  • Expérience des tests unitaires

Ceux-ci facilitent leur intégration avec l'équipe de développement existante, mais sont des matières qui peuvent normalement être enseignées sur le tas.

Michael Shaw
la source
0

J'ai eu une fois une équipe dont j'ai "hérité" avec principalement du personnel nouvellement diplômé et j'ai eu mon expérience que ceux qui faisaient de la vraie programmation "à côté" de leurs études (pour gagner de l'argent supplémentaire) étaient les membres les plus compétents de l'équipe. Par conséquent, l'expérience est la clé et peu importe la langue.

Cependant, si vous regardez ce que les recruteurs recherchent (sur tous les sites de recrutement courants comme jobserver.com, etc.), il est intéressant de noter qu'il y a beaucoup à demander pour le C ++, C #, Java, mais aussi qu'il y en a d'autres recherchés et des choses "exotiques" comme COBOL existent toujours.

hol
la source
0
  1. Compétences interpersonnelles et de communication
  2. Approche pragmatique (pas cette théorie académique)
  3. Capacité à penser en tant que client qui n'est pas techniquement enclin
  4. Capacité d'évaluer ce qui est important / ce qui peut être ignoré, en termes de coûts / avantages
  5. Capacité de travailler en équipe
  6. Capacité à penser de manière stratégique: architecture, extensibilité, évolutivité
  7. Ouverture à accepter que les enseignements universitaires ont peu à voir avec le monde réel (dépend de l'université - certains s'en tirent mieux).

Le processus d'apprentissage dans cette profession ne se termine jamais. Il faut constamment apprendre et s'améliorer, sinon, il "sort" très vite du jeu.

Tour
la source
Ce sont tous utiles. Cependant, presque aucun diplômé universitaire ne les possède, et ils ne sont pas essentiels, car la plupart s'acquièrent facilement en milieu de travail. Je pense que vous répondiez à une autre question.
dbkk
@dbkk - Je vous demande pardon, mais la question n'était pas "quelles sont les compétences des programmeurs diplômés" mais "ce que ... devrait avoir". De plus, non, ils ne sont pas faciles à acquérir. Bien au contraire - la plupart du temps, la plupart d'entre eux manquent encore.
Rook
1
Ce sont des compétences générales, et beaucoup ne sont pas vraiment adaptées à l'apprentissage à l'école.
David Thornley
-1

Les autres réponses sont bonnes, mais je dirais que la compétence n ° 1 négligée à l'université semble être le génie logiciel réel .

Les cours de base pour enseigner la POO et un langage comme Java sont excellents, mais en 3e et 4e année, pourquoi les étudiants (au moins dans mon université locale) écrivent-ils des compilateurs et des systèmes d'exploitation au lieu d'apprendre à identifier et à créer une bonne architecture, comment pour disséquer les exigences et créer à partir de là une liste de spécifications techniques, et peut-être plus important encore, quelle est la différence entre un bon code qui fonctionne et un mauvais code qui fonctionne.

C'est comme si nos universités voulaient presque produire des codeurs plutôt que des ingénieurs logiciels . Je n'embaucherais jamais quelqu'un qui n'a pas montré de compétences / talents en ingénierie.

Nicole
la source
4
Parce que ce que les gens apprennent, c'est l'informatique, pas le génie logiciel. Ce problème disparaîtrait si les universités et les étudiants se rendaient compte que l'informatique! = Génie logiciel, l'informatique est une science, l'informatique n'est pas une question de programmation et le génie logiciel est bien plus qu'une simple programmation.
Thomas Owens
-1. Apprendre comment les choses fonctionnent sous le capot (compilateurs, systèmes d'exploitation, langage d'assemblage, etc.) est important même si vous ne travaillez jamais réellement à ce niveau, car vous serez confronté à des abstractions qui fuient à un moment donné.
dsimcha
@dsimcha, si vous croyez cela, vous avez une vision très étroite des types d'ingénieurs logiciels employés actuellement par les entreprises dans le monde réel. Ce n'est pas que ces choses n'ajoutent aucune valeur - c'est le coût d'opportunité de ne pas enseigner quelque chose de plus essentiel.
Nicole