Archive for juillet, 2015

[good books] Quelques livres utiles (1/X)

C’est l’été, une période propice à la remise à niveau et à la découverte de nouveaux outils, de nouveaux langages.

C’est pour cela que je vous présente aujourd’hui quelques livres qui sont des basiques : avec eux vous pourrez apprendre à programmer, vous pourrez apprendre des nouveaux outils, mais si vous êtes déjà un expert, ce n’est pas forcément les livres que vous auriez choisi. A chaque fois, le titre du paragraphe est votre objectif, et je vous propose un livre adapté pour remplir cet objectif.

Je ne le cache pas : les liens vers Amazon sont des liens d’affiliation.

Vous voulez apprendre à programmer, dans un langage moderne
Si vous n’avez jamais fait de programmation un peu complexe (c’est-à-dire avec des traitements algorithmiques) et que vous voulez apprendre, python est sans doute le langage le plus adapté à votre objectif.
Python est en effet un langage doté d’une syntaxe simple, que l’on peut utiliser pour programmer de manière impérative, orientée objet ou fonctionnelle. Par ailleurs, en python pas besoin de se préoccuper de la gestion de la mémoire, des primitives de bas niveau et du typage, tout est réalisé automatiquement de ce point de vue. C’est un désavantage si vous visez les grosses performances en terme de calcul, mais pour apprendre ou pour beaucoup de tâches, c’est idéal.

Le livre que je vous conseille est « Apprendre à programmer avec Python 3 » de Gérard Swinnen.

Il ne faut pas s’y tromper : si vous savez déjà programmer en java, C ou autre, ce n’est pas le livre qu’il vous faut car celui ci part de la base de la base et va vous guider conjointement sur l’apprentissage de la programmation, et de python. C’est typiquement le livre que je conseille aux lycéens qui veulent apprendre à coder, et c’est aussi celui que je proposais à mes étudiants de première année d’info à la fac. Vous y apprendre les structures et fonctions de base, comment écrire des petits programmes, comment réaliser une interface graphique avec Tkinter, etc.

Le livre contient énormément d’exercices, ce qui vous permet de ne pas trop vous déprimer sur la route de l’apprentissage, qui est parfois laborieuse en matière de programmation.

Vous voulez manipuler vos données, les analyser et les visualiser
L’analyse de données c’est très mode, et d’ailleurs c’est une grande part de mon boulot, principalement « parce que ça marche« . Si vous êtes webmaster, e-commerçant, etc. vous avez probablement des quantités astronomiques de données (on parle de big data ;)) dont vous aimeriez bien faire quelque chose. Vous utilisez peut-être excel pour faire un peu de stats, voire même de la corrélation ou de la visualisation.

Il existe un outil totalement gratuit qui est conçu pour analyser et visualiser les données, il s’agit de R. Le livre « Statistiques avec R » par Pierre-André Cornillon, François Husson, Nicolas Jégou, Eric Matzner-Lober, Julie Josse, Arnaud Guyader, Laurent Rouvière et Maela Kloareg, est un livre d’introduction à R.

En matière de démarrage avec R, c’est mon livre favori. Tout d’abord parce qu’il est orienté pratique, et écrit par des praticiens (mais écrit de manière un peu abrupte, il faut bien le dire), mais aussi et surtout parce qu’il est bien construit. une première partie permet de se familiariser gentiment avec R tandis que la seconde partie est un manuel pratique : 20 fiches pour donner les clés de la résolution de 20 problème statistiques différents (savoir quelle est la correspondance entre outils statistiques et problèmes de la vrai vie n’est pas vraiment dans le scope de ce livre).

Rien que la première partie justifie l’achat du livre puisque vous y verrez : comment installer R, quels sont les types d’objets de base, qu’est ce qu’un package, comment faire de superbes représentations graphiques et enfin comment programmer dans R.

La deuxième est indispensable pour résoudre des problèmes standards (classification, segmentation, etc.).

Bref, un livre que j’affectionne particulièrement, mais pas forcément facile d’accès pour un public web standard.

Vous voulez comprendre réellement un concept de base du e-commerce moderne
Le dernier livre que je vous conseille est facile à lire et pas cher du tout, il s’agit de « La Longue Traîne : Quand vendre moins, c’est vendre plus » par Chris Anderson. Bien sûr vous allez tous me dire que vous savez parfaitement ce qu’est la longue traîne, et peut-être que c’est le cas, mais avez vous lu ce livre qui est à l’origine du concept ? Il est fort probable que non, surtout si vous êtes parmi les jeunes SEO/webmarketeurs, vu qu’il date de 2006.

Chris Anderson explique donc à quel point Internet à changer la donne en matière de commerce. Il élabore en détails son concept de longue traîne, avec une longue discussion qui tourne autour du marché de la musique (2006, 2006…). Le livre est agréable à lire, mais il est rédigé à « l’américaine » : les mêmes idées sont répétées à l’envie, alors que le bouquin aurait pu être 2 fois moins long, voire 3.

Voilà, vous avez maintenant de quoi vous occupez pour finir l’été, et si vous le souhaitez, les commentaires sont ouverts pour donner votre avis sur l’un ou l’autre de ses livres.

Augmenter sa productivité, mieux gérer son temps et son stress

C’est la période estivale, qui est bien plus calme que le reste de l’année pour le boulot, et qui me permet de réfléchir aux derniers mois (je ferais très prochainement un post de bilan de mon premier exercice, qui fini fin août) et à mes process de travail.

Comme mon petit blog n’est pas un blog qui a pour but de vous fourguer des ebooks sur la productivité et la gestion de son temps et de son argent, je vais me contenter d’un seul billet court sur ce sujet.

Voici donc mes basiques, forgés sur une expérience mixte : milieu académique et privé, grouillot de base puis mon propre patron, etc. Bien évidemment j’ai parfois grossi le trait pour me faire parfaitement comprendre.

 

L’importance de la routine

Une chose qui me parait très importante, c’est d’avoir une routine de travail. Il y a divers degrés de « routinisation », avec les vrais warriors qui vont avoir des horaires très stricts, tandis que d’autres comme moi n’aurons que des guides « comportementaux » assez lâches.

Pour continuer sur mon propre exemple, mes routines sont simples :

  • Pas plus d’une grosse tâche par jour. Je fais plein de listes, mais sur ces listes, jamais plus d’une tâche longue et pénible par jour. Pourquoi ? Parce qu’une fois qu’elle est finie je suis en mode « pas envie de bosser » et donc je peux faire du tout venant (factures, administratifs, mails) mais pas plus.
    C’est également pour cela que cette tâche longue et pénible est l’une des dernières de la journée. Ce dernier point est controversé : Brian Tracy (référence plus bas) donne exactement le conseil inverse, car cela permettrait de se bourrer le mou grâce au sentiment d’accomplissement à l’issue de la tâche. Si vous ne pouvez travailler que grâce à ce genre d’incitative, il est temps de changer de métier.
  • Pour les autres tâches, le tout est de les faire au moment le plus adapté selon son rythme personnel. Je commence toujours ma journée par filtrer mes mails en buvant mon café. Puis ensuite je réponds et assure le travail administratif.
    une fois que c’est fini, je fais mon travail de R&D : lecture de la littérature, réflexion, écriture des articles, etc. Sur la fin de la journée, je fais le travail pénible. Pour moi il s’agit généralement d’écrire les rapports et divers livrables (j’avoue, ce n’est pas ce que je préfère).
  • Je n’ai aucun horaires, ils sont pour moi une contrainte, j’ai choisi de m’en affranchir. En contrepartie, je n’ai pas d’horaires, et donc si il faut travailler jusqu’à 3h du matin pour finir un rapport et se lever à 6h pour partir le présenter, et bien c’est ainsi (j’ai une relieuse dans mes bureaux ^^).

 

Segmenter son travail

Sur ce point les avis diffèrent. Guillaume préfère je crois le monotasking alors que je suis plutôt pour le multitasking.

Si comme moi vous êtes pour le multitasking, je vous conseille de segmenter votre temps de travail, en accord avec votre capacité de concentration. Personnellement, pour du travail nécessitant de la réflexion je fais des séquences de 45 minutes, pour du travail plus simple je fais des séquences d’1h15 environ. Entre deux séquences je fais une pause de 5 à 15 minutes, je ne compte pas vraiment.

 

Se mettre des deadlines

Une pratique directement issue du milieu académique : la deadline qui tue vraiment. Chaque tâche doit avoir une deadline, et je vais vous dire un secret : je ne commence aucune tâche qui n’a pas de deadline associée (si vous êtes un de mes clients, vous avez forcément reçu un « et quelle est la deadline ? » 30 secondes après l’envoi de votre demande).

Quand la deadline est atteinte, on arrête de bosser et on livre, sauf cas de force majeure. Oui, on livre donc des choses moins abouties qu’espéré, mais c’est la vie.

Bien sûr, si votre client a un budget illimité et un temps infini, vous pouvez peut-être procéder autrement, ou pas.

 

Suffisamment bien versus parfait

voici l’exemple typique de discours à l’américaine, qu’on retrouve par exemple chez Steve Pavlina. Sur ce point particulier je suis 100% en phase avec lui. Au delà d’un certain stade il n’est pas intéressant de rajouter du temps de travail pour finaliser une tâche, car le delta de qualité obtenue n’est pas intéressant.

Il y a une explication à cela, c’est la théorie des rendements décroissants, mais vu qu’on est pas là pour faire un cours d’économie, je n’en dirais pas plus.

Retenez simplement qu’il faut se limiter sur les finitions, car ce n’est plus productif au delà d’un certain stade. Si vous appliquez la règle de la deadline, elle s’appliquera généralement avant d’arriver à celle-ci.

 

Se décider vite

Autre conseil de Steve Pavlina : il faut prendre rapidement les décisions. Il conseille même de ne pas consacrer plus de 60 secondes à la prise d’une décision.

Sur le timing on atteint le nawak, mais l’idée est là : l’incertitude est une source de stress très importante (pour moi c’est la pire) et on s’en libère en prenant les décisions, cqfd. Mon mantra est « la bonne décision, c’est celle qu’on prend », que je double, tel le sphinx, d’un « la peur n’évite pas le danger ».

 

Le seuil d’indifférence

Je ne sais plus où j’avais lu ce conseil que j’avais trouvé débile de prime abord, et que j’applique désormais : chacun a un seuil d’indifférence financier, qu’il faut utiliser.

Je m’explique : à un certain niveau de vie, il y a des sommes qui finissent par devenir indifférentes. Vous allez au bistrot, le café est à 1 euros, ou 1,1 euros ou 1,5 euros. Est-ce que votre comportement d’achat change ? probablement pas, ces trois sommes vous sont indifférentes, tout comme le seuil de 1,5 euros.

Pour éviter du stress inutile, trouvez votre seuil d’indifférence financier, et à chaque fois que vous aurez une dépense sous ce seuil, ne discutez pas, ne réfléchissez pas, car de toute façon, même si le prix baisse, vous n’en tirerez aucune joie, et donc votre seule alternative est entre « je m’en fous » et « je suis énervé », personnellement je préfère la première.

Le seuil n’est pas nécessairement le même selon qu’on parle des finances de votre entreprise ou des vôtres, mais dans tous les cas il existe (mais il est peut être très près de zéro)

 

Voilà, je vous ai donné mes supers conseils de productivité, maintenant vous pouvez troller autant que vous voulez dans les commentaires !

 

Références (oui, de l’affiliation amazon…)

Avalez le crapaud par Brian Tracy.
Steve Pavlina: The Unauthorized Biography par Thomas Baker.

[good book] Recherche d’information : applications, modèles et algorithmes

Les algorithmes utilisés par les moteurs de recherche sont pour moi, vous le savez déjà sans doute, à la fois une passion, un sujet de recherche et mon gagne-pain (par nos formations et parce que je bosse en partenariat avec le moteur Qwant).

Certaines des personnes qui me suivent veulent parfois en savoir plus, et pendant longtemps j’avais du mal à leur donner un conseil raisonnable, car la littérature accessible à un non spécialiste était rare voire inexistante. Mais depuis, j’ai trouvé par hasard un livre que je conseille à toutes et tous, même si bien sûr il est principalement accessible à des personnes familières de l’algorithmique.

Ce livre est le suivant (oui, il s’agit d’un lien d’affiliation amazon, oui je suis un vendu, oui si vous l’achetez via ce lien cela soutient mon blog) :

Le livre a été écrit par Massih-Reza Amini et Eric Gaussier, tous les deux sont professeurs à Grenoble 1, et effectuent leurs recherches dans le domaine de la recherche d’information. Il constitue pour moi un formidable support de cours pour des étudiants en dernière année de licence d’informatique, ou en première année de master.

On trouve dans ce livre toutes les bases permettant de réaliser un moteur de recherche ! On commence par les prétraitements, le modèle vectoriel avec la fameuse tf-idf, la notion d’index inversé, les index dynamiques, etc. On continue avec des choses plus complexes, comme les modèles probabilistes (BM25 par exemple) puis les modèles de langues. On apprend également comment qualifier les résultats d’un système de recherche d’information, ce qui est utile si on décide d’en coder un !

A partir du chapitre 4, le livre passe la seconde, avec le cas particulier de la recherche sur le web et des problématiques (de taille) associées. Il se poursuit avec un chapitre très intéressant sur la catégorisation des documents, qui vaut à lui seul le détour, avec un panorama qui va des méthodes simples (seuillage par exemple, ou information mutuelle/chi2) aux plus compliqués (SVM, perceptron, etc.).

Les chapitres 6 et 7 sont respectivement consacrés au clustering de documents, et à la recherche de thèmes latents. Ils sont intéressants, mais à mon sens un peu elliptiques, sur des sujets qui nécessitent un background algorithmique plus complexe. Le lecteur non familier devra donc travailler plus dur sur ces thématiques « avancées » et chercher des informations ailleurs.

Enfin, un très très court chapitre 8 donne quelques pistes vers des outils logiciels disponibles en ligne.

Globalement, il s’agit d’un livre indispensable si vous êtes intéressé par le développement des moteurs de recherche, que vous avez un background suffisant en algorithmique, et que vous êtes motivé.

N’hésitez pas à donner votre avis en commentaires, et bonne lecture/bon courage si vous vous lancez.