web-dev-qa-db-fra.com

Comment former des programmeurs juniors pour l'environnement Web d'aujourd'hui (compliqué)?

Actuellement, notre société développe des applications consistant, la plupart du temps, dans Ruby ON Rails Serveurs Web et un tas de différents REST = Clients, des systèmes kiosques dans Java aux périphériques incorporés en C/C++ (en plus des interfaces pour les navigateurs Web standard). Nous devons élargir notre équipe et, après avoir manqué à la recherche de bons programmeurs seniors, Nous avons décidé de mettre un effort pour former des programmeurs juniors qui grandiraient avec la société.

Nous leur avons déjà donné quelques Ruby et Rails livres et leur ont demandé de construire certains programmes de jouets, mais je me rends compte maintenant de la courbe d'apprentissage pour L'état actuel de la programmation Web est.

Quand j'ai commencé à programmer il y a 15 ans, j'ai utilisé uniquement Delphi et Source Safe et a été capable de produire un logiciel utilisable dès le début. Ils étaient à la fois des outils simples et il était facile de plonger dans le fonctionnement intérieur de l'environnement. Lentement, j'ai commencé à utiliser des cadres tiers, je suis passé à la CVS, SVN et enfin git, a appris les pièces qui font que le Web actuel, comme http, javascript, CSS, REST etc. Aujourd'hui, même après années d'expérience, je ne sais pas autant de savoir comment Ruby ON Rails fonctionne à l'intérieur comme je l'ai fait dans le passé de Delphi, et pour moi qui était IMPORTANT, je pourrais donc connecter les blocs d'apprentissage de base aux outils que j'utilisais.

Il me semble que les programmeurs que je suis embauché prendra beaucoup de temps à intégrer à l'équipe et à produire quelque chose d'utilisable, car il y a tellement de choses à apprendre à utiliser un seul cadre (rails): Ruby, HTML, CSS, JavaScript, Repos, étuis de test, accès à la base de données (avec SQL construit par magie dans le cadre!), MVC, trois gestionnaires de forfaits différents (APT pour Ubuntu, GEM et Bundler pour RUBY), passager SSH, Git, Apache et Palion pour le déploiement, etc.

Je me sens perdu depuis que c'est la première fois que je dois traiter directement avec les programmeurs juniors. Quelle est la meilleure façon de former des programmeurs juniors dans les meilleures pratiques d'aujourd'hui pour le développement Web de l'actuelle lors de nombreux choix?

39
Rômulo Ceccon

Beaucoup de gens n'aimeront pas cette idée, mais je préconise cela partout où je peux: quel que soit le langage et l'environnement de programmation, s'ils ne possèdent aucune expérience et s'il existe des tâches de maintenance qui proviennent des rapports de bogues réels des clients Parmi les vôtres, essayez de vous assurer qu'ils sont attribués à ce type de tâche au moins pendant 30 à 40% (+) de leur temps. "Voici le rapport de bogue, le regarde, résolvez-le. Si vous ne savez pas ce que c'est tout, communiquez avec des collègues expérimentés, Google IT, quoi que ce soit". ". Travail réel sur de vrais problèmes, NO jouets, au moins: non seulement des jouets. Assurez-vous également que quelqu'un avec beaucoup d'expérience a un coup d'œil à ce qu'ils faisaient avant qu'il ne soit libéré et expédié au client, bien sûr. Assurez-vous que le nouveau collègue reçoit des commentaires honnêtes sur ce qu'il a fait de collègues et de clients. Choisissez ces tâches avec soin afin de ne pas les surcharger, mais gardez à l'esprit qu'un jour, vous voulez qu'ils effectuent leur travail de manière indépendante.

Faire de la réparation des bugs est d'apprendre sur le travail qui leur permet de travailler sur le code qui obtiennent réellement exécuté et a une certaine pertinence (sinon il n'y aurait pas de rapports de bugs) et leur montrera dans de nombreux exemples comment ne pas le faire.

L'accent est mis automatiquement sur des points de douleur. Ils vont commencer à apprendre ces détails qui causent réellement des problèmes. Il met également une responsabilité réelle sur leurs épaules dès le début, qui (tout en tant que maintenance en tant que telle n'est pas très attrayante) peut être plutôt motivée si elles se font faire à la satisfaction de l'utilisateur client/final. En traversant ce qu'ils ont fait auront été pris plus au sérieux par vos aînés parce qu'ils connaissent l'impact si les choses vont mal, ce qui simplifiera également l'intégration dans l'équipe, car elle les rendra les unes à l'autre automatiquement.

Le point est non pour les définir productif à partir du premier moment (comme on pourrait ressembler à). Le but est de s'assurer qu'ils savent qu'ils sont censés faire quelque chose de précieux dès le premier moment, et de mettre l'accent sur ce qui compte le plus sans la nécessité de créer une liste.

J'ai quelques années d'expérience d'expérience de temps en temps avec des personnes qui arrivent directement du collège dans leur nouvel emploi de développeur et que les pires résultats que j'ai à voir étaient généralement lorsque quelqu'un sans au moins une certaine expérience en maintenance a été invité à faire de nouveaux développements d'applications. . Assurez-vous simplement qu'ils ont toujours quelqu'un qu'ils peuvent demander un soutien si elles se sentent perdues.

39
Thomas

Supposons tout d'abord que vous avez embauché des programmeurs juniors qui sont réellement compétents. Ce n'est pas nécessairement une hypothèse sûre, d'autant plus que des programmeurs seniors interrogeant "quelqu'un de moins expérimenté" est susceptible de négliger une incompétence de base.

Mais, en supposant qu'ils soient compétents, la première étape consiste à les envoyer à une classe. Une classe d'une semaine vous coûtera 2 000 $ à 3 000 $ (États-Unis). Cependant, cela leur donnera une expérience pratique, avec un instructeur qui (espérons-le) comprend le matériel et un plan de cours conçu pour les amener à la vitesse. Envoi de quelqu'un avec un livre et la directive pour "apprendre cela" ne sera nulle part aussi précieux, et est susceptible de coûter plus cher (le coût de la classe est à peu près égale à un programmeur gaspillé).

Après avoir eu la connaissance de base, travailler avec eux. Si vous êtes assis à un bureau adjacent et abandonnez au moins la moitié de votre temps pour vous assurer qu'ils comprennent votre entreprise et votre façon de faire les choses. Oui, cela diminuera votre productivité, au moins initialement, mais à long terme pour rendre votre équipe dans son ensemble plus productive. Et si vous pensez, encore une fois, des coûts, si une personne junior gaspille un mois qui fait la mauvaise chose, c'est probablement à peu près égal à un demi-mois de votre salaire.

8
parsifal