|> Qu'est-ce que les développeurs souhaitent, selon toi, et que la
|> logique "les tests sont de la documentation (ou de la
|> spécification)" promettrait de faire réalité ?
Le souhait, c'est de ne pas écrire de la documentation externe.
L'« extreme programmation » semble en donner une justification.
Or, si tu ne sais pas ce que ton programme doit faire avant de commencer
à l'écrire, c'est foutu d'avance.
Et si tu ne sais pas l'exprimer en français, tu ne sais pas ce qu'il doit faire.
Il y a beaucoup de chose qui ne se laisse pas définir au moyen d'un
programme de test.
(Et il y a beaucoup d'utilisateurs qui ne saurait pas dire ce qu'un
programme de test spécifie.)
|> Qu'est-ce que les développeurs souhaitent, selon toi, et que la
|> logique "les tests sont de la documentation (ou de la
|> spécification)" promettrait de faire réalité ?
Le souhait, c'est de ne pas écrire de la documentation externe.
L'« extreme programmation » semble en donner une justification.
Or, si tu ne sais pas ce que ton programme doit faire avant de commencer
à l'écrire, c'est foutu d'avance.
Et si tu ne sais pas l'exprimer en français, tu ne sais pas ce qu'il doit faire.
Il y a beaucoup de chose qui ne se laisse pas définir au moyen d'un
programme de test.
(Et il y a beaucoup d'utilisateurs qui ne saurait pas dire ce qu'un
programme de test spécifie.)
|> Qu'est-ce que les développeurs souhaitent, selon toi, et que la
|> logique "les tests sont de la documentation (ou de la
|> spécification)" promettrait de faire réalité ?
Le souhait, c'est de ne pas écrire de la documentation externe.
L'« extreme programmation » semble en donner une justification.
Or, si tu ne sais pas ce que ton programme doit faire avant de commencer
à l'écrire, c'est foutu d'avance.
Et si tu ne sais pas l'exprimer en français, tu ne sais pas ce qu'il doit faire.
Il y a beaucoup de chose qui ne se laisse pas définir au moyen d'un
programme de test.
(Et il y a beaucoup d'utilisateurs qui ne saurait pas dire ce qu'un
programme de test spécifie.)
(Croisé et redirigé sur fr.comp.developpement)|> Qu'est-ce que les développeurs souhaitent, selon toi, et que la
|> logique "les tests sont de la documentation (ou de la
|> spécification)" promettrait de faire réalité ?
Le souhait, c'est de ne pas écrire de la documentation externe. L'«
extreme programmation » semble en donner une justification.
Je ne pense pas que les développeurs refusent en bloc d'écrire de la
documentation.
La catégorie "documentation" est trop vaste pour pouvoir l'affirmer !
J'ai une hypothèse pour expliquer cette idée très répandue que les
développeurs n'aiment pas écrire de la doc. Elle s'énonce très
simplement: les développeurs n'aiment pas baratiner.
Or, les développeurs ont une conscience aigue, en début de projet
notamment, des lacunes qui peuvent exister dans l'expression des
besoins, dans l'architecture proposée pour répondre à ces besoins, ou
dans les principes de conception proposés pour implémenter
l'architecture. Mais exprimer ces doutes dans un document "officiel",
c'est être exposé à des critiques. "C'est ton métier de t'assurer que
le serveur Bidule peut encaisser plus de 10,000 connexions
simultanées." Beaucoup de managers ressentent tout manque de confiance
comme un "esprit négatif", et ont tendance à faire ce type de
critiques.
Or, si tu ne sais pas ce que ton programme doit faire avant de
commencer à l'écrire, c'est foutu d'avance.
Nous sommes d'accord là-dessus. Le premier devoir du développeur est
donc de *demander* ce que le programme doit faire, de savoir écouter
un client qui le lui explique, et de savoir orienter la conversation
pour qu'elle produise une information qu'il saura exploiter.
J'ai vu trop de cas où on met un jeune développeur, récemment promu
chef de projet, face à un client pour la première fois, en lui
demandant après une heure d'entretien de rédiger un cahier des charges
de 50 pages. Le "ce que ça doit faire" résulte avant tout d'une
conversation avec la maîtrise d'ouvrage. Si on met plus de temps à
rédiger le bilan de cette conversation qu'on en a mis à avoir la
conversation, on est en train d'inventer.
Et si tu ne sais pas l'exprimer en français, tu ne sais pas ce qu'il
doit faire.
Encore d'accord. Le client doit savoir exprimer ce qu'il attend du
programme; le développeur doit savoir exprimer ce que fera le
programme pour répondre à cette attente; le client doit savoir valider
cette expression de solution.
J'ajoute que le français est une langue imprécise et ambigue.
Pour évacuer cette ambiguité, il faut formaliser ce qui permettra au
client de se déclarer satisfait du programme livré. Ce formalisme,
c'est un test: pas nécessairement, à ce stade, un test exécutable,
automatisé, mais un test au sens "Je vais effectuer telle et telle
opération, et attendre tel et tel résultat en fonction des données
présentes dans le système."
Il y a beaucoup de chose qui ne se laisse pas définir au moyen d'un
programme de test.
Et il y a beaucoup de choses qui s'y prètent très bien.
De façon générale, on peut dire que tout ce qui n'est pas formalisable
par un test (au sens général du terme) n'est pas vérifiable. Si je ne
suis pas capable d'expliquer comment je compte m'y prendre pour
vérifier que le programme fait ce que je veux, comme tu le disais
ci-dessus "c'est foutu d'avance".
Dans le cas général, si je suis capable d'expliquer comment je vais
m'y prendre pour vérifier que le programme marche, une personne
compétente peut en faire un test automatisé.(Et il y a beaucoup d'utilisateurs qui ne saurait pas dire ce qu'un
programme de test spécifie.)
S'il est écrit en C ou en Java, qui ne sont pas prévus pour ça, c'est
sans doute vrai. On peut utiliser d'autres notations, plus familières
aux utilisateurs. Je connais des gens qui recommandent Excel comme une
notation "universelle" susceptible d'être comprise par toutes les
maîtrises d'ouvrage, et qui en ont fait un outil de test utilisable en
XP:
http://fit.c2.com/wiki.cgi?WelcomeVisitors
http://fitnesse.org/
Il y a plus d'avenir qu'on ne le pense à la production par les
développeurs de documentation *réellement* utile...
(Croisé et redirigé sur fr.comp.developpement)
|> Qu'est-ce que les développeurs souhaitent, selon toi, et que la
|> logique "les tests sont de la documentation (ou de la
|> spécification)" promettrait de faire réalité ?
Le souhait, c'est de ne pas écrire de la documentation externe. L'«
extreme programmation » semble en donner une justification.
Je ne pense pas que les développeurs refusent en bloc d'écrire de la
documentation.
La catégorie "documentation" est trop vaste pour pouvoir l'affirmer !
J'ai une hypothèse pour expliquer cette idée très répandue que les
développeurs n'aiment pas écrire de la doc. Elle s'énonce très
simplement: les développeurs n'aiment pas baratiner.
Or, les développeurs ont une conscience aigue, en début de projet
notamment, des lacunes qui peuvent exister dans l'expression des
besoins, dans l'architecture proposée pour répondre à ces besoins, ou
dans les principes de conception proposés pour implémenter
l'architecture. Mais exprimer ces doutes dans un document "officiel",
c'est être exposé à des critiques. "C'est ton métier de t'assurer que
le serveur Bidule peut encaisser plus de 10,000 connexions
simultanées." Beaucoup de managers ressentent tout manque de confiance
comme un "esprit négatif", et ont tendance à faire ce type de
critiques.
Or, si tu ne sais pas ce que ton programme doit faire avant de
commencer à l'écrire, c'est foutu d'avance.
Nous sommes d'accord là-dessus. Le premier devoir du développeur est
donc de *demander* ce que le programme doit faire, de savoir écouter
un client qui le lui explique, et de savoir orienter la conversation
pour qu'elle produise une information qu'il saura exploiter.
J'ai vu trop de cas où on met un jeune développeur, récemment promu
chef de projet, face à un client pour la première fois, en lui
demandant après une heure d'entretien de rédiger un cahier des charges
de 50 pages. Le "ce que ça doit faire" résulte avant tout d'une
conversation avec la maîtrise d'ouvrage. Si on met plus de temps à
rédiger le bilan de cette conversation qu'on en a mis à avoir la
conversation, on est en train d'inventer.
Et si tu ne sais pas l'exprimer en français, tu ne sais pas ce qu'il
doit faire.
Encore d'accord. Le client doit savoir exprimer ce qu'il attend du
programme; le développeur doit savoir exprimer ce que fera le
programme pour répondre à cette attente; le client doit savoir valider
cette expression de solution.
J'ajoute que le français est une langue imprécise et ambigue.
Pour évacuer cette ambiguité, il faut formaliser ce qui permettra au
client de se déclarer satisfait du programme livré. Ce formalisme,
c'est un test: pas nécessairement, à ce stade, un test exécutable,
automatisé, mais un test au sens "Je vais effectuer telle et telle
opération, et attendre tel et tel résultat en fonction des données
présentes dans le système."
Il y a beaucoup de chose qui ne se laisse pas définir au moyen d'un
programme de test.
Et il y a beaucoup de choses qui s'y prètent très bien.
De façon générale, on peut dire que tout ce qui n'est pas formalisable
par un test (au sens général du terme) n'est pas vérifiable. Si je ne
suis pas capable d'expliquer comment je compte m'y prendre pour
vérifier que le programme fait ce que je veux, comme tu le disais
ci-dessus "c'est foutu d'avance".
Dans le cas général, si je suis capable d'expliquer comment je vais
m'y prendre pour vérifier que le programme marche, une personne
compétente peut en faire un test automatisé.
(Et il y a beaucoup d'utilisateurs qui ne saurait pas dire ce qu'un
programme de test spécifie.)
S'il est écrit en C ou en Java, qui ne sont pas prévus pour ça, c'est
sans doute vrai. On peut utiliser d'autres notations, plus familières
aux utilisateurs. Je connais des gens qui recommandent Excel comme une
notation "universelle" susceptible d'être comprise par toutes les
maîtrises d'ouvrage, et qui en ont fait un outil de test utilisable en
XP:
http://fit.c2.com/wiki.cgi?WelcomeVisitors
http://fitnesse.org/
Il y a plus d'avenir qu'on ne le pense à la production par les
développeurs de documentation *réellement* utile...
(Croisé et redirigé sur fr.comp.developpement)|> Qu'est-ce que les développeurs souhaitent, selon toi, et que la
|> logique "les tests sont de la documentation (ou de la
|> spécification)" promettrait de faire réalité ?
Le souhait, c'est de ne pas écrire de la documentation externe. L'«
extreme programmation » semble en donner une justification.
Je ne pense pas que les développeurs refusent en bloc d'écrire de la
documentation.
La catégorie "documentation" est trop vaste pour pouvoir l'affirmer !
J'ai une hypothèse pour expliquer cette idée très répandue que les
développeurs n'aiment pas écrire de la doc. Elle s'énonce très
simplement: les développeurs n'aiment pas baratiner.
Or, les développeurs ont une conscience aigue, en début de projet
notamment, des lacunes qui peuvent exister dans l'expression des
besoins, dans l'architecture proposée pour répondre à ces besoins, ou
dans les principes de conception proposés pour implémenter
l'architecture. Mais exprimer ces doutes dans un document "officiel",
c'est être exposé à des critiques. "C'est ton métier de t'assurer que
le serveur Bidule peut encaisser plus de 10,000 connexions
simultanées." Beaucoup de managers ressentent tout manque de confiance
comme un "esprit négatif", et ont tendance à faire ce type de
critiques.
Or, si tu ne sais pas ce que ton programme doit faire avant de
commencer à l'écrire, c'est foutu d'avance.
Nous sommes d'accord là-dessus. Le premier devoir du développeur est
donc de *demander* ce que le programme doit faire, de savoir écouter
un client qui le lui explique, et de savoir orienter la conversation
pour qu'elle produise une information qu'il saura exploiter.
J'ai vu trop de cas où on met un jeune développeur, récemment promu
chef de projet, face à un client pour la première fois, en lui
demandant après une heure d'entretien de rédiger un cahier des charges
de 50 pages. Le "ce que ça doit faire" résulte avant tout d'une
conversation avec la maîtrise d'ouvrage. Si on met plus de temps à
rédiger le bilan de cette conversation qu'on en a mis à avoir la
conversation, on est en train d'inventer.
Et si tu ne sais pas l'exprimer en français, tu ne sais pas ce qu'il
doit faire.
Encore d'accord. Le client doit savoir exprimer ce qu'il attend du
programme; le développeur doit savoir exprimer ce que fera le
programme pour répondre à cette attente; le client doit savoir valider
cette expression de solution.
J'ajoute que le français est une langue imprécise et ambigue.
Pour évacuer cette ambiguité, il faut formaliser ce qui permettra au
client de se déclarer satisfait du programme livré. Ce formalisme,
c'est un test: pas nécessairement, à ce stade, un test exécutable,
automatisé, mais un test au sens "Je vais effectuer telle et telle
opération, et attendre tel et tel résultat en fonction des données
présentes dans le système."
Il y a beaucoup de chose qui ne se laisse pas définir au moyen d'un
programme de test.
Et il y a beaucoup de choses qui s'y prètent très bien.
De façon générale, on peut dire que tout ce qui n'est pas formalisable
par un test (au sens général du terme) n'est pas vérifiable. Si je ne
suis pas capable d'expliquer comment je compte m'y prendre pour
vérifier que le programme fait ce que je veux, comme tu le disais
ci-dessus "c'est foutu d'avance".
Dans le cas général, si je suis capable d'expliquer comment je vais
m'y prendre pour vérifier que le programme marche, une personne
compétente peut en faire un test automatisé.(Et il y a beaucoup d'utilisateurs qui ne saurait pas dire ce qu'un
programme de test spécifie.)
S'il est écrit en C ou en Java, qui ne sont pas prévus pour ça, c'est
sans doute vrai. On peut utiliser d'autres notations, plus familières
aux utilisateurs. Je connais des gens qui recommandent Excel comme une
notation "universelle" susceptible d'être comprise par toutes les
maîtrises d'ouvrage, et qui en ont fait un outil de test utilisable en
XP:
http://fit.c2.com/wiki.cgi?WelcomeVisitors
http://fitnesse.org/
Il y a plus d'avenir qu'on ne le pense à la production par les
développeurs de documentation *réellement* utile...
Laurent Bossavit wrote in message
news:...(Croisé et redirigé sur fr.comp.developpement)|> Qu'est-ce que les développeurs souhaitent, selon toi, et que la
|> logique "les tests sont de la documentation (ou de la
|> spécification)" promettrait de faire réalité ?Le souhait, c'est de ne pas écrire de la documentation externe. L'«
extreme programmation » semble en donner une justification.Je ne pense pas que les développeurs refusent en bloc d'écrire de la
documentation.
Réfuser, peut-être pas, mais la plupart des développeurs que j'ai connu
préfère écrire du code, et certains éviter la documentation comme de la
peste. Je ne dis pas que tout le tort c'est de leur côté. Parfois, la
documentation qu'on nous démandait était réelement rébarbative et sans
intérêt. Mais dans l'ensemble, prèsque tous les développeurs (moi-même
compris) semblent préférer écrire du code que du français ou de
l'anglais.La catégorie "documentation" est trop vaste pour pouvoir l'affirmer !J'ai une hypothèse pour expliquer cette idée très répandue que les
développeurs n'aiment pas écrire de la doc. Elle s'énonce très
simplement: les développeurs n'aiment pas baratiner.Or, les développeurs ont une conscience aigue, en début de projet
notamment, des lacunes qui peuvent exister dans l'expression des
besoins, dans l'architecture proposée pour répondre à ces besoins, ou
dans les principes de conception proposés pour implémenter
l'architecture. Mais exprimer ces doutes dans un document "officiel",
c'est être exposé à des critiques. "C'est ton métier de t'assurer que
le serveur Bidule peut encaisser plus de 10,000 connexions
simultanées." Beaucoup de managers ressentent tout manque de confiance
comme un "esprit négatif", et ont tendance à faire ce type de
critiques.
Ce n'est pas parce qu'on ne connaît pas tout ce qu'il ne faut pas mettre
par écrit ce qu'on connaît. Au contraire -- tant que ce n'est pas écrit,
je dirais qu'on ne le connaît pas réelement. Et je n'ai jamais
expérimenté une critique quand j'ai dit qu'on ne savait pas encore. Ce
n'est qu'une fois la manque de savoir exprimée que les managers peuvent
en faire quelque chose.
J'avoue là que mon expérience n'est peut-être pas typique. J'en entends
trop des expériences différentes pour en douter de leurs existence. Mais
ça ne change pas grand chose au problème. Que faire ce qu'il faut te
n'apporte que de critiques ne change pas que c'est ce qu'il faut.Or, si tu ne sais pas ce que ton programme doit faire avant de
commencer à l'écrire, c'est foutu d'avance.Nous sommes d'accord là-dessus. Le premier devoir du développeur est
donc de *demander* ce que le programme doit faire, de savoir écouter
un client qui le lui explique, et de savoir orienter la conversation
pour qu'elle produise une information qu'il saura exploiter.
C'est en effet la toute première démarche. Et la deuxième, qui en fait
pratiquement partie, c'est mettre noir sur blanc ce qu'il a compris,
pour être sûr que l'autre a compris la même chose.
J'ai vu trop de cas où on met un jeune développeur, récemment promu
chef de projet, face à un client pour la première fois, en lui
demandant après une heure d'entretien de rédiger un cahier des charges
de 50 pages. Le "ce que ça doit faire" résulte avant tout d'une
conversation avec la maîtrise d'ouvrage. Si on met plus de temps à
rédiger le bilan de cette conversation qu'on en a mis à avoir la
conversation, on est en train d'inventer.
Pas forcement. Si on connaît un peu le domaine du « client », on sait
comprendre ce dont il a besoin au démi mot. Ensuite, on l'écrit en
détail, et on lui fait lire, pour qu'il confirme qu'on a bien compris.
Ceci vaut à l'intérieur du projet aussi. Le « client », c'est les autres
développeurs, qui vont interfacer avec ce que nous faisons.
Et finallement, ce que veut le client, ce n'est pas forcement assez
détailler pour commencer quoique ce soit. Prenons un cas concret : on me
démande une bibliothèque de communication entre deux machines. Ce que me
dit mon client, c'est à peu près les types d'informations qu'il faut
communiquer, dans quelle quantité et dans quelle circumstances. Pour la
reste, il me fait confidance -- il ne veut même pas savoir. N'empêche
que sans avoir défini le protocol en détail (est-ce que je transmets les
entiers gros-boutien, petit-boutien ou en texte, etc.), je n'écris pas
une seule ligne de code.
Laurent Bossavit <laurent@dontspambossavit.com> wrote in message
news:<MPG.1a6d50d3992694559896f6@news.noos.fr>...
(Croisé et redirigé sur fr.comp.developpement)
|> Qu'est-ce que les développeurs souhaitent, selon toi, et que la
|> logique "les tests sont de la documentation (ou de la
|> spécification)" promettrait de faire réalité ?
Le souhait, c'est de ne pas écrire de la documentation externe. L'«
extreme programmation » semble en donner une justification.
Je ne pense pas que les développeurs refusent en bloc d'écrire de la
documentation.
Réfuser, peut-être pas, mais la plupart des développeurs que j'ai connu
préfère écrire du code, et certains éviter la documentation comme de la
peste. Je ne dis pas que tout le tort c'est de leur côté. Parfois, la
documentation qu'on nous démandait était réelement rébarbative et sans
intérêt. Mais dans l'ensemble, prèsque tous les développeurs (moi-même
compris) semblent préférer écrire du code que du français ou de
l'anglais.
La catégorie "documentation" est trop vaste pour pouvoir l'affirmer !
J'ai une hypothèse pour expliquer cette idée très répandue que les
développeurs n'aiment pas écrire de la doc. Elle s'énonce très
simplement: les développeurs n'aiment pas baratiner.
Or, les développeurs ont une conscience aigue, en début de projet
notamment, des lacunes qui peuvent exister dans l'expression des
besoins, dans l'architecture proposée pour répondre à ces besoins, ou
dans les principes de conception proposés pour implémenter
l'architecture. Mais exprimer ces doutes dans un document "officiel",
c'est être exposé à des critiques. "C'est ton métier de t'assurer que
le serveur Bidule peut encaisser plus de 10,000 connexions
simultanées." Beaucoup de managers ressentent tout manque de confiance
comme un "esprit négatif", et ont tendance à faire ce type de
critiques.
Ce n'est pas parce qu'on ne connaît pas tout ce qu'il ne faut pas mettre
par écrit ce qu'on connaît. Au contraire -- tant que ce n'est pas écrit,
je dirais qu'on ne le connaît pas réelement. Et je n'ai jamais
expérimenté une critique quand j'ai dit qu'on ne savait pas encore. Ce
n'est qu'une fois la manque de savoir exprimée que les managers peuvent
en faire quelque chose.
J'avoue là que mon expérience n'est peut-être pas typique. J'en entends
trop des expériences différentes pour en douter de leurs existence. Mais
ça ne change pas grand chose au problème. Que faire ce qu'il faut te
n'apporte que de critiques ne change pas que c'est ce qu'il faut.
Or, si tu ne sais pas ce que ton programme doit faire avant de
commencer à l'écrire, c'est foutu d'avance.
Nous sommes d'accord là-dessus. Le premier devoir du développeur est
donc de *demander* ce que le programme doit faire, de savoir écouter
un client qui le lui explique, et de savoir orienter la conversation
pour qu'elle produise une information qu'il saura exploiter.
C'est en effet la toute première démarche. Et la deuxième, qui en fait
pratiquement partie, c'est mettre noir sur blanc ce qu'il a compris,
pour être sûr que l'autre a compris la même chose.
J'ai vu trop de cas où on met un jeune développeur, récemment promu
chef de projet, face à un client pour la première fois, en lui
demandant après une heure d'entretien de rédiger un cahier des charges
de 50 pages. Le "ce que ça doit faire" résulte avant tout d'une
conversation avec la maîtrise d'ouvrage. Si on met plus de temps à
rédiger le bilan de cette conversation qu'on en a mis à avoir la
conversation, on est en train d'inventer.
Pas forcement. Si on connaît un peu le domaine du « client », on sait
comprendre ce dont il a besoin au démi mot. Ensuite, on l'écrit en
détail, et on lui fait lire, pour qu'il confirme qu'on a bien compris.
Ceci vaut à l'intérieur du projet aussi. Le « client », c'est les autres
développeurs, qui vont interfacer avec ce que nous faisons.
Et finallement, ce que veut le client, ce n'est pas forcement assez
détailler pour commencer quoique ce soit. Prenons un cas concret : on me
démande une bibliothèque de communication entre deux machines. Ce que me
dit mon client, c'est à peu près les types d'informations qu'il faut
communiquer, dans quelle quantité et dans quelle circumstances. Pour la
reste, il me fait confidance -- il ne veut même pas savoir. N'empêche
que sans avoir défini le protocol en détail (est-ce que je transmets les
entiers gros-boutien, petit-boutien ou en texte, etc.), je n'écris pas
une seule ligne de code.
Laurent Bossavit wrote in message
news:...(Croisé et redirigé sur fr.comp.developpement)|> Qu'est-ce que les développeurs souhaitent, selon toi, et que la
|> logique "les tests sont de la documentation (ou de la
|> spécification)" promettrait de faire réalité ?Le souhait, c'est de ne pas écrire de la documentation externe. L'«
extreme programmation » semble en donner une justification.Je ne pense pas que les développeurs refusent en bloc d'écrire de la
documentation.
Réfuser, peut-être pas, mais la plupart des développeurs que j'ai connu
préfère écrire du code, et certains éviter la documentation comme de la
peste. Je ne dis pas que tout le tort c'est de leur côté. Parfois, la
documentation qu'on nous démandait était réelement rébarbative et sans
intérêt. Mais dans l'ensemble, prèsque tous les développeurs (moi-même
compris) semblent préférer écrire du code que du français ou de
l'anglais.La catégorie "documentation" est trop vaste pour pouvoir l'affirmer !J'ai une hypothèse pour expliquer cette idée très répandue que les
développeurs n'aiment pas écrire de la doc. Elle s'énonce très
simplement: les développeurs n'aiment pas baratiner.Or, les développeurs ont une conscience aigue, en début de projet
notamment, des lacunes qui peuvent exister dans l'expression des
besoins, dans l'architecture proposée pour répondre à ces besoins, ou
dans les principes de conception proposés pour implémenter
l'architecture. Mais exprimer ces doutes dans un document "officiel",
c'est être exposé à des critiques. "C'est ton métier de t'assurer que
le serveur Bidule peut encaisser plus de 10,000 connexions
simultanées." Beaucoup de managers ressentent tout manque de confiance
comme un "esprit négatif", et ont tendance à faire ce type de
critiques.
Ce n'est pas parce qu'on ne connaît pas tout ce qu'il ne faut pas mettre
par écrit ce qu'on connaît. Au contraire -- tant que ce n'est pas écrit,
je dirais qu'on ne le connaît pas réelement. Et je n'ai jamais
expérimenté une critique quand j'ai dit qu'on ne savait pas encore. Ce
n'est qu'une fois la manque de savoir exprimée que les managers peuvent
en faire quelque chose.
J'avoue là que mon expérience n'est peut-être pas typique. J'en entends
trop des expériences différentes pour en douter de leurs existence. Mais
ça ne change pas grand chose au problème. Que faire ce qu'il faut te
n'apporte que de critiques ne change pas que c'est ce qu'il faut.Or, si tu ne sais pas ce que ton programme doit faire avant de
commencer à l'écrire, c'est foutu d'avance.Nous sommes d'accord là-dessus. Le premier devoir du développeur est
donc de *demander* ce que le programme doit faire, de savoir écouter
un client qui le lui explique, et de savoir orienter la conversation
pour qu'elle produise une information qu'il saura exploiter.
C'est en effet la toute première démarche. Et la deuxième, qui en fait
pratiquement partie, c'est mettre noir sur blanc ce qu'il a compris,
pour être sûr que l'autre a compris la même chose.
J'ai vu trop de cas où on met un jeune développeur, récemment promu
chef de projet, face à un client pour la première fois, en lui
demandant après une heure d'entretien de rédiger un cahier des charges
de 50 pages. Le "ce que ça doit faire" résulte avant tout d'une
conversation avec la maîtrise d'ouvrage. Si on met plus de temps à
rédiger le bilan de cette conversation qu'on en a mis à avoir la
conversation, on est en train d'inventer.
Pas forcement. Si on connaît un peu le domaine du « client », on sait
comprendre ce dont il a besoin au démi mot. Ensuite, on l'écrit en
détail, et on lui fait lire, pour qu'il confirme qu'on a bien compris.
Ceci vaut à l'intérieur du projet aussi. Le « client », c'est les autres
développeurs, qui vont interfacer avec ce que nous faisons.
Et finallement, ce que veut le client, ce n'est pas forcement assez
détailler pour commencer quoique ce soit. Prenons un cas concret : on me
démande une bibliothèque de communication entre deux machines. Ce que me
dit mon client, c'est à peu près les types d'informations qu'il faut
communiquer, dans quelle quantité et dans quelle circumstances. Pour la
reste, il me fait confidance -- il ne veut même pas savoir. N'empêche
que sans avoir défini le protocol en détail (est-ce que je transmets les
entiers gros-boutien, petit-boutien ou en texte, etc.), je n'écris pas
une seule ligne de code.
wrote:
Nous sommes d'accord là-dessus. Le premier devoir du développeur est
donc de *demander* ce que le programme doit faire, de savoir écouter
un client qui le lui explique, et de savoir orienter la conversation
pour qu'elle produise une information qu'il saura exploiter.
C'est en effet la toute première démarche. Et la deuxième, qui en
fait pratiquement partie, c'est mettre noir sur blanc ce qu'il a
compris, pour être sûr que l'autre a compris la même chose.
Ca c'est la cas ideal. Mais j'ai rencontré un paquet de clients qui ne
savaient pas ce qu'ils voulaient exactement et me disaient de faire a
mon idée pour exploiter au mieux le matériel qu'il venait d'acheter.
D'un autre coté, il est vrai que quand on branche un appareil de
numération sanguine a un ordinateur, il n'y a pas beaucoup de
possibilités.
J'ai vu trop de cas où on met un jeune développeur, récemment promu
chef de projet, face à un client pour la première fois, en lui
demandant après une heure d'entretien de rédiger un cahier des
charges de 50 pages. Le "ce que ça doit faire" résulte avant tout
d'une conversation avec la maîtrise d'ouvrage. Si on met plus de
temps à rédiger le bilan de cette conversation qu'on en a mis à
avoir la conversation, on est en train d'inventer.
Pas forcement. Si on connaît un peu le domaine du « client », on
sait comprendre ce dont il a besoin au démi mot. Ensuite, on l'écrit
en détail, et on lui fait lire, pour qu'il confirme qu'on a bien
compris.
Ceci vaut à l'intérieur du projet aussi. Le « client », c'est les
autres développeurs, qui vont interfacer avec ce que nous faisons.
Et finallement, ce que veut le client, ce n'est pas forcement assez
détailler pour commencer quoique ce soit. Prenons un cas concret :
on me démande une bibliothèque de communication entre deux machines.
Ce que me dit mon client, c'est à peu près les types d'informations
qu'il faut communiquer, dans quelle quantité et dans quelle
circumstances. Pour la reste, il me fait confidance -- il ne veut
même pas savoir. N'empêche que sans avoir défini le protocol en
détail (est-ce que je transmets les entiers gros-boutien,
petit-boutien ou en texte, etc.), je n'écris pas une seule ligne de
code.
J'ai fait ca pendant 4 ans, et j'ai deja eu des description de
protocole assez speciale (style un post it avec deux ou trois lignes
griffonées). Quand le protocole n'etait pas carrément faux voire
inconnu ("comment? il se branche cet appareil? je ne savais meme pas")
avec obligation de brancher un ordinateur derriere la machine pour
recuperer un exemple de données transmises (une société dont je ne
citerais pas le nom était familiere de ce genre de chose). Et il n'y a
qu'un seul appareil que je n'ai pas reussi a brancher (sur 200).
kanze@gabi-soft.fr wrote:
Nous sommes d'accord là-dessus. Le premier devoir du développeur est
donc de *demander* ce que le programme doit faire, de savoir écouter
un client qui le lui explique, et de savoir orienter la conversation
pour qu'elle produise une information qu'il saura exploiter.
C'est en effet la toute première démarche. Et la deuxième, qui en
fait pratiquement partie, c'est mettre noir sur blanc ce qu'il a
compris, pour être sûr que l'autre a compris la même chose.
Ca c'est la cas ideal. Mais j'ai rencontré un paquet de clients qui ne
savaient pas ce qu'ils voulaient exactement et me disaient de faire a
mon idée pour exploiter au mieux le matériel qu'il venait d'acheter.
D'un autre coté, il est vrai que quand on branche un appareil de
numération sanguine a un ordinateur, il n'y a pas beaucoup de
possibilités.
J'ai vu trop de cas où on met un jeune développeur, récemment promu
chef de projet, face à un client pour la première fois, en lui
demandant après une heure d'entretien de rédiger un cahier des
charges de 50 pages. Le "ce que ça doit faire" résulte avant tout
d'une conversation avec la maîtrise d'ouvrage. Si on met plus de
temps à rédiger le bilan de cette conversation qu'on en a mis à
avoir la conversation, on est en train d'inventer.
Pas forcement. Si on connaît un peu le domaine du « client », on
sait comprendre ce dont il a besoin au démi mot. Ensuite, on l'écrit
en détail, et on lui fait lire, pour qu'il confirme qu'on a bien
compris.
Ceci vaut à l'intérieur du projet aussi. Le « client », c'est les
autres développeurs, qui vont interfacer avec ce que nous faisons.
Et finallement, ce que veut le client, ce n'est pas forcement assez
détailler pour commencer quoique ce soit. Prenons un cas concret :
on me démande une bibliothèque de communication entre deux machines.
Ce que me dit mon client, c'est à peu près les types d'informations
qu'il faut communiquer, dans quelle quantité et dans quelle
circumstances. Pour la reste, il me fait confidance -- il ne veut
même pas savoir. N'empêche que sans avoir défini le protocol en
détail (est-ce que je transmets les entiers gros-boutien,
petit-boutien ou en texte, etc.), je n'écris pas une seule ligne de
code.
J'ai fait ca pendant 4 ans, et j'ai deja eu des description de
protocole assez speciale (style un post it avec deux ou trois lignes
griffonées). Quand le protocole n'etait pas carrément faux voire
inconnu ("comment? il se branche cet appareil? je ne savais meme pas")
avec obligation de brancher un ordinateur derriere la machine pour
recuperer un exemple de données transmises (une société dont je ne
citerais pas le nom était familiere de ce genre de chose). Et il n'y a
qu'un seul appareil que je n'ai pas reussi a brancher (sur 200).
wrote:
Nous sommes d'accord là-dessus. Le premier devoir du développeur est
donc de *demander* ce que le programme doit faire, de savoir écouter
un client qui le lui explique, et de savoir orienter la conversation
pour qu'elle produise une information qu'il saura exploiter.
C'est en effet la toute première démarche. Et la deuxième, qui en
fait pratiquement partie, c'est mettre noir sur blanc ce qu'il a
compris, pour être sûr que l'autre a compris la même chose.
Ca c'est la cas ideal. Mais j'ai rencontré un paquet de clients qui ne
savaient pas ce qu'ils voulaient exactement et me disaient de faire a
mon idée pour exploiter au mieux le matériel qu'il venait d'acheter.
D'un autre coté, il est vrai que quand on branche un appareil de
numération sanguine a un ordinateur, il n'y a pas beaucoup de
possibilités.
J'ai vu trop de cas où on met un jeune développeur, récemment promu
chef de projet, face à un client pour la première fois, en lui
demandant après une heure d'entretien de rédiger un cahier des
charges de 50 pages. Le "ce que ça doit faire" résulte avant tout
d'une conversation avec la maîtrise d'ouvrage. Si on met plus de
temps à rédiger le bilan de cette conversation qu'on en a mis à
avoir la conversation, on est en train d'inventer.
Pas forcement. Si on connaît un peu le domaine du « client », on
sait comprendre ce dont il a besoin au démi mot. Ensuite, on l'écrit
en détail, et on lui fait lire, pour qu'il confirme qu'on a bien
compris.
Ceci vaut à l'intérieur du projet aussi. Le « client », c'est les
autres développeurs, qui vont interfacer avec ce que nous faisons.
Et finallement, ce que veut le client, ce n'est pas forcement assez
détailler pour commencer quoique ce soit. Prenons un cas concret :
on me démande une bibliothèque de communication entre deux machines.
Ce que me dit mon client, c'est à peu près les types d'informations
qu'il faut communiquer, dans quelle quantité et dans quelle
circumstances. Pour la reste, il me fait confidance -- il ne veut
même pas savoir. N'empêche que sans avoir défini le protocol en
détail (est-ce que je transmets les entiers gros-boutien,
petit-boutien ou en texte, etc.), je n'écris pas une seule ligne de
code.
J'ai fait ca pendant 4 ans, et j'ai deja eu des description de
protocole assez speciale (style un post it avec deux ou trois lignes
griffonées). Quand le protocole n'etait pas carrément faux voire
inconnu ("comment? il se branche cet appareil? je ne savais meme pas")
avec obligation de brancher un ordinateur derriere la machine pour
recuperer un exemple de données transmises (une société dont je ne
citerais pas le nom était familiere de ce genre de chose). Et il n'y a
qu'un seul appareil que je n'ai pas reussi a brancher (sur 200).