Comment former des programmeurs débutants à l'environnement Web (complexe) d'aujourd'hui?

39

Actuellement, notre société développe des applications composées la plupart du temps de serveurs Web Ruby on Rails et de nombreux clients REST, des systèmes de kiosque Java aux périphériques intégrés en C / C ++ (en plus des interfaces pour les navigateurs Web standard). Nous devons élargir notre équipe et, n'ayant pas réussi à trouver de bons programmeurs expérimentés, nous avons décidé de déployer des efforts pour former des programmeurs débutants qui évolueraient avec la société.

Nous leur avons déjà donné des livres Ruby and Rails et leur avons demandé de créer des programmes de jouets, mais je réalise maintenant à quel point la courbe d'apprentissage de l'état actuel de la programmation Web est abrupte.

Lorsque j'ai commencé à programmer il y a 15 ans, je n'utilisais que Delphi et Source Safe et j'étais capable de produire des logiciels utilisables dès le début. C'étaient deux outils simples et il était facile de se plonger dans les rouages ​​de l'environnement. Lentement, j'ai commencé à utiliser des frameworks tiers, suis passé à CVS, SVN et enfin Git, j'ai appris les bases du Web d'aujourd'hui, comme HTTP, JavaScript, CSS, REST, etc. Aujourd'hui, même après des années d'expérience, je ne sais pas autant sur la manière dont Ruby on Rails fonctionne à l'intérieur que sur Delphi par le passé, et pour moi, c'était important pour pouvoir connecter les blocs d'apprentissage de base aux outils que j'utilisais.

Il me semble que les programmeurs que je recrute prendront beaucoup de temps à s’intégrer à l’équipe et à produire quelque chose d’utilisable, car il ya tellement de choses à apprendre pour utiliser un seul framework (Rails): Ruby, HTML, CSS, JavaScript, etc. REST, cas de test, accès à la base de données (avec SQL construit magiquement dans le framework!), MVC, trois gestionnaires de paquets différents (apt pour Ubuntu, gem et bundler pour Ruby), ssh, git, Apache et Phusion Passenger pour le déploiement, etc.

Je me sens perdu depuis que c'est la première fois que je dois traiter directement avec des programmeurs débutants. Quel est le meilleur moyen de former les programmeurs débutants aux meilleures pratiques actuelles en matière de développement Web alors que les choix sont si nombreux?

Rômulo Ceccon
la source
8
L'avant-dernier paragraphe semble indiquer que vous n'avez peut-être pas remarqué un changement important survenu au cours des 15 dernières années: les programmeurs généralistes ont pratiquement disparu . Pour que quiconque connaisse tous les détails auxquels vous faites référence, il faudrait, eh bien, être dans l'industrie depuis 15 ans. Vous obtiendrez peut-être de meilleurs résultats pour trouver / former des spécialistes qui connaissent très bien une ou deux de ces choses, et créer une équipe composée des spécialistes variés dont vous avez besoin ( puis de l’ analyse croisée). Vous pouvez également trouver des ingénieurs expérimentés avec 15 ans d'expérience comme vous, mais ce n'est pas une tâche facile.
Jimmy Hoffa
Juste pour votre information, une courbe d'apprentissage abrupte signifie que vous apprenez quelque chose de très rapide. Cela déroute certaines personnes lorsqu'il est utilisé incorrectement :)
Alternatex
J'ai toujours utilisé l'expression qui veut dire "difficile" (l'anglais n'est pas ma langue maternelle) mais Wikipedia dit que c'est ambigu, donc je ne connais pas le meilleur choix ici: en.wikipedia.org/wiki/Learning_curve :)
Rômulo Ceccon

Réponses:

39

Beaucoup de gens n'aimeront pas cette idée, mais je le préconise chaque fois que je le peux: quels que soient le langage de programmation et l'environnement, s'ils n'ont aucune expérience et s'il existe des tâches de maintenance qui proviennent de rapports de bugs du monde réel de votre part, essayez de s’assurer qu’ils sont affectés à ce type de tâche au moins 30 à 40% (+) de leur temps. "Voici le rapport de bogue, examinez-le, résolvez-le. Si vous ne savez pas de quoi il s'agit, communiquez avec des collègues expérimentés, recherchez-le sur Google, peu importe". Véritable travail sur de vrais problèmes, nonjouets, du moins: pas seulement des jouets. Assurez-vous également que les personnes expérimentées examinent ce qu’elles faisaient avant de le publier et de l’envoyer 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 ses collègues et de ses clients. Choisissez ces tâches avec soin afin de ne pas les surcharger, mais gardez à l'esprit qu'un jour vous voulez qu'elles fassent leur travail de manière indépendante.

Faire des corrections de bogues, c'est apprendre sur le tas, ce qui leur permet de travailler sur du code qui est réellement exécuté et qui a une certaine pertinence (sinon, il n'y aurait aucun rapport de bogue) et leur montrera dans de nombreux exemples comment ne pas le faire.

L'accent est automatiquement mis sur les points douloureux. Ils commenceront à apprendre ces détails qui causent des problèmes. Dès le début, cela leur donne une réelle responsabilité, ce qui (bien que la maintenance en soi ne soit pas vraiment attrayante) peut être assez motivant s’ils le font à la satisfaction du client / de l’utilisateur final. Vos aînés prendront plus au sérieux ce qu'ils ont fait, car ils connaissent l'impact si les choses tournent mal, ce qui simplifiera également l'intégration dans l'équipe, car cela leur permettra également de se parler automatiquement.

L’important n’est pas de les rendre productifs dès le premier moment (comme on pourrait le croire). Le but est de s’assurer qu’ils savent qu’ils sont censés faire quelque chose de précieux dès le premier instant et de mettre l’accent sur ce qui importe le plus sans qu’il soit nécessaire de créer une liste.

J'ai quelques années d'expérience de travail occasionnel avec des personnes venant directement de l'université pour occuper leur nouveau poste de développeur. Les pires résultats que j'ai pu constater sont généralement ceux où l'on demandait à quelqu'un sans au moins une expérience en maintenance de développer de nouvelles applications. . Assurez-vous simplement qu'ils ont toujours quelqu'un à qui demander du soutien s'ils se sentent perdus.

Thomas
la source
Je fais la même chose. Bonne réponse.
Rocklan
J'ai commencé ma carrière en réparant les défauts pour la première année. Quand je suis arrivé à d' autres projets, je me sens la fixation de bug m'a fait beaucoup mieux parce que je savais que ce ne faire.
Brandon
8

Supposons tout d'abord que vous avez embauché des programmeurs débutants qui sont réellement compétents. Ce n’est pas forcément une hypothèse sûre, d’autant plus que les programmeurs chevronnés interrogeant «une personne moins expérimentée que moi» risquent de négliger l’incompétence fondamentale.

Mais, s’ils sont compétents, la première étape consiste à les envoyer en classe. Un cours d'une semaine vous coûtera entre 2 000 et 3 000 USD. 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 mettre à niveau. Envoyer un livre avec un livre et la directive «apprendre cela» ne sera en aucun cas aussi précieux et coûtera probablement plus cher (le coût de la classe équivaut à environ une semaine de programmation perdue).

Après avoir acquis les connaissances de base, travaillez avec eux. Asseyez-vous à un guichet adjacent et laissez au moins la moitié de votre temps libre pour vous assurer qu'ils comprennent votre entreprise et votre façon de faire les choses. Oui, cela réduira votre productivité, du moins au début, mais à long terme, votre équipe dans son ensemble sera plus productive. Et si vous réfléchissez de nouveau aux coûts, si un employé junior perd un mois en faisant la mauvaise chose, cela équivaut probablement à environ un demi-mois de votre salaire.

parsifal
la source
4

Les applications de jouets que vous leur demandez de faire doivent implémenter certaines fonctionnalités de base de CRUD et chaque développeur doit écrire son propre code. Mais vous pouvez discuter de l'application dans les revues de code et offrir des conseils. Ils devront d'abord comprendre l'architecture globale d'une application MVC, si une attente raisonnable de productivité est possible.

À partir de là, chaque développeur devrait être en mesure de définir seul les sujets associés tels que Javascript, CSS, les DAL, les générateurs de modèles, le routage, etc. Vous pouvez leur donner des conseils sur les sujets à étudier (cela peut être basé sur les besoins les plus urgents de votre entreprise), les encadrer et surveiller leurs progrès. Déplacez les développeurs, un par un, vers des projets simples offrant des fonctionnalités qui feront progresser vos efforts de développement, dès qu'ils démontreront une maîtrise des compétences nécessaires.

Vous pouvez jumeler certains de vos développeurs expérimentés avec un apprenti en tant que programme de mentorat. Il devrait exister des directives pour les développeurs débutants afin qu'ils sachent quand ils peuvent interrompre leur mentor et pendant combien de temps. Leur mentor peut superviser leur travail quand ils commencent à écrire du vrai code.

Vous passerez un meilleur moment si vous pouvez trouver des jeunes très intelligents, intellectuellement curieux et entreprenants. J'ai vu ce processus fonctionner. c’était l’approche de mon employeur précédent, car il ne voulait pas débourser beaucoup d’argent pour des experts, bien que c’était plutôt du genre "couler ou nager" (il n’y avait pas de programme de formation officiel en tant que tel). Son plus grand défi était de les faire rester assez longtemps pour récupérer son investissement. il y avait toujours l'attrait d'un meilleur salaire ailleurs.

Robert Harvey
la source