La crise économique en un article

J’ai enfin trouvé la manière ultime de comprendre la crise le plus rapidement et le plus simplement possible.

Quand je parle de crise, je parle avant tout de la crise économique mondiale, mais également des instabilités (doux euphémisme) que vit en ce moment le bassin méditerranéen et qui à mon avis ont les mêmes racines.

La crise économique, résumée en une page de graphiques, c’est ici.

La crise économique et l’incapacité de nos dirigeants à y répondre, c’est là.

[Edition 28/02/2011] Il suffit que j’ouvre ma grande bouche sur un sujet casse-gueule comme celui là pour que dès le lendemain je trouve un contre-avis intéressant. En gros les deux côtés sont d’accord sur les causes des crises (disparition de la classe moyenne), mais là où comme solution Reich propose une augmentation des taxes pour les plus riches et les corporations, Kevin Meyer répond que cela ne contribuera qu’à la fuite de cette population vers des havres financiers. Il n’a pas tord le bougre! Du coup je reste convaincu sur l’explication de la crise mais je bascule dans l’indécision quant à la solution au problème. Il n’y a que les imbéciles qui ne changent pas d’avis… 😉

Par ailleurs je rajoute le blog Evolving Excellence dans mon blogroll, il y a des choses vraiment intéressantes à lire là bas.

4 liens rapides pour la semaine (2011-09)

J’en aurais bien remis 8, mais je sais que certains n’ont pas encore eu le temps de digérer les 8 de la dernière fois 😉

  1. Via FlowingData, un bon guide pour faire du scraping de données, alias récupérer des données depuis le web et les nettoyer pour les mettre dans un format exploitable.
  2. Chris Dixon sur les business models à adopter en cas de ruée vers l’or.
  3. Scott Berkun qui nous a écrit la liste des choses à faire pour rendre fou son chef de projet.
  4. Et pour finir un article vraiment intéressant recommandé par Jason Fried, ça parle de l’économie actuelle et c’est quand même un petit peu déprimant…

__

<< Semaine PrécédenteSemaine Suivante >>

Dilbert du 15/01/2011

Le pire c’est quand on prend ça pour de l’empathie

Dilbert.com

Traduction approximative:

Boss: Comment ça se passe?

Dilbert: Ça ne pourrait pas être pire!

Dilbert: Je suis le seul à avoir dit que le projet était une mauvaise idée et pourtant c’est à moi que vous l’avez assigné.

Boss (pense): C’est encore plus drôle quand je le leur fais dire.

Recherche textuelle sur SQL Server, c’est dur!

Pour faire suite à l’article d’avant-hier, celui sur la déformation de notre vision du monde que cause les outils que l’on emploie, je voulais vous parler de la recherche textuelle sur la plateforme SQL Server. Désolé si certains sont déçus mais oui c’est un point technique 🙂

Alors pourquoi faire le lien entre cette problématique et la recherche textuelle ?

Dans une base de données on a une obsession : tout mettre dans des tables composées de lignes et des colonnes. Naturellement dans ce modèle l’unité de traitement minimale est la cellule, l’intersection d’une ligne et d’une colonne.

Très bien, mais que faire quand la cellule contient une entité unique, comme demandée par la modélisation, mais que cette entité se décompose de manière complexe ? Je pense par exemple à un descriptif produit ou un commentaire client. Comment exploiter une information humaine, un avis, une description, comprise dans une chaîne de caractère, avec des outils qui ne savent pas vraiment travailler à ce niveau de granularité ?

Et bien on fait comme on peut, mais en général ce n’est pas très joli !

Pour parler d’une situation précise, je monte actuellement une solution décisionnelle qui stocke et analyse pratiquement toutes les informations concernant le parc informatique d’un grand groupe. On pourrait penser que sur ce domaine fonctionnel on n’aurait pas de surprises dans les données: que du technique ou du numérique. Et bien détrompez-vous, remonter l’ensemble des applications installées sur les postes, sur un parc de 30’000 machines, dans 10 langues (vive l’Unicode), ça donne 3 millions de lignes à brasser par jour…

Pour vous donner un exemple : j’ai environ 1500 valeurs distinctes par jour d’applications qui contiennent le mot ‘Microsoft’, dont 500 qui contiennent le mot ‘Office’… Là dedans je dois retrouver les différentes éditions d’Office 2003 et 2007 pour faire le suivi du licensing.

Miam !

Le minimum qu’on puisse dire c’est que j’ai un problème de qualité de données. L’approche que je préfère sur ce genre de problème c’est d’utiliser les outils décisionnels pour instaurer un cycle d’amélioration des données (Tip 131):

  1. On récupère tout dans le datawarehouse avec un premier cycle d’import
  2. On flag ce qui n’est pas bon / pas encore revu
  3. On génère des rapports pour que les opérationnels puissent corriger les systèmes sources et / ou proposer des nouvelles règles d’alimentation
  4. On implémente les changements, puis retour à l’étape 1

Bien ! Le problème c’est que pour faire l’étape 2 il faut pouvoir interagir sur la donnée : est-ce que mon descriptif d’application contient ‘Office’ ? Enfin, est ce qu’il contient ‘%Office’, ‘Office%’, ‘% Office %’, ‘%Office%’… La différence ?

  • Office’ : le seul résultat qui passe c’est « Office »
  • %Office’ : « Office », « LibreOffice », « Microsoft Office »
  • Office%’ : « Office », « Office 2003 », « OfficeCracker »
  • % Office %’ : « Microsoft Office 2003», la subtilité est dans les espaces autour du mot
  • %Office%’ : toutes les possibilités

Presque facile pour Microsoft Office, mais pas pour Adobe et toutes les variations de flash, ni pour IBM, ni Mozilla, ni pour toutes les autres en fait…Et ‘0ffice’ ? ‘Offisse’ ? On peut les oublier pour des champs fournis par les éditeurs eux-même, mais pour une recherche dans des champs saisis à la main ?

Pour pouvoir traiter tous ces cas de figure on va utiliser des critères de recherche compliqués, conditionnels, qui impliquent des traitements unitaires multiples sur chacune des cellules les unes après les autres: les performances s’écroulent. En temps de réponse on passe de moins d’une seconde sur une table bien indexée à plusieurs minutes sur une recherche en ‘%…’. En fait c’est une particularité dans la manière qu’ont les bases de données relationnelles de stocker et traiter l’information qui force une lecture complète de la table à chaque fois.

On retrouve cette limite là dans tous nos outils :

Ça plus le fait qu’il faille créer toutes les règles de gestion une par une de manière exhaustive. Vivement que les IA viennent nous filer un coup de main !

Malheureusement pour le moment il n’existe pas de solution magique, une recherche textuelle étendue sur une base de données relationnelles classique aura forcément un coût important en performance et/ou un résultat foireux. La prochaine fois que vous verrez un site web équipé d’un moteur de recherche bancal, ne cherchez pas pourquoi… Et c’est là que le bas blesse: à force de galérer avec ce type d’opérations on ne les propose plus, on ne les implémente plus, et on en vient à penser qu’elles ne sont pas possibles.

Pourtant Google y arrive, et sur des volumes de données autrement plus important! C’est d’ailleurs pour ça que pour l’avenir j’ai espoir dans la prochaine génération de bases avec moteur de stockage en colonne / vertical. Va bien y avoir un génie quelque part qui va nous révolutionner les recherches textuelles là-dessus!

Business Objects 4.0 avec un 4 comme 2004…

Voilà un parfait exemple d’éditeur qui reste coincé dans les années 2000.

Pour prendre du recul:

  • Screenshots de la solution BI de SAP annoncée hier (23/02/2011).

Versus

  • Galerie de rapports Tableau. C’est du live, pas des captures d’écran hein.

Je vous laisse 2 minutes pour faire l’allez/retour…

C’est bon?

Choquant non?

Mais SAP, personne vous a prévenu qu’on était en 2011? Ça vous pose un problème de faire des jolies choses ou quoi? Que ce soit pour l’application, pour l’annonce ou pour le site web d’ailleurs…

Des lignes et des colonnes

Je me suis fait une drôle de réflexion ce matin en lisant cet article d’Alex Payne (un des premiers ingés de Twitter, maintenant CTO de BankSimple), et plus particulièrement ce paragraphe:

Even the most bureaucratic of technologies can’t be claimed to be un-opinionated or free from our values. The lowly SQL database, workhorse of dismal trades like accounting and business analytics, is theoretically “value-neutral” to the data it stores. Yet, in structuring data into rows and columns of particular standard types, a set of values emerges that dictates what information is and how it should be stored and queried.

Traduit grossièrement:

Même la plus basique des technologies est affectée par nos valeurs et nos opinions. La simple base de données SQL, moteur de basses besognes telles que la comptabilité ou l’analyse business, est en théorie neutre en valeur vis-à-vis des données qu’elle héberge. Pourtant, en structurant les données en lignes et en colonnes de types standardisés, un ensemble de valeurs apparaît et dicte ce qu’est l’information et comment elle doit être stockée et requêtée.

C’est tellement vrai!

Pour étudier un événement à travers un modèle relationnel, un modèle en étoile, on le force à prendre une forme qui ne lui est pas forcément naturelle. La question devient: quelle est la valeur de l’analyse si pour la réaliser il a fallut tordre les faits et les conformer à un modèle artificiel? On retourne ici en plein problème de « legibility » dont je parlais tantôt.

Alors évidemment, étant donné que la plupart des phénomènes que l’on doit modéliser dans l’entreprise sont artificiels, il est facile de les modéliser en utilisant un processus artificiel. Un flux comptable, un portefeuille financier, une masse salariale, une chaîne de production… ce sont des éléments inventés de toutes pièces par l’homme et qui donc se conforment facilement dans une base de données.

Mais quand on étudie des phénomènes plus libres comme des courants d’idées sur Internet, la manière dont les sociétés s’organisent et se désorganisent, la mode… les relations humaines en somme, et bien cette mécanique se grippe vite. C’est surement la raison pour laquelle la plupart les gros acteurs sur le web, les journalistes et bloggeurs data ou encore les chercheurs en sciences sociales, n’utilisent que très peu les bases de données SQL et préfèrent le NoSQL, BigData et les nouveaux outils de visualisation (R & co).

Il suffit de voir les résultats de leurs études sur FlowingData ou Information is Beautiful, et de considérer l’effort que cela prendrait de faire certaines de ces analyses sur une plateforme décisionnelle classique, quand c’est possible, pour bien prendre conscience du poids que nous impose le modèle relationnel.

C’est une état de fait tellement évident qu’on l’oublie trop souvent lorsque vient le moment de modéliser un nouveau système décisionnel. Or certaines activités de l’entreprise comportent des éléments à la limite du modélisable, des éléments pourtant cruciaux à la compréhension globale de l’activité. Je pense par exemple aux relations clients ou aux ressources humaines. Sur ces domaines il faut donc être particulièrement prudent, se souvenir de ces limitations, et prévenir les utilisateurs des limites de l’outil à analyser un phénomène qui par définition ne peut pas être modélisé correctement.