Souane (./91) :
Cependant, selon lui XP (extreme programming, une méthode de développement agile pas mal à la mode ces dernières années) rend le design évolutif plausible, rentable et même intéressant. Pour plus de détails sur XP : http://en.wikipedia.org/wiki/Extreme_Programming
Bah, ça reste très organisé et contraignant, mon courant c'est plutôt
http://en.wikipedia.org/wiki/Cowboy_coding.

Il y a quelques idées de l'Extreme Programming avec lesquelles je suis d'accord (par exemple qu'il faut s'attendre à ce que les exigences puissent changer, on ne peut pas tout prévoir d'avance), d'autres qui sont bonnes, mais à mon avis pas indispensables (programmer en paires et faire des revues du code de l'autre, ça permet effectivement de trouver des erreurs assez rapidement (avec Sebastian, il a souvent trouvé mes erreurs et moi les siennes; avec Romain, ça a été plus à sens unique, je trouvais d'innombrables d'erreurs dans ce qu'il pondait), mais quand on est tout seul, on arrive quand-même à produire quelque chose) et d'autres encore que je ne partage pas du tout (unit tests, pour moi c'est une pure perte de temps).
Nil (./92) :
Kevin Kofler (./85) :
si le projet n'a pas une décomposition en modules évidente dès le départ
Bah donc tu ne commences pas à coder immédiatement, tu es obligé de faire un travail préalable...
"Travail" d'une minute si la décomposition est vraiment évidente. Sinon, ben c'est que le projet n'a pas une décomposition évidente, justement.
Kevin Kofler (./85) :
Si. On implémente une charge à la fois de manière incrémentelle
Idem, ça veut dire que tu as fais un travail de segmentation et de modularisation, avec affectation des tâches au préalable... les développeurs ne vont pas deviner par magie ce sur quoi travaillent les autres, ni le degré de modularisation accepté par chacun d'entre eux...
Le cahier de charges, c'est le client qui le prépare. Ensuite, bah, dans une équipe qui fonctionne bien, le développeur dit sur IRC (voire gueule dans la salle si l'équipe est sur place) "je suis en train de me plonger sur la charge nº14" et il commence à coder, les autres savent sur quoi il travaille et qu'il vaut mieux ne pas y toucher. (C'est comme ça qu'est coordonné le travail de packaging de KDE sous Fedora par exemple, #fedora-kde est très pratique pour ça.) Pas besoin de segmenter à l'avance. Et pour que les autres voient ce qui est en train de se passer, la solution s'appelle "commit early, commit often" (dont je suis un fervent défenseur).
Flanker (./93) :
Ça fait quand même beaucoup de conditions à réunir, je trouve 
Beaucoup de conditions pour un échec.

Même le contraire d'une ou deux de ces propositions peut suffire pour faire fonctionner le développement incrémentel.
Et si vous êtes 12 sur le projet, vous codez 2 heures par jour ? #efficace#
Non, au maximum on peut segmenter la journée en 3 ou 4, mais diviser le risque de conflits par (par exemple, en prenant des tours de 8 heures) 3²=9 (le risque de conflits entre n développeurs codant en même temps étant de O(n²)) peut déjà être très utile.
Et il y a aussi d'autres cas où fonctionner par tours peut être utile, par exemple quand l'embouteillage n'est pas le développement, mais la compilation. On a eu nos compilations de paquetages KDE pour Fedora pendant plus d'une journée où Than Ngo, Lukáš Tinkl et Jaroslav Řezník ont travaillé le long de la journée européenne et Rex Dieter (aux USA) et moi pendant la nuit européenne, ça permettait de garder le build system occupé.
je pense que Nil parlait de projets un peu plus gros que Backgammon, hein 
KTIGCC, c'est petit? Il y a un fichier source de 6306 lignes (et plusieurs autres, plus petits)!
squale92 (./94) :
Kevin Kofler (./85) :
si l'équipe n'a pas l'habitude de travailler ensemble
à peu près toujours, non ?
Bah, c'est le problème de l'entreprise si elle refait de nouvelles équipes sans arrêt. Il faut laisser le temps aux équipes de se connaître, ça augmente de loin la productivité (sauf si on tombe sur une "équipe" de genre Lionel et moi

).
Kevin Kofler (./85) :
si tous les développeurs codent en même temps
là aussi, à peu près toujours ^^ si on met plusieurs développeurs sur un projet, c'est pour qu'il avance plus vite ; pas pour étaler dans le temps
Tes développeurs ne dorment jamais? Ça permet déjà de segmenter le temps. Et comme déjà dit, il peut être avantageux d'avoir des équipes à 2 endroits du globe, pour exploiter les fuseaux horaires. (Cela dit, il doit bien y avoir des codeurs qui préfèrent coder la nuit, j'en fais partie.

)
Kevin Kofler (./85) :
si les outils utilisés pour coder ne permettent pas de merges efficaces
ergh 
=> faut utiliser de meilleurs outils…
Kevin Kofler (./85) :
Quand les charges exactes ne sont pas connues dès le départ, c'est tout de suite beaucoup plus difficile
hélas^3 ^^
Donc exit le planning à l'avance, c'est ce que j'ai dit tout le long.
