Dans quelles circonstances, le cas échéant, l'ajout de programmeurs à une équipe qui en fait la vitesse de développement d'un projet en retard?
Réponses
Trop de publicités?Les circonstances exactes sont évidemment très spécifique à votre projet ( par exemple, le développement de l'équipe, le style de gestion, la maturité du processus, de la difficulté du sujet, etc.). Pour champ d'application la présente un peu mieux, de sorte que nous pouvons parler de quelque chose, mais le balayage des simplifications, je vais reformuler votre question:
Dans quelles circonstances, le cas échéant, ajouter les membres de l'équipe de développement de logiciels, projet qui est en cours d'exécution tardive entraîner une diminution dans la date d'expédition avec un niveau de qualité égal que si l'équipe en place ont été permettent de travailler jusqu'à la fin?
Il y a un certain nombre de choses que je pense sont nécessaires, mais pas suffisantes, pour que cela puisse se produire (dans aucun ordre particulier):
-
Les personnes proposées pour être ajouté au projet doit avoir:
- Au moins une bonne compréhension du domaine du problème du projet
- Être à l'aise dans la langue du projet et les technologies qu'ils utilisent pour les tâches qui leur serait donné
- Leur compétence doit /ne pas/ être beaucoup moins ou beaucoup plus que les plus faibles ou les plus puissants membres actuels, respectivement. Faiblesse des membres de vidange de votre personnel existant tertiaires des problèmes alors qu'une nouvelle personne qui est trop fort va perturber l'équipe avec la façon dont tout ce qu'ils ont fait et font est mal.
- Avoir de bonnes aptitudes à la communication
- Être très motivé (par exemple, être capable de travailler de manière indépendante, sans insistance)
-
Les membres de l'équipe existante doit avoir:
- Excellentes compétences en communication
- Excellentes compétences en gestion du temps
-
Le chef de projet/gestion doit avoir:
- Bonne hiérarchisation allocation de ressources et de capacités
- Un niveau élevé de respect de la part des membres de l'équipe existante
- Excellentes compétences en communication
-
Le projet doit avoir:
- Bon, terminé et documenté logiciel de spécification de conception
- Une bonne documentation des choses déjà mis en œuvre
- Une conception modulaire pour permettre d'établir des morceaux de la responsabilité d'être creusée
- Suffisamment d'automatisation des processus d'assurance de la qualité pour le niveau de défaut celles-ci pourraient inclure des choses telles que: tests unitaires, tests de régression, de génération automatisée des déploiements, etc.)
- Un bug/feature système de suivi qui est actuellement en place et en cours d'utilisation par l'équipe (par exemple, trac, SourceForge, FogBugz, etc).
L'une des premières choses qui devraient être discutés est de savoir si la date de livraison peut être glissé, si les caractéristiques peuvent être coupés, et si certaines combinaisons des deux va vous permettre de satisfaire à la libération avec le personnel en place. De nombreuses fois ses quelques fonctionnalités qui sont vraiment monopolisant les ressources de l'équipe qui ne délivrent pas de valeur égale à l'investissement. Afin de donner à votre projet, les priorités d'un examen sérieux avant toute autre chose.
Si le résultat de l'alinéa ci-dessus n'est pas suffisante, puis visite de la liste ci-dessus. Si vous avez pris l'annexe bordereau de début, l'ajout de membres de l'équipe au bon moment peut sauver la libération. Malheureusement, plus vous vous rapprochez de votre date d'expédition prévue, le plus de choses peuvent mal se passer avec l'ajout de personnes. À un moment donné, vous allez traverser le "point de non-retour", où aucun montant de la variation (autres que de transport de l'actuelle direction du développement) pouvez enregistrer votre version.
Je pourrais continuer encore et encore mais je pense que j'ai touché les points importants. En dehors du projet et en fonction de votre carrière, l'avenir de la société de réussite, etc. l'une des choses que vous devriez vraiment faire est de comprendre pourquoi vous êtes en retard, si quelque chose aurait pu être fait de vous avertir plus tôt, et quelles mesures vous devez prendre pour les éviter dans le futur. Un projet en retard se produit généralement parce que vous avez été:
- Étaient en retard avant de commencer (plus des trucs de temps) et/ou
- glissé 1h, 1 jour à la fois.
Espérons que ça aide!
Il n'est utile que si vous avez un axés sur les ressources du projet.
Par exemple, considérez ceci:
Vous avez besoin de peindre une grande affiche, dire 4 par 6 mètres. Une affiche grand, vous pouvez probablement mettre deux ou trois personnes en face de lui, et les faire peindre en parallèle. Toutefois, le placement de 20 personnes en face d'elle ne fonctionne pas. En outre, vous aurez besoin de personnes qualifiées, sauf si vous voulez une merde à l'affiche.
Toutefois, si votre projet est de farcir les enveloppes prêt-imprimé de lettres (comme Vous POURRIEZ avoir gagné!) ensuite, plus les personnes que vous ajoutez, plus vite il va. Il y a une surcharge dans distribuent des piles de travail, de sorte que vous ne pouvez pas obtenir des avantages jusqu'au point où vous en avez une personne pr. enveloppe, mais vous pouvez obtenir des avantages de beaucoup plus que seulement 2 ou 3 personnes.
Donc, si votre projet peut facilement être divisée en petits morceaux, et si les membres de l'équipe peuvent obtenir jusqu'à la vitesse rapidement (comme... instantanément), puis d'ajouter plus de gens vont le faire aller plus vite, jusqu'à un certain point.
Malheureusement, pas beaucoup de projets sont comme ça dans notre monde, c'est pourquoi docgnome du conseil sur le mythical Man-Month est un livre vraiment de bons conseils.
Peut-être que si les conditions suivantes s'appliquent:
- Les nouveaux programmeurs déjà de comprendre le projet et n'ont pas besoin de rampe temps.
- Les nouveaux programmeurs sont déjà familiarisées avec l'environnement de développement.
- Aucun d'administration de temps est nécessaire pour ajouter les développeurs de l'équipe.
- Presque pas de communication est nécessaire entre les membres de l'équipe.
Je vais vous laisser savoir que la première fois que je vois tout à la fois.
Selon the mythical Man-Month, la principale raison de l'ajout de personnes à un projet en retard rend-il plus tard est en O(n^2) communication des frais généraux.
J'ai vécu une première exception à cette règle: si il n'y a qu' une seule personne sur un projet, il est presque toujours vouée à l'échec. L'ajout d'une deuxième vitesse, elle presque à chaque fois. C'est parce que la communication n'est pas de surcharge dans ce cas il est utile pour l'occasion de clarifier vos pensées et de faire moins d'erreurs stupides.
Aussi, comme vous le connaissait évidemment lorsque vous avez posté votre question, l'avis de the mythical Man-Month s'applique uniquement à la fin des projets. Si votre projet n'est pas déjà en retard, c'est tout à fait possible que l'ajout de personnes ne le rendra pas plus tard. En supposant que vous le faites correctement, bien sûr.
Si les programmeurs sont totalement incompétents, puis en ajoutant compétente programmeurs peuvent aider.
Je peux imaginer une situation où vous avez eu une très modulaire du système, et le programmeur(s) n'avait même pas encore commencé sur un très isolé module. Dans ce cas, l'affectation seulement une partie du projet pour un nouveau programmeur peut aider.
Fondamentalement, la mythical Man Month références sont exactes, sauf artificiel dans des cas comme celui que j'ai fait. M. Brooks a fait des recherches solides pour démontrer que, après un certain point, la mise en réseau et les coûts de communication de l'ajout de nouveaux programmeurs à un projet l'emportent sur les avantages que vous tirer parti de leur productivité.