Comment inclure des développeurs débutants dans votre projet?

9

Nous envisageons d'enseigner à certains employés qui ont une expérience de programmation de niveau amateur zéro ou générale à me décharger de la charge de travail.

Nous utilisons Python / Django qui a une partie de la documentation la plus conviviale et un jeu d'enfant à apprendre.

Je suis actuellement un service informatique pour mon entreprise et je n'ai pas assez d'heures pour développer tout ce dont l'entreprise a besoin. Nous ne sommes pas une société de logiciels, mais cela aide d'avoir une informatique interne pour automatiser les tâches, développer les fonctionnalités de service client, analyser les données, etc.

Comment intégrez-vous lentement les recrues travaillant sur votre base de code? Disons que vous avez un stagiaire - que font-ils? Je suis totalement réticent à les laisser concevoir ou développer du code de base car nous allons faire face à leurs erreurs / modèles de conception étranges pendant des années. En tant que développeur principal, je serai celui qui devra contourner leur code.

Ma pensée était que les novices ne modifient que le code existant, sans jamais construire de fonctionnalités de base. Je peux leur décharger du travail avec des tâches simples après avoir construit la fonctionnalité elle-même.

Nous aimerions que nos employés apprennent / trouvent de la valeur dans l'entreprise, et nous avons généralement des gens qui «gravissent les échelons».

Est-ce une pratique courante d'enseigner aux personnes ayant une programmation de niveau général / amateur? Comment fonctionne la «montée en grade» dans une entreprise de logiciels pour les programmeurs débutants? Quand commencent-ils à travailler sur le code principal?

J'essaie de décider si cela va causer plus de dégâts que l'aide, et s'il y a un moyen d'utiliser leur aide sans risquer de risquer le code du site principal (environnements isolés?).

Yuji Tomita
la source
3
"Programmation de niveau général / amateur" est très différent de "programmeurs de niveau junior" dans mon esprit. Le premier sonne comme quelqu'un qui joue avec des scripts shell / batch le weekened pour peaufiner leur système. Ce dernier ressemble à quelqu'un qui vient de terminer un diplôme CS. La manipulation de ces deux types serait très différente. Just sayin '...
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner Merci! Je ne connais pas la terminologie. Un amateur que je voulais dire a autodidacte quelques langages de programmation, construit un programme ou deux, un site Web .. Niveau junior Je pensais être quelqu'un qui avait suffisamment de connaissances en programmation pour être embauché dans une société de logiciels, mais il me semble maintenant que ces deux peuvent être assez similaires (dans mes définitions)?
Yuji Tomita
3
Les jeunes gars avec une éducation CS formelle et sans expérience - sont naïfs, mais souvent talentueux, apprennent rapidement de nouvelles choses et s'adaptent à vos pratiques de travail. Les "vétérinaires amateurs" sont beaucoup plus dangereux, car ils sont souvent esclaves de leurs habitudes, ils peuvent donc être réticents aux changements et avoir des difficultés à s'adapter à votre écosystème. Mais néanmoins - seulement en leur donnant la liberté, vous pouvez voir leur stupidité ou leur intelligence. Si vous leur confiez des tâches banales primitives, ni eux n’apprendront rien sur le travail, ni vous n’apprendrez rien d’eux.
c69
@ c69 Merci! Ma question est de savoir comment intégrer la recrue dans notre base de code? Le but n'est pas de les classer et de faire uniquement des tâches banales. Il est juste dangereux de donner à quelqu'un l'accès à notre base de code et de lui faire construire son tout premier projet django / programmation dans le cadre de notre système (ou est-ce ce que vous voulez dire? Laissez-les essayer et voyez?). PS: dûment noté sur les vétérinaires amateurs
Yuji Tomita

Réponses:

5

Si vous déléguez la recrue à un rôle inefficace, il / elle n'apprendra jamais rien de substantiel, et ils ne vous seront certainement pas trop terriblement utiles.

Permettez-moi de vous donner un conseil, mon premier emploi informatique hors de l'école était dans une entreprise de fabrication relativement petite où j'allais travailler sur un logiciel pour aider les ingénieurs commerciaux à rédiger des devis pour divers projets. J'étais également censé aider le responsable informatique qui gérait à lui seul l'informatique pour toute l'entreprise.

Le gars était un gâchis surchargé de travail et le pire perfectionniste de la micro-gestion avec lequel j'ai jamais travaillé. J'étais censé alléger sa charge de travail, mais il a passé presque autant de temps à me surveiller et à surveiller mon travail que je passais à travailler (il n'a presque jamais quitté le bureau, je pense qu'il méprisait sa famille). Si je commettais une seule erreur, il perdrait complètement la tête et commençait à faire une crise de colère: "Je savais que je n'aurais pas dû te faire confiance, c'était trop important!" et autres coups de gueule.

Le point que j'essaie de faire est de ne PAS être de cette façon. Non seulement cela rendra les recrues misérables et détruira leur moral, mais vous brûlerez la bougie aux deux extrémités en vous souciant de leur travail.

Donnez-leur une chance de faire leurs preuves, mais ayez des spécifications techniques formelles, des revues de conception et des revues de code. Vous pouvez également tester ce qu'ils produisent pour vous assurer qu'il répond aux exigences.

Je pense que vous serez surpris de la capacité de certains d'entre eux.

maple_shaft
la source
1
Il convient également de dire que si vous déléguez la recrue à un rôle où elle ne se sent pas utile, elle mettra à profit le peu d'expérience qu'elle acquiert pour trouver un meilleur emploi. Même une recrue devrait être en mesure de suivre les instructions, les tâches de maintenance sont très bien, mais à moins que vous ne vouliez les aider à grandir, attendez-vous à toujours avoir une recrue.
Ramhound
Merci pour votre contribution - c'est grandement apprécié. Nous devons commencer quelque part car nous considérons des gens qui n'ont littéralement aucune expérience. Introduction à python 101, tutoriel django, scripts bash, comment utiliser le contrôle de version, etc., je tiendrai compte de votre avertissement concernant la non-gestion micro. Et oui! Je crois que notre peuple est tout à fait capable.
Yuji Tomita
5

Je travaillais dans un magasin de logiciels, où nous codions un grand projet (temps de montée en puissance important).

Les recrues étaient traitées comme des vétérinaires. Un responsable technique leur a été attribué et les fonctionnalités ont été lancées "par leurs propres moyens". Le style d'architecture a été dicté, mais ils étaient libres de proposer leur propre design épuré. Les «modèles de conception étranges» ont été éliminés lors des révisions (quotidiennes) du code par les pairs.

Une erreur que j'ai vue dans une autre boutique: supposons que "core" est difficile et "ui" est facile. Les débutants ont eu un temps plus facile dans le noyau et ont foiré le code frontal de l'interface utilisateur.

Bonne chance!

louisgab
la source
1
Les révisions fréquentes du code étaient exactement ce que j'allais suggérer. Cela vous prendra une heure de votre journée et sera rentabilisé lorsque vous leur apprendrez ce qui ne va pas, ils doivent le réparer et leurs compétences s'améliorer. Après un certain temps, vous n'aurez pas besoin de passer autant de temps à réviser le code que les premières semaines. Assurez-vous également qu'ils savent comment utiliser (et utilisent) le contrôle de code source. Ensuite, toutes les erreurs peuvent être annulées assez facilement.
HLGEM
1
@isgab - Une conception efficace de l'interface utilisateur est difficile à réaliser, même avec 30 ans d'expérience. Je veux dire, regardez Microsoft et Apple, ils ont tous deux des idées différentes sur le fonctionnement d'une interface utilisateur.
Ramhound
J'adore ce que vous dites à propos de Core vs UI. Je pensais qu'il y avait des avantages et des inconvénients pour les deux (recrue sur le backend, recrue sur le frontend). D'une part, HTML est souvent une question d'expérience - savoir ce qui ne fonctionne pas. C'est aussi "sûr" dans la mesure où les projets sont isolés. Le backend fonctionne exactement comme il se doit, mais le code construit maintenant doit être maintenu et travaillé à l'avenir.
Yuji Tomita
2

Vous voulez commencer par leur donner des fonctionnalités de petites pièces discrètes à mettre en œuvre. Définissez l'entrée que vous promettez et la sortie que vous attendez, et laissez-les connecter les points. Ensuite, utilisez la révision du code par les chefs d'équipe pour garantir la qualité et la révision par les pairs pour les former à apprendre les uns des autres et à s'enseigner eux-mêmes.

Cela suppose que vous disposez d'une architecture d'application globale qui permet de construire des unités atomiques de logique de manière découplée. Sinon, vous vous dirigez vers un monde de chagrin alors que plusieurs développeurs y travaillent - ce serait le cas même avec de vieux pros.

Inévitablement, vous aurez certaines personnes qui s'y attaqueront, apprendront vite et se lèveront. Assurez-vous de continuer à leur fournir des tâches qui ne sont qu'un petit pas au-delà de leurs capacités actuelles. Rien n'éduque quelqu'un comme une tâche qui commence impossible. Inévitablement, vous aurez des gens qui essaient de ne jamais vraiment s'en emparer. Ces personnes devraient être remerciées pour leurs efforts et transitions avec grâce vers autre chose.

Dan Ray
la source
1
"Assurez-vous de continuer à leur fournir des tâches qui ne sont qu'un petit pas au-delà de leurs capacités actuelles." - Si cela n'est pas fait, vous constaterez peut-être que ces personnes confient leurs connaissances à une autre entreprise. Si vous ne nourrissez pas, ne vous entraînez pas et ne promenez pas le Rookie, ils s'enfuiront comme votre chien.
Ramhound
D'autres options seraient: Donnez-leur une fonctionnalité d'outil déjà (bien), afin qu'ils puissent comparer les sorties
Etsitpab Nioliv
1

Comment votre entreprise peut-elle se permettre de prendre du temps loin des autres employés, sans embaucher quelqu'un ayant de l'expérience en programmation? Le temps que vous consacrez à la formation, au dépannage et à la tenue de la main est coûteux.

La seule chose que j'ai jamais faite dans ce domaine est d'enseigner aux gens comment utiliser un rédacteur de rapport ou peut-être un code VBA / Macro pour Excel. Je donne généralement les ensembles de données à réutiliser. Leur faire apprendre le SQL est un tronçon, mais je l'ai vu faire (payé pour qu'ils reçoivent une formation en dehors.) La plupart de ces personnes étaient des analystes financiers qui ont la capacité d'apprendre à coder, mais n'ont peut-être pas pris le temps. Essayer cela avec certaines personnes en opération est un processus de longue haleine.

Assurez-vous d'avoir la bonne personne et elle veut vraiment apprendre à coder. Vous n'aurez pas le temps de tout leur apprendre. Ils devront faire beaucoup par eux-mêmes.

JeffO
la source
J'ai mentionné que nous parlons de personnes n'ayant aucune expérience préalable (ou un très petit montant), donc nous ne parlons pas des niveaux de rémunération requis pour embaucher un programmeur professionnel.
Yuji Tomita
Ah, et notre entreprise est un peu comme une famille: nous aimons tout faire nous-mêmes et avoir des gens qui gravissent les échelons. J'étais principalement curieux de savoir comment structurer le flux de travail d'une recrue dans le mien.
Yuji Tomita
0

@louisgab avait raison sur la révision du code. Ce serait aussi ma première étape. Une chose essentielle qui vous aidera est de vous assurer qu'ils doivent corriger leurs propres erreurs, que vous les trouviez dans la révision du code ou plus tard. Ils ont gagné; ils ne réalisent même pas qu'ils font des erreurs à moins de devoir les réparer. Assurez-vous également d'expliquer pourquoi la solution qu'ils ont utilisée est une erreur et pourquoi ce que vous proposez est meilleur. Les premières semaines, vous aurez l'impression d'avoir plus de travail à cause de ces autres personnes, mais si vous faites vos révisions de code et expliquez les choses et que vous attendez qu'elles apprennent, dans quelques semaines, elles seront beaucoup plus utiles que si vous venez faites-le vous-même. Mais il y a un engagement initial de votre temps pour les mettre à jour dont votre direction doit être consciente.

HLGEM
la source