Styles

jeudi 16 octobre 2008

Contribuer en français à Wikipedia

Quand on parcours le site wikipedia.org, on se rend compte rapidement qu'il y a beaucoup plus de pages en anglais qu'en français. Cela est bien naturel, il y a beaucoup plus de monde parlant plus ou moins couramment anglais que français. De plus, beaucoup de personnes parlant français contribuent à wikipedia en anglais, simplement du fait qu'ils ne souhaitent pas créer de nouvelles pages ou faire une grosse contribution et qu'aucune page en français n'existe sur leur sujet de prédilection.

Face à cet état de fait, on pourrait avoir deux positions différentes :
- abandonner le français, ne consulter et contribuer qu'en anglais à en.wikipedia.org.

- contribuer uniquement en français mais se confronter à un manque flagrant de pages en français.
Si vous pensez que le français peut encore avoir une utilité pour comprendre le monde, on peut adopter la méthode suivante : quand vous consultez une page wikipedia en anglais, posez-vous la question : est-ce qu'il existe l'équivalent en français de cette page ? si oui, est-elle aussi riche que la page en anglais ?

Si la page en français n'existe pas, vous pouvez, au minimum, traduire la page, anglais vers français. Si elle existe, vous pouvez vous assurer qu'il y a au minimum toutes les informations déjà présentes dans la page en anglais.

Avec cette petite méthode, cela permet :
- de s'assurer qu'on a au moins autant d'information que sur la page en anglais,

- de permettre à des contributeurs français de produire des contributions petites ou moyennes sur tous les sujets.
J'ai créé pour la première fois une page entière de Wikipedia en français : Problème de satisfaction de contrainte rejoignant mon intérêt pour ce sujet.

J'ai traduit la page en langue anglaise : Constraint Satisfaction Problem. Même si ce travail ne paraît pas très enrichissant au niveau de wikipedia, cela permet à mon avis de faire grandir globalement (quelque soit la langue) le contenu de cette encyclopédie. Ces pages traduites deviennent le support de nouvelles contributions, la page en français s'éloignant petit à petit de la traduction initiale. Il est toujours intéressant de vérifier qu'on a bien tous les sujets traités du côté anglais et du côté français, les différentes traductions s'émulant mutuellement.

Bien sur, cette méthode peut s'appliquer avec n'importe quelle langue, pas seulement l'anglais et le français.

Quand on contribue à wikipedia, il ne faut pas oublier toutes les dépendances de la page :
- Ne pas oublier de mettre un référence sur la page des abbréviations (par exemple, dans mon cas : CSP)

- Mettre la liste des traductions sur la page et sur la page en anglais.

- Ajouter des liens externes vers des documents en langue française sur le sujet.
Vous pouvez suivre la page que vous avez créée/modifiée. Cela permet de se tenir au courant de l'évolution de vos contributions. Pour ma part, je rajoute dans mon agrégateur de fils RSS le fil des dernières modifications de chaque page qui m'intéresse. Pour ce faire :
- quand vous visualisez une page, cliquer sur l'onglet "historique" en haut de la page

- à gauche dans la case "Boîte à outils" vous avez deux liens : un lien RSS, un autre au format Atom.
Mettez un des deux liens dans votre agrégateur, vous pourrez ainsi suivre toutes les modifications effectuées sur la page sans avoir à sortir de votre outil préféré. Le taux de mise à jour de ces fils sont assez variables selon la page concernée. Il y a malheureusement, quelque fois, des modifications qui sont dues à des volontés de détruire ou brouiller le contenu...

Wikipedia, bien qu'imparfaite, est une encyclopédie qui ne demande qu'à s'améliorer. On peut facilement critiquer son contenu du simple fait qu'il n'y a pas de revue explicite par des experts du domaine. Wikipedia essaie de rester neutre pour référencer le plus grand nombre de définitions. Mais une définition ne suffit pas à la compréhension du phénomène. L'explication des différents aspects d'une réalité passe par le recensement critique des points de vues existants.

dimanche 12 octobre 2008

La journalisation n'est pas neutre

Je viens de lire ça sur le blog de Miško Hevery dans son billet Root Cause of Singletons :
The other kind of Singletons, which are semi-acceptable are those which don’t effect the execution of your code. Logging is perfect example. It is loaded with Singletons and global state. It is acceptable (as in it will not hurt you) because your application does not behave any different whether or not a given logger is enabled.
Non, non, non, comment peut-on dire qu'une application n'est pas affectée par l'exécution ou non d'un code dont elle dépend, surtout un système de journalisation (Logger). Un logger peut amener un tas de problèmes. Il suffit de jeter un coup d'oeil sur les changements effectués sur la dernière version stable de log4j par exemple pour prendre peur : une cinquantaine de bugs fixés il y a plus d'un an et pas de release stable officielle depuis malgré une quarantaine de bugs ouverts...

Mais sans parler des bugs, si on réfléchi un minimum à ce que peut faire un Logger comme log4j, on s'aperçoit que, oui, votre application peut avoir un comportement différent simplement du fait de sa dépendance au Logger:

- le logger peut écrire dans un fichier qui peut exploser le disque sur lequel votre application souhaite y écrire des données

- le logger peut écrire dans une base de données et s'arroger pour un temps incertain des connexions qui sont normalement allouées à l'application

- vous ne maitrisez aucunement le temps que passe le Logger à réaliser sa tâche (je vous conseille dans tous les cas, d'utiliser un système de logging asynchrone qui vous rend la main aussi vite que possible. Sous log4j, c'est AsyncAppender qui se charge de ça)

Dans tous les cas, il est important de savoir ce que fait exactement le logger, car le logging est peut-être l'activité la plus répétitive et la plus longue que va réaliser votre programme. Si vous ne voulez pas avoir la désagréable sensation d'être revenu au temps préhistorique (c'est-à-dire, comme sur une machine de plus de 3 ans) quand vous exécutez votre programme, ne laissez pas votre logger vous bouffer. Des systèmes comme Oracle Database Server ont poussé l'expertise jusqu'à en faire une science quasi-exacte ;)
Toute ligne de code a un impact sur l'exécution. J'ai bien dit "Toute ligne de code", même celles qui théoriquement ne seront jamais appelées. Ça m'est déjà arrivé avec du code Visual Basic 6, il y a for longtemps il est vrai, mais c'est une expérience que je ne souhaite absolument pas renouveler...

mercredi 8 octobre 2008

Moyens de mieux vivre la prestation de service

En France, le secteur des SSII (Sociétés de Service en Ingénierie Informatique) est fleurissant. Malheureusement, le travail réalisé par leurs employés n'est pas toujours des plus valorisant du simple fait que les clients ne maîtrisent pas ou peu l'outil informatique. Par conséquent, les contrats négociés entre client et SSII se basent surtout sur le TJM (Taux Journalier Moyen) plus que sur l'objectif de la mission de service ou l'expression précise du besoin métier.

Nombre de missions au forfait ou en "assistance technique" sont très peu exprimées au niveau métier, la réflexion et l'analyse de système n'ayant pas ou peu été menée en interne chez le client avant de lancer un appel d'offre.

Cet état de fait abouti souvent à faire travailler directement un employé de SSII dans les équipes du client sans objectif clair sur la mission de service. Cela est prohibé par la loi et nommé « prêt illicite de main-d’oeuvre » et « marchandage dans le cadre d’un contrat pour prestation de services ».

Cette situation se rencontre malheureusement souvent. Elle est rarement poursuivi en justice, ou alors uniquement dans des cas retentissants. Si vous vous demandez si vous êtes dans ce cas, demandez vous si vous vous sentez plus intégré dans les équipes du client qu'à votre SSII. Si c'est le cas, cela montre que la SSII n'apporte aucune valeur ajoutée au client, si ce n'est un rôle de société d'intérim.

Pour éviter d'être dans cette situation là, vous pouvez entreprendre plusieurs actions :

- demander un ordre de mission : quand une société vous envoie sur le site d'un client particulier de façon régulière, elle doit préciser les modalités de prestation par un "Ordre de Mission". Comme on peut le lire sur munci.org :
L’ordre de mission constitue un contrat de prestation (Droit du commerce), signé en sus du contrat de travail (Droit du travail). Il doit être en effet libellé pour protéger le salarié détaché et non pas pour transformer son lien à l’employeur.

Sans y mettre les formes, cela risque de permettre petit à petit de transformer le salarié "presté" de SSII en mission en clientèle en "indépendant" à qui l’on va réclamer des résultats. Alors que le Droit du Travail n’attend du salarié que des moyens, puisqu’il n’est pas fournisseur au même titre que le commerçant, sous-traitant, etc.

- définir la liste exhaustive des livrables attendus de la prestation de service : cela peut-être de simples compte-rendus, l'important est d'expliciter l'engagement de la SSII envers le client.

- organiser une réunion de suivi régulière de la prestation, au minimum tous les 3 mois : en effet, le suivi de mission a pour objectif de reprendre la liste des livrables définis dans l'ordre de mission et d'en vérifier l'avancement. Par un tel suivi, on empêche la mission de dévier vers des tâches non prévues initialement.

- à chaque réunion de suivi, se demander si la SSII contribue d'une manière ou d'une autre à la prestation. Notamment, avez-vous des contacts avec des personnes pratiquant le même métier que vous, dans le même domaine. Avez-vous des échanges avec d'autres personnes de votre métier dans votre entreprise ?

Le métier d'informaticien peut être très gratifiant quand on est capable de mesurer le travail réellement effectué, la valeur réellement apportée au client.