it-swarm-fr.com

Pourquoi ajouter plus de personnes à un projet tardif le rend-il plus tard?

C'est un adage assez commun qui ajoutant davantage de programmeurs à un projet tardif rendront la situation pire. Pourquoi est-ce?

26
Henry

Introduction aérienne

Chaque nouveau développeur doit être introduit dans le processus de base et développement de code qui prend non seulement l'heure de la nouvelle personne, mais nécessite également une assistance de [a] le développeur principal [S] ((((les guidant dans le processus de construction, explique les tests. processus, aidez-les avec des pièges dans la base de code, des critiques beaucoup plus détaillées, etc.).

Par conséquent, plus les nouveaux développeurs que vous ajoutez au projet, plus il est temps de passer de temps à les amener à un point où ils peuvent réellement contribuer au projet.

33
Baelnorn

En plus des autres réponses: un autre facteur à considérer est la communication.

Le pire des cas pour la quantité de canaux de communication sur une équipe (qui n'est pas rare), est un Graphique complet . Comme vous pouvez l'imaginer, ajouter dans Just 1 Le développeur peut augmenter beaucoup les canaux de communication. Avec des méthodes de communication plus simples, l'impact est moins ... mais cela ajoute toujours.

32
Steven Evers

Ce n'est pas simplement adage; C'est vérifiable. Découvrez les Brooks 'le mythique mens mois.

12
John

Voici quelques pensées sur ce problème ...

  • Besoin d'utiliser les ressources actuelles pour amener les nouvelles ressources à la hauteur de ce qui se passe avec le projet.
  • La nouvelle ressource pourrait ne pas être familiarisée avec la base de code, il a donc nécessité plus de temps pour être acclimaté au code.

maintenant, l'ajout de nouvelles ressources pour des tests peut ne pas être une mauvaise idée ... Cela pourrait accélérer le processus de test (si vos cas de test sont bien écrits), et oui à l'aide d'outils de test vous aidera également.

6
aggietech

Parce que la programmation n'est pas un travail de base de production de base. Se mettre au courant d'un projet logiciel prend du temps. Les nouvelles personnes ont besoin de demander de nombreuses questions qui conduisent à une productivité négative (nouvel apprentissage de la personne, la personne âgée leur enseignant -> aucune œuvre réelle ne se fait).

Pour simplifier, imaginez un projet d'un homme relativement simple qui devrait aller pour 1 semaine: jeudi, vous réalisez que cela ne se fera pas à temps, qu'il faudrait le programmateur plus de 6-7 jours à la place. de 5. Si vous ajoutez un autre programmeur à ce stade, ils devront travailler avec programmeur1 pendant au moins quelques heures ou une heure environ, poser de nombreuses questions à se mettre à la hauteur, etc. Vous n'obtiendrez probablement pas toute productivité positive nette pour le reste de la semaine. Le nouveau programmeur est susceptible d'introduire des bugs supplémentaires également (car ils ne connaissent pas le code existant ainsi que le programmeur1), de sorte que cela soufflera de la mise en œuvre et du cycle de test d'un autre jour ou deux autres. Le projet durera facilement deux semaines de travail complètes au lieu de l'original! - et plus probablement plus longtemps que si le premier programmeur avait simplement reçu quelques jours supplémentaires pour la finir eux-mêmes.

4
Bobby Tables

Fred Brooks a écrit un livre entier "le mythique mois-mois" répondant à cette question.

Voici la version Quick-N-sale:

1) Il y a une limite à quel point vous pouvez casser un projet dans des pièces distinctes pour attribuer à plus de programmeurs.

2) Sépartir un projet à plus de personnes augmente la quantité de communication requise pour coordonner toutes les parties de l'application. Plus de communication = plus de travail.

3) Pour chaque personne que vous ajoutez au projet, vous ajoutez plus d'un canal de communication qui doit être navigué à l'équipe. Ce nombre augmente de manière géométrique et augmente la quantité de communication qui doit se produire. Plus de communication = plus de travail.

4) Il y a une "courbe J" lorsque vous ajoutez chaque membre de l'équipe. C'est-à-dire que les ressources productives existantes doivent passer du temps à faire face aux nouvelles personnes afin qu'elles auraient pu consacrer au contraire au projet. En fin de compte, vous pouvez augmenter la capacité, mais cela ralentit temporairement le projet. Plus tard dans le projet, plus cela doit être appris, plus l'effet est donc prononcé.

4
JohnFx

L'adage qui est toujours travaillé pour moi est que vous ne pouvez pas obtenir neuf femmes de faire un bébé en un mois.

2
rerun

Je suggérerais également que "des personnes de logiciels" par Demarco et Lister.

Et "la date limite" de Demarco présente ceci et un certain nombre d'autres maladies de gestion de projets logiciels et fausses de manière légèrement lisible et très lisible.

Il accélère également la dynamique des personnes faisant des travaux de projet/d'équipe et s'engage en détail sur la manière dont les choses comme la communication et l'introduction appauvrissent le temps de travail disponible d'une équipe.

Ces livres sont assez bon marché, je vous suggérerais de les obtenir (Amazon ou le déposant du livre les avoir) et avez une lecture. Les réponses courtes ici ne peuvent pas vraiment rendre justice à la question posée.

2
quickly_now

Parce que personne ne prend le temps d'avoir un processus bien pensé, planifié, testé pour: l'embauche, la formation, le développement et la supervision de programmeurs les insuffisants à la hauteur d'un projet particulier.

Si vous gérez une équipe de développeurs, vous devriez avoir plusieurs contacts dès maintenant des personnes que vous souhaitez embaucher si vous avez une ouverture. Rejoignez des groupes de développeurs.

À quelle vitesse pouvez-vous obtenir une nouvelle configuration de la machine de développement et prête à partir?

Avez-vous déjà testé la documentation et les spécifications de votre projet en leur montrant un développeur sur un autre projet? Ont-ils regardé et déterminé qu'ils pourraient commencer à travailler sur le projet si nécessaire?

Quelle est la date à jour est un calendrier de projet?

Économisez pour un jour de pluie car quand un projet tombe derrière, c'est plus comme un obstacle.

2
JeffO

Outre la question de la communication (que je pense que toutes les autres réponses parlent de), il est également très possible pour une personne ajoutée à un projet de créer des bugs, car ils ne connaissent pas très bien le code.

Chaque fois que je suis ajouté à un projet, j'essaie toujours très fort de ne pas casser les choses. Cela signifie que je suis beaucoup plus lent à la fixation des choses au début.

1
Paul D. Waite

Je voudrais souligner quelque chose de totalement ignoré jusqu'à présent par les autres réponses.

Au moment où les gens sont ajoutés à un projet tardif, il y a généralement beaucoup de choses dans l'ensemble de l'organisation. La direction et le client ne sont pas heureux. Les gens ont été sous pression pour y poursuivre. Les choses sont assez tendues.

Maintenant, imaginez que vous êtes sur cette équipe. Évidemment rien de tout cela n'est votre faute. Planification (dont aucun n'était à vous) a été trop optimiste. Toutes les mauvaises décisions ont été faites sans vous consulter. Vous essayez d'en tirer le meilleur parti et de tout d'un coup, un groupe de nouvelles personnes est à rouler. Quel message cela transmet-il?

Les gens à l'étage ont évidemment perdu confiance en vous. Ils ont appelé dans les grands garçons pour compenser ce que vous avez soigné.

Serez-vous toujours motivé pour en faire un succès? Ou ... Serez-vous toujours plus frustré et préféreriez-vous voir tout le casse-temps après tout?

Prends ton temps :-).

0
Martin Maat