Xtrem Programming

Xtrem Programming

Quelques notions..

  • Communication directe de vive voix.
  • feedback avec le client
  • simplicité. (pas focrément prévoir d’extention futur qui ne se feront jamais !!!)

en pratique

  • tout est basé sur l’implémentation des sécénarios utilisateurs du client
  • application fonctionnelle disponible le plus souvent possible pour faire des feed back
  • Tout programmer à 2 sur le même ordinateur !!
  • toute l’équipe doit connaitre l’entier du code
  • le minimum de documentation. L’accent est mis sur l’application fonctionnelle et simple. => commenter le code
  • réagir au changement plutôt que de suivre un plan
  • auto-organisation de l’équipe

Les problèmes à résoudre

En gros le problème de tout développement informatique c’est:

  • faire quelque chose qui correspond aux besoins du client.
  • mais le client ne sais pas exactement ce dont il a besoin
  • la communication entre le client et le programmeur n’est évidemment pas parfaite ce qui induit forcément des décalages de compréhension, entre ce que le client veux et ce que le programmeur comprend.

Donc les possibilités sont:

  • faire une application terriblement souple qui puisse gérer tout les cas possibles. Ce qui fait que même de manière parfois détournée le client arrivera toujours à faire ce qu’il veux.
  • faire une application qui fait juste ce que le client veux mais il faut que ses besoins soient très précis et connu du programmeur.

La première solution est assez idéale, mais terriblement longue à programmer et coûteuse.
La seconde solution est celle qui est la moins longue et coûteuse à développer, mais elle implique que le programmeur ai très bien compris les besoins du client, et que ceux-ci n’évoluent pas ! (ce qui souvent arrive… une idée en amenant une autre…)

La solution

L’ Xtrem programming propose une méthodologie qui prend en compte ces problèmes et qui tente de faire communiquer un maximum les gens de la manière la plus claire possible pour éviter les malentendus. De cette manière les développeurs vont comprendre au mieux les besoins du client et l’application réalisée sera la plus proche de l’application parfaite que l’on pourrait faire.

Les feedback fréquents permettent au client de savoir ce qu’il veut et de vérifier que ce qui se construit correspond à ses besoins.

L’Xtrem programming permet donc de réaliser des applications qui répondent de manière concrète et simple aux besoins actuels d’un client.

Cependant, ce ne sera peut être pas la meilleure des méthodes pour garantir qu’une application puisse correspondre à des besoins futurs !!!
… mais dans ce cas, le client reviendra vers le programmeur pour lui demander de nouvelles fonctionnalités !

Mon point de vue

Tout n’est pas manichéen, noir ou blanc. La solutions que je préconise est donc plutôt un mélange.
En effet, il est très important de communiquer un maximum, c’est ainsi que l’application va coller le plus possible aux besoins du client, mais il est églament possible de prévoir quelques évolutions possible pour ne pas être piégé plus tard en cas d’évolution futur.

Souvent le client ne voit pas tout de suite les évolutions futur qu’il pourrait intégrer, mais le développeur les voit!

26 Feb 2006 : 21:54

algorithme de promotion d’article similaire

Algorithme de promotion d’article

L’idée est de faire la promotion sur un article d’autres articles qui peuvent également intéresser le visiteur.

Il existe de nombreuses manières de faire de la promotion d’article, étudions un peu ce qu’il existe.

La nouveauté et la popularité

D’une manière générale, la plupart des gens s’intéressent à ce qui est nouveau et ce qui est populaire.

C’est exactement ce prinicpe que l’on retrouve sur la page d’accueil de facebook. Ce qui est populaire est mis en avant suivant les interactions qu’il y a eu autour d’un objet en particulier. Plus il y a de like, plus il y a de commentaire, plus l’objet sera mis en avant. (mais difficile de déceler quel est exactement l’algorithme utilisé.)

L’algorithme de PageRank de google est également une manière de mesurer la popularité d’un objet. Plus il y a de liens qui pointent sur un objet, plus cet objet sera populaire. Par effet de cascade, un site pointé par des site populaire sera plus populaire qu’un site pointée par le même nombre de site, mais moins populaire.

La nouveauté, c’est le principe qui est utilisé par tous les blog et les site avec des news. On place les articles par ordre chornologique inverse. Ainsi, il est possible de lire en premier les articles les plus récents.

Ce principe est également exploité par les flux atom et rss. Nous sommes notifié de la nouveauté.

Les articles similaires

La popularité d’un article est défnie par des interactions autour de l’objet. La nouveauté est effémère. Quel autre moyen utiliser quand on a peu d’interaction autour d’un objet ?

L’idée est d’utiliser la promotion d’article en proposant des articles similaires. Si un visiteur s’intéresse à un article, il va probablement aussi s’intéresser à un article similaire.

C’est l’idée qui est largement exploitée par le magasin en ligne Amazon.  Pour chaque article, le site propose d’autres articles. Le principe est simple. Ceux qui ont acheté cet article ont également acheté ceci….

Le fonctionnement de cet alogrithme redoutable de Amazon est fait à l’aide d’algorithmes item to item ou slope one.

On parle de l’approche par cosinus ou de similarité de Tanimoto, pour mesurer la similarité entre des vecteurs.

Le système de recommandation d’Amazon est le coeur du magasin. C’est ce qui assure qu’un client vu acheter un article reparte avec 3 articles !

Cet algorithme de similarité est basé sur des interactions des clients.

Quand on toujours que peu d’interaction comment faire pour évaluer la similarité ?

Implémentation d’un alogorithme de similarité basé sur le contenu

Il y a quelques idées qui sont données dans cet article.

Si l’on se base sur le contenu d’un article pour trouver les articles similaires, il y a un grande quantité de données à analyser et ce ne sont pas focrément des données pertinentes.

Une idées est d’utiliser un système de tag associé à un article. Là on sait déjà que les quelques tags utilisés sont pertinent.

L’idée de base toute simple est déjà d’afficher les tags liés à chaque article. En cliquant sur le tag, on obtient la liste des articles qui sont liés.

Le perfectionnement de ce principe est de calculer la similarité des tags associés à des articles pour construire une carte des articles similaires. La fonction php similar_text permet de calculer la similarité entre des chaines de caractères.

Sur le même principe, on peut utiliser le titre d’un document pour calculer les similarités entre les articles.

En pratique

En pratique, il faut fournir le plus de possibilités différentes pour naviguer dans des articles. Ces derniers temps sur facebook on remarque que c’est exactement cette politique qui est mise en place. Il y a toujours plus « d’objet similaires » ou potentiellement intéressants qui sont proposés. Il y a les photos de ses amis, il y les personnes que vous connaissez potentiellement.

Donc ici, le but est d’avoir plusieurs entrées:

  • les articles les plus populaires (il faut ajouter un compteur et un champ pour stocker la valeur)
  • les articles les plus récents
  • les articles les plus commentés (il faut ajouter un champ qui stock dans la table du document le nombre de commentaires)
  • articles les mieux notés. (il faut mettre en place un système de notation.. c’est assez partial… et lourd)
  • propositon des articles similaire par titre et par tags. A voir le plus pertinent
  • Les tags de chaque articles sont affichés pour permettre une lecture transersale.

Quelques essais

Après quelques essais. Il semble que l’algorithme basé sur les tags est plus pertinent que celui basé sur les titres. Bien qu’il y ait quelques exception.

Le titre est parfois trompeur. L’algorithme voit un similarité entre « geek barbu » et « barbare » … c’est pas top !

Mais pour tout ce qui commence par « recette… » ça fonctionne bien.

Pr contre l’algorithme de basé sur les tags est plus lent. Il a fallu 3 minutes de calcul pour afficher la liste des 5 articles les plus proche des 285 documents existants.

Il faut donc éviter de lancer le script trop souvent ! Mais en fait, tant qu’aucun tag n’a bougé, le classement ne change pas.

L’idée est donc de stocker la liste des articles similaires directement dans la table du document. Puis rafraichir le classement de temps en temps.