Les traductions sont de ma pomme ; les suggestions sont les bienvenues.

creationism n. : The (false) belief that large, innovative software designs can be completely specified in advance and then painlessly magicked out of the void by the normal efforts of a team of normally talented programmers.

In fact, experience has shown repeatedly that good designs arise only from evolutionary, exploratory interaction between one (or at most a small handful of) exceptionally able designer(s) and an active user population -- and that the first try at a big new idea is always wrong. Unfortunately, because these truths don’t fit the planning models beloved of management, they are generally ignored.

créationisme m. : La croyance (fausse) que de nouveaux logiciels grands et innovants puissent être spécifiés complètement à l’avance et créés ex nihilo automagiquement par le travail normal de développeurs normalement talentueux.

En fait, l’expérience a montré de manière répétée qu’une bonne conception naît d’une interaction exploratoire et évolutive entre un (au plus une poignée) de concepteurs exceptionnellement capables, et une population d’utilisateurs actifs - et que le premier essai d’une nouvelle grande idée est toujours une erreur. Malheureusement, comme ces vérités n’entrent pas les modèles de planification chéris du management, elles sont généralement ignorées.)

Hacker’s dictionary


(...)one of my colleagues took over maintenance of a system which included a date library. The dates and times were treated as floating-point, leading to much conversion and adjustinging. Eg. 12:30 was 12.30, so when adding 40 minutes getting 12.70, and then adjusting that to 13.10, No input validation was done. My colleague tried cleaning that up, but then got complaints from the users. They had discovered the "features" and were now using eg: January -6th meaning december 24th the previous year.
My colleague had to remove the input validation again and keep the features.

Un de mes collègues avait repris la maintenance d’un système qui comprenait une bibliothèque de gestion des dates. Dates et heures étaient traitées comme des décimaux, ce qui menait à nombre de conversions et d’ajustements. par exemple 12h30 était en fait 12,30, donc ajouter 40 minutes donnait 12,70, à ajuster à 13h10. Aucune validation des entrées n’était faite. Mon collègue tenta de nettoyer tout ça, mais reçut des plaintes des utilisateurs. Ils avaient découvert cette « fonctionnalité » et utilisaient par exemple le -6 janvier pour signifier le 24 décembre de l’année d’avant.
Mon collègue dut supprimer ses contrôles et garder la fonctionnalité.

isj, Slashdot.org, 30 mars 2007

En fait, l’évolution darwinienne fonctionne aussi comme ça, la nageoire-pagaie étant utilisée finalement comme patte, Ce qui ne veut pas dire que l’on doit tolérer des aberrations de la part des utilisateurs, ceux-ci doivent être remis au pas et se voir offrir la même fonctionnalité sous une forme moins tourmentée.


Any app that doesn’t need to be rewritten hasn’t grown sufficiently beyond its original intent.

Une application qui n’a pas besoin d’être réécrite n’a pas suffisamment grandi en-dehors de son cadre d’origine.

Jesse Litton, 1990

Qu’une application se retrouve à faire tout et n’importe quoi est le signe du succès. Que les concepteurs renoncent à la tentation de la faire grossir jusqu’à l’indicible est une qualité rare.


- Commit du soir, espoir.
- Build du matin, chagrin.

#linuxfr

Ne jamais faire un « dernier truc avant de partir » : soit on ne teste pas et le lendemain on pleure, soit on le teste et au lieu de 18h on sort à 20h50.


If you start explaining the bug to someone, there’s a good chance in mid-explanation you’ll realize a solution to the problem. Some school (can’t remember which) had a Teddy Bear in their programming consulting office... There was a sign. "Explain it to the bear first, before you talk to a human". Silly as it sounds, people would do it, and a large portion of the time they’d never actually have to consult the staff... by explaining it to the bear, they solved the problem.

Si vous commencez à décrire un bug à quelqu’un, il y a une bonne chance qu’au milieu de l’explication vous découvriez la solution au problème. Une école (peux pas me rappeler laquelle) avait un ours en peluche dans leur bureau de conseil informatique... Il y avait un panneau : « Racontez-le à l’ours avant de parler à un humain. » Aussi stupide que cela semble, les gens le faisaient, et une bonne partie du temps ils n’avaient plus besoin de demander conseil à l’équipe... En l’expliquant à l’ours, ils résolvaient le problème.

deanj, Slashdot.org, 24 février 2004

Une question bien posée est à moitié résolue.


I worked on a new development project a while back and we decided to try XP [eXtreme Programming] for the design and development cycle. Another project in the same department started at about the same time and used Rational Rose and produced a lot of UML design specs up front. We had part of our application up and running to the users satisfaction within 3 months, but then ran into a major design oversight that bogged us down for the next 3 months. The other project didn’t start to program for 2 months and didn’t have anything really to show the customer after 6 months. In the end both projects were killed.
The moral: There are no magic bullets.


Je travaillais sur un nouveau développement il y a quelques temps et nous avions décidé d’essayer XP [eXtreme Programming] pour la conception et le cycle de développement. Un autre projet du même département démarra à peu près au même moment, utilisait Rational Rose et produisit beaucoup de schémas UML d’entrée. Nous avions des parties de notre application en fonctionnement à la satisfaction des utilisateurs dans les 3 mois, mais avons trouvé un énorme oubli à la conception qui nous bloqua les 3 mois suivants. L’autre projet ne commença pas à programmer avant 2 mois et n’avait rien à montrer au client après 6 mois. Finalement les deux projets furent tués.
Moralité : il n’y a pas de balle en argent.

smallfeet, Slashdot.org, 12 avril 2004


Software QA is like cleaning my cat’s litter box: Sift out the big chunks. Stir in the rest. Hope it doesn’t stink.

La qualité logicielle, c’est comme nettoyer la litière de mon chat. Enlever les gros morceaux. Mélanger le reste. Espérer que ça ne pue pas.

DaveAtFraud, Slashdot.org, 2004

Ajoutons que le classeur Excel aux métriques absconses destiné à vérifier la qualité du soft doit impérativement montrer que tout va bien.


One of the funniest and scariest things I’ve ever heard in my life:
(extreme anger) "GOD DAMNIT VISUAL C IS A FUCKING PIECE OF SHIT! IT ONLY ALLOWS 16384 LOCAL VARIABLES!!!!"

Une des choses les plus marrantes et effrayantes que j’ai entendues de ma vie :
(fureur extrême) « FOUTREDIEU VISUAL C EST UNE MERDE PUANTE ! IL NE PERMET QUE 16384 VARIABLES LOCALES !!!! »

Monkelectric, Slashdot.org, 31 mars 2004


Every time I’m tempted to start micro-optimizing, I remind myself of the following three simple rules:
1) Don’t.
2) If you feel tempted to violate rule 1, at least wait until you’ve finished writing the program.
3) Non-trivial programs are never finished.

Chaque fois que je suis tenté de micro-optimiser, je me rappelle les trois simples règles suivantes :
1) Ne le faites pas.
2) Si vous êtes tenté de violer la règle 1, attendez au moins d’avoir fini le programme.
3) Les programmes non triviaux ne sont jamais finis.

Frequency Domain, Slashdot.org, 06 mai 2004


Can darwinism work on software bugs ?

Le darwinisme fonctionne-t-il sur les bugs logiciels ?

boaworm, Slashdot.org

Pour les malwares déjà ça semble fonctionner...


Programming trains you for parenting pretty well. The long sleepless nights, the time spent explaining very simple things to really stoopid people, and the ability to tune out the rest of the world all really help when dealing with children.

Programmer vous entraîne très bien au rôle de parent. Les longues nuits sans sommeil, le temps passé à expliquer des choses très simples à des gens vraiment stupides, et la capacité à s’abstraire du reste du monde, tout ça aide vraiment à s’occuper d’enfants.

MythoBeast, Slashdot.org, 04 juin 2004

S’abstraire du monde, avec des enfants ? Arf !


Developer’s Serenity Prayer:
God grant me the serenity to leave untested things I cannot test;
courage to test the things I can;
and wisdom to know when to refactor.”

Prière de la Sérénité du Développeur :
« Que Dieu me donne la sérénité de laisser intestées les choses que je ne peux pas tester ;
le courage de tester ce que je peux tester ;
et la sagesse de savoir quand refactoriser. »

(Source inconnue)


Code can never be 100% self documenting,
but that’s no reason not to settle for 0%.

Le code ne peut jamais être à 100% auto-documenté,
mais ce n’est pas une raison pour accepter 0%.

Trillan, Slashdot.org, 25 février 2005

Et 100% c’est sans doute trop car redondant avec ce qu’on peut lire immédiatement dans le code.


Software application development comes down to:
1. You can have it done fast.
2. You can have it done cheap.
3. You can have it fully functional
Now pick 2.

Fast and cheap = means using average and inexpensive programmers and is not fully functional
Fast and fully functional = exceptional programmers and will cost an arm and a leg
Cheap and fully functional = means it will take a long, long, long, long time for the average and inexpensive programmers to build it
The timeline for the application, whether you need it tomorrow or can wait a few years, in addition to the budget determines what kind of programmers you can afford and need to hire.

Le développement de logiciel se résume à :
1) Vous pouvez l’avoir vite fait.
2) Vous pouvez l’avoir pour pas cher.
3) Vous pouvez l’avoir complètement fonctionnel.
Maintenant choisissez deux options.
Rapide et pas cher = signifie des programmeurs moyens et pas chers, et pas complètement fonctionnel
Rapide et fonctionnel = programmeurs exceptionnels et vous coûtera les yeux de la tête
Pas cher et fonctionnel = signifie que ça va prendre un long, long moment à faire pour des programmeurs moyens et pas chers.
La durée de développement de l’application, que vous la vouliez demain ou que vous puissiez attendre quelques années, en plus du budget, détermine quel type de programmeurs vous pouvez vous permettre et que vous devez embaucher.

tokengeekgrrl, Slashdot.org, 03 août 2005

Encore faut-il avoir le choix des programmeurs. L’interface par des commerciaux de SSII n’est pas idéale pour ça.


I worked for a rather large ISP who (...) switched from a rather large home grown custom database program it had used for years to the corporate Vantive which cost them millions at the time.
I asked my manager why would they bother doing such a thing when the old program worked just fine. He said “The guy who made the program died and know one knows how to code for it.
I laughed for a moment and then by his blank face realized he wasn’t joking...

J’ai travaillé pour un opérateur Internet assez important qui passait d’une base de données maison utilisée pendant des années à Vantive, qui coûtait des millions à l’époque.
J’ai demandé à mon manager pourquoi ils s’embêtaient à faire ça alors que l’ancien programme marchait bien. Il dit : « Le gars qui a fait le programme est mort et personne ne sait comment programmer ça. » J’ai ri un moment et à son air vide d’expression j’ai réalisé qu’il ne plaisantait pas.

vertinox, Slashdot.org, 21 novembre 2005

Personne n’est irremplaceable, personne ne doit être irremplaceable.


Being able to do a lot with one line of code or being able to type 50% fewer LOC to do your job has no place in programming today and is, in fact, counter-productive. If you are actually thinking faster than you type when you’re programming, you need to think more, not type less!

Être capable de faire beaucoup en une seule ligne de code ou de faire votre boulot en tapant 50% de lignes de moins n’a pas de place dans la programmation actuelle et en fait, est contre-productif. Si vous pensez réellement plus vite que vous ne tapez quand vous programmez, vous devez penser plus, pas taper moins !

bill_kress, Slashdot.org, 14 décembre 2005

Réflexion hautement spéculative. La vitesse de frappe d’un code n’est pas la principale limite au développement, c’est sûr. La concision compacte et illisible à la Perl, et autres astuces qui génèrent du code « à lecture seule », sont des abominations que certains défendent encore. Par contre, la vérité est à la fin de la phrase : le développeur doit pouvoir penser plus.
Donc le code verbeux parce que la syntaxe est rigide, bien que vite apprise, comme en PL/SQL ou en Pascal, n’est pas gênant – surtout si cela évite des erreurs. Le code verbeux à cause d’un milliard de paramètres à rentrer qui seraient automatisables, non !


Extraits de mes signatures : le développement informatique (1)
Extraits de mes signatures : le développement informatique (2)