Catégories
Méthodes agiles

Perplexité, complexité, vélo­cité … une autre vue

J’ai lu « Perplexité, complexité, vélo­cité » sur le blog d’OCTO. L’ar­ticle est bien tourné et on sort complè­te­ment convaincu. Mon problème c’est que quelques heures après j’ai commencé à avoir des doutes et plus les jours avancent plus mes doutes se trans­forment en avis contraire. Je vous encou­rage à lire d’abord le billet d’OCTO, le mien n’aura de sens qu’en réponse.

À quoi sert la vélo­cité ?

À quoi sert la vélo­cité ?

1.     Esti­mer ce qui sera réalisé ou non dans le sprint

2.     Mesu­rer la produc­ti­vité de l’équipe

3.     Mesu­rer le réalisé pour le projet, le produit

Ma diver­gence avec l’ar­ticle source vient d’un constat simple : Nous n’uti­li­sons pas cet indi­ca­teur dans le même objec­tif. Lui l’uti­lise pour mesu­rer la produc­ti­vité, moi pour amélio­rer les esti­ma­tions.

Amélio­rer les esti­ma­tions

Amélio­rer les esti­ma­tions c’est faire en sorte de mieux évaluer ce qui sera livré dans chaque sprint et aider à la prio­ri­sa­tion. Bref, gérer le projet.

Pour amélio­rer nos esti­ma­tions on tente de se baser sur les tâches simi­laires précé­dentes et on en réuti­lise l’es­ti­ma­tion sans tenir compte de la produc­ti­vité de l’équipe. On utilise pour cela une unité virtuelle qui nous détache des jours/hommes : le point. Réali­ser une esti­ma­tion ainsi est de plus en plus simple, rapide et fiable.

Pour prendre en compte les évolu­tions de produc­ti­vité (équipe plus effi­cace ou dette tech­nique gran­dis­sante) c’est le nombre de points réali­sable dans un sprint qu’on fait varier. Afin de ne pas sortir le dé pour évaluer ce nombre de points, on se base sur ce qui a été réalisé dans les quelques sprints passés et on tente de rester sur une courbe la plus stable possible.

Nos réfé­rences d’es­ti­ma­tion sont stables, nos esti­ma­tions se fiabi­lisent avec le temps. Le nombre magique de points qu’on peut mettre dans un sprint, c’est pour moi ce qu’est la vélo­cité de l’équipe.

En prenant en compte la tech­nique

Si on calcule en points et pas en heures ou en jours, ce n’est pas parce qu’on compte en complexité fonc­tionne, c’est pour s’au­to­ri­ser à faire varier la somme totale plutôt que chaque esti­ma­tion.

Il ne faut pas perdre de vue que notre objec­tif reste bien d’éva­luer une charge de déve­lop­pe­ment. Il faut donc tenir compte dans nos esti­ma­tions de tout ce qui est néces­saire à évaluer le temps de déve­lop­pe­ment et livrer la fonc­tion­na­lité : Ça va des besoins fonc­tion­nels à la complexité tech­nique en passant par les contraintes orga­ni­sa­tion­nelles spéci­fiques.

Si je ne prends en compte que la complexité fonc­tion­nelle, l’es­ti­ma­tion n’aura plus aucun lien avec le temps de déve­lop­pe­ment. Pour savoir ce qui tient ou pas dans le sprint, on en vien­dra à faire une esti­ma­tion globale, au jugé, sans réfé­rences simi­laires : tout l’in­verse de l’objec­tif.

Outil privé versus indi­ca­teur public

À mon humble avis l’er­reur de l’ar­ticle n’est pas seule­ment de faire de la vélo­cité une mesure de produc­ti­vité, c’est en plus de l’avoir commu­niquée à l’ex­té­rieur de l’équipe.

Du coup, forcé­ment, la vélo­cité devient un enjeu poli­tique. L’équipe, son mana­ger, son coach commencent à avoir inté­rêt à amélio­rer l’in­di­ca­teur au lieu de se concen­trer sur ce qui devrait être leur seul objec­tif : appor­ter de la valeur au produit.

Que la vélo­cité augmente, dimi­nue, c’est quelque chose propre à l’équipe. S’il faut un indi­ca­teur de produc­ti­vité et de pertur­ba­tion, il faut publier la seule chose impor­tante : la progres­sion de la valeur du produit (si ça ressemble au para­graphe précé­dent, ce n’est pas une coïn­ci­dence).

Cette vélo­cité doit être prise pour ce qu’elle est : un outil d’es­ti­ma­tion, de plani­fi­ca­tion et de prio­ri­sa­tion. Comme tous les outils, il a voca­tion à être utilisé en interne, par l’équipe, et nulle part ailleurs.

Et la complexité fonc­tion­nelle ?

Mon second problème est là : Selon moi la complexité fonc­tion­nelle n’in­dique rien de valable. Ce n’est pas une mesure de ce que coûte la fonc­tion­na­lité, ce n’est pas une mesure de ce qu’ap­porte la fonc­tion­na­lité, et inci­dem­ment ce n’est pas une mesure de l’im­pli­ca­tion ou de la produc­ti­vité de l’équipe.

Tout au plus la complexité fonc­tion­nelle permet de faire une première esti­ma­tion des histoires utili­sa­teurs qui ne sont pas prévues pour tout de suite ou dont on ne connaît pas la complexité tech­nique.

Catégories
Développement web

Réso­lu­tions d’écran – mai 2011

Petite statis­tiques abso­lu­ment pas repré­sen­ta­tive mais inté­res­sante quand même : les réso­lu­tions d’écran des gens qui sont passés sur ce site du 1 au 12 mai 2011.

Petite inter­pré­ta­tion perso :

  • J’ai moins de 10% de visites de mobile (réso­lu­tion infé­rieure à 1024px)
  • Je dois avoir envi­ron 3% de netbook et tablettes (réso­lu­tion de 1024px mais pas plus)
  • Les desk­top supportent tous ou presque au moins 1280px (87% de support, mobiles inclus)
  • Les mobiles sont tous diffé­rents et il est diffi­cile d’ac­ter d’une réso­lu­tion mini­male stan­dard sauf à la prendre vrai­ment très petite

Avec comme consé­quence sur le design, si on doit faire plusieurs versions:

  • Une version mini­male à 240 ou 280px, quitte à ce qu’elle soit très dégra­dée
  • Une version à 800 (android récent en paysage), qui servira aussi pour les iphone avec une meilleure réso­lu­tion, les tablettes et les netbooks
  • Une version desk­top à 1280, qui sera la version « stan­dard »
  • Une à 1400 ou 1600 pour récu­pé­rer les écrans larges
  • Et si je suis bien luné une version à 1900 parce que ça concerne quand même encore un quart des visites

Atten­tion, ces chiffres ne prétendent pas être repré­sen­ta­tifs de quoi que ce soit, et ne repré­sentent que des réso­lu­tions d’écran, pas des tailles de fenêtre, ce qui est nette­ment diffé­rent.

Catégories
Développement web

JSON c’est hype

J’en ai marre de voir du JSON partout. J’ai même vu des gens propo­ser de rempla­cer du XML par du JSON juste parce que c’est plus moderne, plus léger et plus compa­tible. « JSON is the new XML » est un effet de mode, un mauvais effet de mode. On va se retrou­ver comme avant avec des gens qui vont se réveiller dans quelques mois/années avec des formats de données pas du tout adap­tés à leur usage.

Coupons un peu dans le tas :

JSON n’est pas vrai­ment plus simple à lire par un humain

Pour un petit fichier en volume comme en hiérar­chie, le JSON a un léger avan­tage sur le XML mais ce n’est pas fran­che­ment signi­fi­ca­tif.

Pour un gros fichier ou avec beau­coup de hiérar­chie, le JSON devient complè­te­ment illi­sible à suivre au niveau des imbri­ca­tions.

JSON n’est pas plus simple à écrire par un humain

JSON est un peu moins verbeux mais plus propice aux erreurs : facile d’ou­blier une virgule en fin de ligne, ou d’en mettre une par erreur à la dernière ligne. Sur les gros fichiers les niveaux d’im­bri­ca­tion seront eux aussi un écueil à l’écri­ture.

En compa­rai­son la verbo­sité d’XML rend diffi­cile les erreurs et le dispo­ni­bi­lité de fichiers gram­maire permettent de faire de l’aide à la saisie voire de vali­der en tems réel le contenu.

La diffé­rence de poids n’est pas signi­fi­ca­tive

JSON est plus léger que le XML d’en­vi­ron un tiers (pour des fichiers forte­ment struc­tu­rés, beau­coup moins pour les autres). À moins de 1,5 Ko une fois compressé en gzip (donc 6 Ko non compressé) ça tient dans un paquet TCP/IP et 500 octets de moins ne changent stric­te­ment rien. Sur disque on compte de toutes façons au moins par paquets de 4K.

Pour faire une diffé­rence signi­fi­ca­tive de 10 Ko sur le réseau il faut une donnée de 160 Ko avant compres­sion. Ça concerne d’au­tant moins de monde qu’à ce volume le JSON n’est plus du tout lisible.

JSON n’est pas plus natif que XML

XML est natif sur tous les outils, langages et navi­ga­teurs depuis des années là où JSON n’a d’API native que sur les navi­ga­teurs récents, certains langages et quelques outils.

JSON est en fait natif en javas­cript via eval(), mais ça n’est pas plus perfor­mant. Pour une même donnée, lire du XML via DOM est 30% plus rapide que lire du JSON avec eval(). Pour avoir sécu­rité et fiabi­lité en lecture, ou pour faire de l’écri­ture JSON, il faudra une biblo­thèque pas native du tout sur IE7 ou Safari pour iPhone 3.2. Elle fera au moins 5 Ko et ne sera donc renta­bi­li­sée par rapport au XML natif que si on trans­fert au moins 15 Ko de JSON.

JSON n’est pas vrai­ment exten­sible ou évolu­tif

JSON permet souvent d’ajou­ter de nouvelles clefs sans modi­fier casser la compa­ti­bi­lité. Si on souhaite ajou­ter une date de mise à jour à une liste de chaînes de carac­tères, il faudra toute­fois modi­fier le format, mettre à jour tous les outils concer­nés. Si on souhaite mixer des formats diffé­rents là ça devient vite un casse-tête et des solu­tions bidouille.

En XML on a la possi­bi­lité d’in­sé­rer des méta-données dans des attri­buts, ainsi que de mixer diffé­rents concepts ou formats à l’aide d’es­paces de noms. Ce sont des fonc­tion­na­li­tés qui ont leurs limites, mais qui ont prouvé appor­ter un peu de souplesse et d’évo­lu­ti­vité aux formats créés.

Compa­tible avec l’exis­tant

Outre le concept de « natif », beau­coup d’ou­tils, d’ap­pli­ca­tions, de progi­ciels ou de chaînes de trai­te­ment sont adap­tés à l’ex­ploi­ta­tion ou à l’ex­por­ta­tion de données XML. Côté JSON les plus récents savent faire de l’ex­port, tout le reste est à trai­ter en spéci­fique.

Sur l’exis­tant XML j’ai des concepts de signa­ture, des mapping XML-Objet en Java, des outils qui font du filtre ou du routage, de la vali­da­tion, des compo­si­tions entre données XML.. tout ça n’existe simple­ment pas en JSON. Quand (si) j’en aurai besoin, il faudra réin­ven­ter la roue.

Hype, mode et trucs de jeunes déve­lop­peurs inno­vants

JSON était simple au départ parce qu’on utili­sait eval(), que ça renvoyait immé­dia­te­ment sur un objet javas­cript sans deman­der au déve­lop­peur client de faire des mani­pu­la­tions complexes ou de char­ger une biblio­thèque de plus. Ça a permis d’ou­vrir quelques API à des gens qui auraient eu du mal autre­ment. C’est indé­nia­ble­ment posi­tif sur ce point là.

Ensuite s’est rendu compte que pour la fiabi­lité et la sécu­rité il fallait du code en plus. Faire des petites fonc­tions qui lisent du XML simple pour créer des objets javas­cript natifs aurait été plus simple, plus perfor­mant et moins lourd mais c’était trop tard : c’était « hype ». Du coup on a utilisé des biblio­thèques d’ana­lyse de 10 Ko de pur javas­cript pour lire des JSON de moins de 1 Ko et annon­cer que ces derniers étaient moins lourds que le XML corres­pon­dant. Allez comprendre.

Depuis on a des fonc­tions natives dans les navi­ga­teurs récents et un peu plus de support dans les outils récents (c’est la mode, il a bien fallu faire avec et suppor­ter le nouvel usage) donc ça a du sens pour quelques usages (échange de petites données struc­tu­rées avec un navi­ga­teur récent) mais la mode prend encore trop le pas sur des grilles de compa­rai­son argu­men­tées et factuelles et même dans les usages les plus adap­tés, le béné­fice sur le XML est rare­ment très signi­fi­ca­tif.

Catégories
Réseaux et Internet

Ce que j’at­tends comme chan­ge­ment dans les offres mobiles

Ça buzz en ce moment sur des « révo­lu­tions » dans les offres mobiles. On parle d’illi­mité acces­sible, dans les 40 € par mois. Il faut dire que quand on regarde chez certains de nos voisins on a l’im­pres­sion de payer la minute de commu­ni­ca­tion à prix d’or. Mais en même temps je ne connais personne qui télé­phone en illi­mité. Un gros forfait pas cher, voilà simple­ment ce qui arrive.

J’at­tends de voir l’offre pour juger mais entre temps voilà ce qui selon moi consti­tue­rait une réelle révo­lu­tion dans le milieu :

J’achète un forfait, pas un mobile

Ne plus inté­grer le prix d’un nouvel appa­reil dans les forfaits télé­pho­niques. Cela n’em­pêche pas l’opé­ra­teur de propo­ser d’ai­der au finan­ce­ment d’un nouveau mobile en en lissant le prix sur une année, mais en tant qu’op­tion, clai­re­ment distincte du forfait.

Je m’en­gage sur un à trois mois seule­ment

Le second effet Kiss-Cool de la sépa­ra­tion du forfait et du mobile c’est que du coup il n’y a plus de justi­fi­ca­tion à deman­der un enga­ge­ment de plus de 3 mois. Fini le boulet au pied pendant un à deux ans, main­te­nant je veux pouvoir partir quand je veux.

J’uti­lise mon accès comme je le veux

Je paye un forfait avec de la voix, des données. Je veux pouvoir utili­ser cette voix et ces données comme je le souhaite : sur mon télé­phone, sur une tablette, ou même via un micro-ordi­na­teur. Je ne veux pas de bridage de débit, de bridage de port. Je ne veux pas une factu­ra­tion hors forfait pour un usage en mode modem.

À dire vrai je n’ai pas toujours été de ce dernier avis mais ce mode de factu­ra­tion est jugé illé­gi­time et anor­mal par tous les clients visés. Il doit être changé en consé­quence.

J’ai un télé­phone non bidouillé

Enfin, pour ceux qui utilisent des smart­phones, je veux un télé­phone non bidouillé, sans surcouche opéra­teur, sans person­na­li­sa­tion, sans logi­ciel en version démo. Si l’opé­ra­teur veut four­nir des appli­ca­tions, des thèmes, des fonds d’écrans, qu’il le fasse, mais par les canaux prévus pour, pas via des surcharges non désins­tal­lables qui en plus empêchent d’ins­tal­ler les mises à jour du construc­teur.

Voilà ma révo­lu­tion mobile, le prix dans tout ça c’est juste une variable, qui finira toute seule par descendre quand les utili­sa­teurs auront plus de liberté et plus de clarté sur ce qu’ils achètent.

Catégories
Réseaux et Internet

La factu­ra­tion est une science complexe

Choi­sir comment factu­rer un service est une chose complexe et vous avez inté­rêt à y réflé­chir deux fois. Trois ou quatre serait même une bonne idée.

Au restau­rant on paye le plat

Imagi­nons que vous lanciez un restau­rant. Vous pouvez faire comme tout le monde et factu­rer les mets à la carte. Pour­tant ce qui vous coûte cher c’est aussi le restau­rant lui-même, le service et le couvert. En factu­rant au plat vous répar­tis­sez tous ces coûts annexes sur chaque plat. C’est ce qui fait qu’un simple plat semble toujours couter cher quand il est pris indé­pen­dam­ment.

Pour peu que votre cuisine soit une réus­site c’est la place qui devien­dra votre ressource la plus limi­tée. Le couple de jeunes qui prend juste une salade et fait des mamours pendant long­temps devien­dra votre bête noire. S’ils partagent une salade ou un dessert, c’est la misère : Vous écono­mi­sez le coût de quelques feuilles de salade mais en échange vous n’en factu­rez qu’une et ils bloque­ront la table en vous empê­chant de faire un second ou un troi­sième service avec des gens qui pren­dront deux bons gros plats.

Il faut dire que c’est un peu de votre faute : En répar­tis­sant les coûts ainsi ceux qui prennent entrée – plat – dessert payent une partie des coûts annexes de ceux qui ne prennent qu’une salade. Vous deve­nez attrac­tif pour ce qui est votre pire clien­tèle et peu inté­res­sant pour ceux qui vous rapportent le plus. Pas très malin.

Sur Inter­net on paye l’ac­cès au réseau interne

Cette problé­ma­tique se retrouve bien évidem­ment dans notre petit monde de Inter­net :

Votre four­nis­seur d’ac­cès Inter­net paye deux choses : Un coût à peu près fixe pour vous connec­ter à son réseau, et un coût dépen­dant des usages (ou de leur augmen­ta­tion) pour connec­ter son propre réseau à tous les sites que vous visi­tez.

Nos FAI français ont choi­sit le modèle inverse des restau­ra­teurs français : Ils proposent des forfaits, faisant donc payer prin­ci­pa­le­ment l’ac­cès à leur réseau interne. Les autres coûts sont réin­té­grés sur ce forfait en faisant une moyenne des usages prévus.

Comme un gros utili­sa­teur conti­nue à coûter plus cher qu’un autre, on entre dans la quatrième dimen­sion : Votre FAI a donc inté­rêt à ce que vous utili­siez le moins possible ce pour quoi vous faites appel à lui : accé­der à Inter­net.

Le modèle de factu­ra­tion va à l’en­contre des inté­rêts du four­nis­seur de service. Il n’est perti­nent que pour des raisons marke­ting.

La stra­té­gie du pour­ris­se­ment

Le résul­tat premier c’est que forcé­ment les FAI sont plus inté­res­sés à offrir des services addi­tion­nels (TV, VOD, lecteurs bluray et autres bonus liés aux « box ») qu’à corri­ger vos problèmes d’ac­cès ou vous offrir de bons accès Inter­net. Regar­dez la commu­ni­ca­tion : On vous parle plus de télé­phone, télé­vi­sion, et box que d’ac­cès Inter­net. Vous savez désor­mais pourquoi. Si vous cher­chez une expli­ca­tion à une majo­rité de vos problèmes ou de leur non réso­lu­tion, vous l’avez aussi main­te­nant. Ce n’est pas qu’ils ne s’en (pré)occupent pas, c’est juste que leurs prio­ri­tés sont ailleurs.

Le résul­tat second c’est que nos FAI qui doivent quand même faire face aux usages gran­dis­sants. L’en­nemi appa­raît vite : Les éditeurs de site web ont un modèle écono­mique opposé à celui des FAI. Ces méchants éditeurs ont inté­rêt et encou­rage à utili­ser de plus en plus le réseau (et ça ce n’est pas bon pour nos FAI qui facturent au forfait). Il faut les faire payer, soit par une taxe (ça parle à quelqu’un la « taxe Google » ?) soit par la force dans les quelques projets que les deux ont en commun (héber­ge­ment des serveurs de cache, liens de peering, etc.)

Au lieu de parte­na­riats gagnants-gagnants, le modèle de nos FAI impose de gérer une rela­tion d’en­ne­mis avec les éditeurs et de faire de l’uti­li­sa­teur la cinquième roue du carrosse.  Main­te­nant vous pouvez relire le billet de Korben, ou vous souve­nir des fameuses « QoS » mises en place sur certains ports par vos FAI.  Si bien entendu la situa­tion est plus complexe et plus complète que ce que vous avez lu ici ou chez lui, cela vous donne déjà une bonne base d’ana­lyse.

Factu­rer au volume

Note: Je vois que les commen­taires se fixent sur cette section. Je voulais poser un problème, je me suis aven­turé un peu sur une solu­tion. Peut-être n’au­rais-je pas du le faire avant d’avoir une réflexion plus complète, peut être aurais-je du faire un billet dédié séparé. Je ne sais pas. Ne vous foca­li­sez pas sur la ques­tion de la factu­ra­tion au volume. Le coeur de mon propos est plus d’ex­pliquer le problème, pas d’af­fir­mer avoir « la » solu­tion. Gardez-le juste à l’es­prit dans vos réac­tions.

Côté Inter­net on dépeint une factu­ra­tion au volume consommé comme la pire des évolu­tions possibles. Pour­tant cela résou­drait pas mal de problé­ma­tiques :

  • Les éditeurs de sites web seraient désor­mais des parte­naires, puisqu’ils encou­ragent l’usage du service
  • Les éditeurs auraient une pres­sion des utili­sa­teurs pour ne pas encom­brer inuti­le­ment le réseau, puisque cela leur coute­rait plus cher
  • On peut propo­ser un accès mini­mal peu cher car les petits utili­sa­teurs ne payent pas pour les gros
  • Les offres de contenu légales devien­draient de fait (un peu) plus atti­rantes vu que le télé­char­ge­ment Inter­net ne serait plus gratuit
  • On favo­ri­se­rait enfin l’émer­gence de plate­formes décen­tra­li­sées (les services locaux au FAI ou au pays coûtent peu par rapport aux sites distants)

Bien entendu si certains finissent par payer moins cher, d’autres paie­ront plus cher mais n’est-ce pas légi­time au final ?

Les craintes viennent d’an­ciens modèles écono­miques qui fonc­tion­naient au quota, avec éven­tuel­le­ment une factu­ra­tion du hors forfait à des tarifs dispro­por­tion­nés, mais ce n’est pas du tout un passage obligé. Ce que change la factu­ra­tion au volume c’est la façon de factu­rer, pas forcé­ment le montant de la facture moyenne.

De toutes façons on y vien­dra. Malgré la mauvaise volonté de nos FAI les usages augmentent régu­liè­re­ment. Il y a un moment où le diffé­ren­tiel entre les petits usagers et les gros ne sera plus tenable. Plus tôt on y passera plus tôt on aura enfin un réseau que tout le monde aura inté­rêt à gérer et à amélio­rer au lieu de traî­ner les pieds.

Réflé­chir à sa factu­ra­tion

Ces ques­tions ne sont pas retreintes aux restau­rants et aux four­nis­seurs d’ac­cès Inter­net. Si l’ac­tua­lité est un bon prétexte pour abor­der le sujet, c’est à propos de plusieurs projets en élabo­ra­tion que j’ai eu cette discus­sion récem­ment :

Faites atten­tion à ce que vous factu­rez. Votre factu­ra­tion doit inci­ter vos clients et vos parte­naires à augmen­ter leur usage de vos services et établir une évolu­tion gagnant-gagnant.

Deux signes néga­tifs qui ne trompent pas :

  • Si vous aviez un bouton magique qui amélio­re­rait votre service, vous n’au­riez pas inté­rêt à appuyer dessus
  • Vous atti­rez prin­ci­pa­le­ment les clients qui vous inté­ressent le moins, et inver­se­ment.

Les restau­rants n’ont qu’un seul de ces signes néga­tifs. Les FAI français cumulent malheu­reu­se­ment les deux et ça finira forcé­ment par écla­ter.

Catégories
Développement web

Sud Web : La confé­rence des métiers du web dans le sud

Nous avons monté Paris Web il y a main­te­nant quelques années pour parler du web, de ses métiers, de retours d’ex­pé­riences de profes­sion­nels sur la qualité, l’ac­ces­si­bi­lité et la publi­ca­tion sur le réseau. Depuis lors on nous a demandé « et pour les gens du sud alors ? ».

Cette année quelques uns ont pris leur courage à deux mains pour créer Sud Web, un événe­ment avec une des meilleurs tagline qu’on puisse imagi­ner : savoir-faire et faire-savoir. Avec le soutien de parte­naires locaux comme la recom­man­da­tion de noms pres­ti­gieux comme le W3C, le programme qui s’an­nonce peut mettre au défi une grande majo­rité des événe­ments web français du domaine.

Si c’est incon­tour­nable pour les passion­nés et les amou­reux du web, c’est aussi une étape de forma­tion conti­nue et d’ex­plo­ra­tion de l’état de l’art avec un recul que vous ne pour­rez pas compen­ser par quelques lectures en ligne ou par une session de forma­tion entre quatre murs.

Tout ça c’est à Nîmes, fin mai, le 27 exac­te­ment. Pour ceux qui veulent renta­bi­li­ser leur dépla­ce­ment c’est précédé le 26 par une jour­née centrée autour de l’ex­pé­rience utili­sa­teur : Web UX. Alors ce n’est pas à Paris, mais entre le soleil et l’hé­ber­ge­ment moins coûteux qu’à la capi­tale, on s’y retrouve rapi­de­ment ; et puis ça vaut large­ment le billet de train, tout simple­ment.

Il reste des places, prenez votre courage à deux mains et jouez des pieds pour bouger votre employeur afin de vous inscrire.

Catégories
Performance des sites web

Ce qui me fait aban­don­ner vos pages

Je suis un bouli­mique du web, je ne consomme pas que ça mais j’en consomme énor­mé­ment.  Poli­tique, tech­nique, travail, diver­tis­se­ment : tous les sujets y passent.

Je me plains régu­liè­re­ment que certains n’ont rien compris au web et me font fuir. Ça reste souvent instan­tané, je m’en vais, je râle, et j’ou­blie. Afin que ça serve, à moi-même ou à d’autres, voilà quelques unes des diffi­cul­tés régu­lières qui font que je fuis immé­dia­te­ment certains sites :

Contenu vidéo

Si le contenu est en vidéo ou en audio, sans trans­crip­tion, je suis inca­pable de le scan­ner rapi­de­ment pour savoir s’il m’in­té­resse vrai­ment, et quand bien même il m’in­té­resse il a toute les chances de me deman­der bien plus de temps qu’un contenu texte (et le temps est ma ressource la plus chère). Même quand je suis convaincu d’être inté­ressé au point d’avoir envie d’y passer du temps, je ne suis pas toujours en contexte où je peux lire une vidéo (bande passante dispo­nible en mobile) ou où je peux l’écou­ter (pas de son au boulot). Au final soit je quitte soit je stocke le lien pour plus tard et je n’y reviens fina­le­ment pas.

Redi­rec­tion vers la page d’ac­cueil du site mobile

Je pense à LCI mais pas unique­ment à eux. Si je suis un lien d’ar­ticle à partir de mon télé­phone mobile je suis redi­rigé vers la page d’ac­cueil du site mobile. Impos­sible de retrou­ver l’ar­ticle souhaité et de suivre les liens : c’est un départ immé­diat. C’est plus rare mais l’ex­pé­rience inverse est aussi problé­ma­tique. Au final vous avez une chance sur deux de mal tomber et que le lien parte immé­dia­te­ment à la poubelle.

Un article en plusieurs sous-pages

Je ne suis pas sur le web pour mimer les contraintes que j’ai sur papier. Je ne suis pas sur le web pour m’amu­ser à tour­ner les pages. C’est agaçant, j’ai réel­le­ment fuit des sites pour ça. Lais­sez-moi utili­ser l’as­cen­seur de mon navi­ga­teur.

Un site vrai­ment lent

Ceux qui me connaissent doivent s’y attendre, pour­tant c’est à dessein que je ne le mets pas dans les premiers critères : Si vos pages sont lentes, je risque bel et bien de repar­tir agacé avant même d’avoir eu l’oc­ca­sion de lire quoi que ce soit. Sur télé­phone portable, même dans le métro avec une mauvaise récep­tion, il est hors de ques­tion d’at­tendre plus de 10 secondes. Sur un poste bureau­tique ne me faites pas attendre la moitié de ça.

La grosse pop-in

Si votre contenu commence par être masqué par un gros pop-in, je ne passe­rai jamais à la suite, c’est aban­don immé­diat. Je me fiche que ce soit de la publi­cité, un formu­laire de feed­back ou un message de bien­ve­nue. En fait les deux derniers cas sont presque ceux qui m’agacent le plus de part leur imbé­cil­lité. Je ne ferme­rai pas la pop-in, je parti­rai. C’est encore plus vrai sur mobile où réus­sir à fermer le pop-in est souvent mission impos­sible de toutes façons.

Des lignes trop longues

Si vos lignes font plus d’une quin­zaine de mots, elles devien­dront rapi­de­ment pénibles à lire pour moi. Pire, j’au­rai beau­coup de mal à scan­ner la page rapi­de­ment en diago­nale.  Si ça semble futile comme critère, je vous assure que c’est un aban­don systé­ma­tique pour tous les sites qui ont des lignes trop longues. Si vous voulez une mesure, comp­tez une longueur maxi­mum de 45 fois la taille de votre police de carac­tères. Sur mobile c’est encore pire, si votre mise en page m’em­pêche de zoomer sur le texte de façon à ce qu’il tienne dans la largeur de mon télé­phone portable quand je double clique dessus, ça sera telle­ment pénible à lire que je n’es­saie­rai même pas.

Ça bouge partout

Vous tenez à la publi­cité et je le comprends, mais si ça bouge, si ça flash, si ça clignote, vous me verrez partir immé­dia­te­ment. Je serai simple­ment inca­pable de fixer mes yeux au bon endroit sans que ce ne soit pénible. Mon œil peut se lais­ser atti­rer hors du contenu une fois, mais la seconde fois je ferme la page. Notez que ça vaut aussi si c’est votre propre contenu promo­tion­nel ou carrou­sel qui attire l’œil et non de la publi­cité. Je ne fais pas de diffé­rence à ce stade là.

On mélange tout

Vous avez des publi­ci­tés ou des pavés promo­tion­nels au milieu du contenu, je sais, ça encou­rage les clics. Mais je sais aussi que ça me fera fuir immé­dia­te­ment là aussi. C’est encore plus vrai si j’ai un doute sur la sépa­ra­tion entre promo­tion­nel et rédac­tion­nel. Encore une fois, si je ne suis pas capable de filtrer et repé­rer l’in­for­ma­tion utile au premier coup d’œil, je repars immé­dia­te­ment. Même sans publi­cité, le trop plein d’illus­tra­tions hors contexte (même avec des légendes humo­ris­tiques ou sarcas­tiques) donne le même effet.

Texte rikiki

Votre graphiste vous l’a montré, la maquette est quand même bien plus jolie quand c’est écrit petit … sauf que c’est illi­sible, et ça aussi c’est un bloqueur pour moi. Non, 10 pixels de hauteur pour une police ce n’est pas suffi­sant pour moi. Notez qu’à l’in­verse je ne me souviens pas avoir jamais aban­donné un site parce que le texte était trop gros.

Et si je lis ?

Si vous avez passé le texte jusque là, bravo, il y a des chances que je lise votre contenu. Un autre jour je vous explique­rai ce qui peut faire qu’a­près la première lecture je ne revienne jamais chez vous.

Allez, pour la forme j’ajoute ce qui d’après la légende est gênant mais qui pour ma part ne m’a jamais freiné (ou en tout cas pas consciem­ment) : les textes trop longs, le manque d’illus­tra­tion, le trop plein de liens, le tutoie­ment ou le vouvoie­ment, la prise d’opi­nion subjec­tive, les propos « indé­cents », ou les sites person­nels sans répu­ta­tion. Rien de tout ça ne me gêne a priori.

Catégories
Sécurité informatique

Authen­ti­fi­ca­tion forte

Une authen­ti­fi­ca­tion par mot de passe sur le web est vite problé­ma­tique. Avec la multi­pli­ca­tion des sites web, chacun avec son compte, on a vite fait d’uti­li­ser le même mot de passe pour un même type de site, voire le même mot de passe partout. Tôt où tard on finit par s’au­then­ti­fier sur une machine publique, chez un voisin, sur un wifi public, ou alors un des services finit par avoir une faille de sécu­rité, voire quelqu’un a posé un spyware sur notre machine habi­tuelle.

Problé­ma­tique simple : Je veux que personne ne puisse s’au­then­ti­fier sur mes comptes frau­du­leu­se­ment, et le mot de passe n’est pas la solu­tion.

Mots de passes uniques

Pallia­tif simple : Je génère un mot de passe par site. Je l’ai fait un temps, mais on atteint vite les limite de ce qu’on peut rete­nir de tête, même en utili­sant une astuce pour déter­mi­ner le mot de passe en fonc­tion du site (genre faire chan­ger une partie du mot de passe en fonc­tion du site). Au final la faci­lité reprend le dessus et on utilise trop souvent le même, ou des trop proches.

C’est encore plus vrai pour les mots de passe « sensibles » (comptes mails prin­ci­paux, machines perso, machine pro) où le mot de passe devrait être complexe, diffé­rent à chaque fois, et renou­velé au mini­mum à chaque chan­ge­ment de société ou de pres­ta­taire. Jusqu’à quatre mots de passe forts c’est encore gérable, après ça devient ingé­rable, surtout si certains sont peu utili­sés (donc vite oubliés).

Géné­ra­teurs auto­ma­tiques de mots de passe

Dans la même lignée on peut utili­ser un système auto­ma­tique pour géné­rer un mot de passe à partir du nom ou de l’URL du service, ou aléa­toi­re­ment en tenant à jour une liste de mots de passe. C’est mieux, mais on reste dépen­dant de cet algo­rithme. Si je suis à l’ex­té­rieur, je risque de ne plus y avoir accès. Ensuite ça ne pallie qu’une partie du problème : ça n’em­pêche pas le mot de passe de se diffu­ser, et d’être utilisé frau­du­leu­se­ment par un tiers. Ça limite juste les dégâts si c’est le service tiers qui a un problème de sécu­rité.

OpenID

OpenID c’est une manière de résoudre le problème par l’autre bout. On centra­lise la gestion de l’au­then­ti­fi­ca­tion sur un seul site, et tous peuvent ensuite y faire appel. Du coup je n’ai aucun seul mot de passe à rete­nir : celui de mon compte openid. Je peux faire en sorte qu’il soit complexe, trans­mis sur une connexion sécu­ri­sée, et je ne crains pas les failles appli­ca­tives des services tiers.

Ça résout certaines ques­tions, mais en pose d’autres : Comment est-ce que je m’au­then­ti­fie sur le serveur OpenId ? si c’est un mot de passe alors j’ai un risque d’au­tant plus grand s’il est décou­vert. Tous mes services en dépendent.

RSA SecurID

SecurID c’est le système clas­sique en entre­prise. On vous donne une sorte de porte clef person­nel qui génère un mot de passe unique toutes les 15 secondes. Natu­rel­le­ment chaque porte clef est initia­lisé diffé­rem­ment donc seul le votre donne accès à votre compte. Le mot de passe est à usage unique, et tota­le­ment sans inté­rêt passé une minute. Les risques d’ac­cès frau­du­leux sont donc forte­ment limi­tés.

Malheu­reu­se­ment ça ne semble pas vrai­ment conve­nir à un usage person­nel courant. Tout d’abord je n’ai qu’un seul support physique, et aucun accès de secours. Si je perds mon accès, je dois me repo­ser sur un admi­nis­tra­teur tiers qui me redonne un nouveau support et le lie à mon compte.

En vacances, ou simple­ment si je n’ai pas ma veste avec moi, il peut arri­ver que je n’ai pas mon support. Sous réserve que je consi­dère mon accès comme « sans risques » je souhaite pouvoir passer sans le jeton d’au­then­ti­fi­ca­tion forte. Là je n’avais pas ce choix.

Ensuite le jeton repose sur un système de clefs et de secrets qui est détenu par Veri­sign. C’est un point qui est sensible pour moi, d’au­tant qu’il y a eu une faille chez eux récem­ment et qu’on se demande si les secrets n’ont pas été divul­gués. Un système open source sans serveur tiers me semble indis­pen­sable.

Enfin, pour éviter qu’il suffise de voler le porte clef plas­tique pour avoir accès à mon compte, je devais ajou­ter un PIN de quatre chiffres. Ce qui m’étonne c’est que ce PIN n’est pas à saisir sur le porte clef, mais à côté du jeton d’au­then­ti­fi­ca­tion, dans le formu­laire web. Quiconque regarde mon clavier, écoute sur le réseau, ou a réussi à poser un spyware sur ma machine connai­tra ce PIN. Bref, il n’est pas si secret que ça.

Pour ma société, voire pour l’ac­cès à mon compte en banque (et encore), pourquoi pas. Pour le reste, bof bof.

Google 2 steps veri­fi­ca­tion

Le système Google est pour moi un peu plus souple déjà. Il utilise une appli­ca­tion sur mon smart­phone et pas un porte clef tiers mais le système semble simi­laire. Ca n’a l’air de rien mais le télé­phone a beau­coup plus de chances d’être avec moi. Il inter­vient après l’au­then­ti­fi­ca­tion par mot de passe (d’où le nom de « deux étapes ») et on peut forcer la seconde étape à ne pas être rede­man­dée à chaque fois pour la même machine qu’on sait « sûre ».

Pour autant je ne suis pas toujours avec mon télé­phone, et il peut tomber hors batte­rie. Dans ces condi­tions, et si j’ai confiance dans le poste et la connexion sur lesquels je suis, j’au­rai aimé pouvoir saisir un mot de passe spéci­fique qui zappe l’au­then­ti­fi­ca­tion forte. Ça fonc­tionne tant que c’est excep­tion­nel mais Google ne me le propose pas. Google me propose par contre de géné­rer une série de mots de passe à usage unique. Malheu­reu­se­ment l’usage unique est poten­tiel­le­ment gênant et surtout ça implique de les noter quelque part, avec le risque de les perdre ou de se les faire voler. Bref, on peut mieux faire même si j’ap­pré­cie l’in­ten­tion.

Pour ne pas risquer de perdre des accès et comme il n’y a pas d’ad­mi­nis­tra­teur humain tiers, je peux propo­ser à Google un second numéro de télé­phone qui sert en backup, si jamais je perds le premier. Là aussi c’est posi­tif. Main­te­nant person­nel­le­ment j’ai un télé­phone perso, un de boulot, je risque parfois d’avoir l’un et pas l’autre. J’au­rai aimé auto­ri­ser les deux à me servir pour l’au­then­ti­fi­ca­tion forte et ce n’est pas proposé.

Point posi­tif, google garde une compa­ti­bi­lité avec toutes les appli­ca­tions qui conti­nuent à utili­ser un simple mot de passe comme inter­face. Je peux faire géné­rer autant de mot de passe que je veux (ils sont longs et complexes) et les affec­ter à des appli­ca­tions. J’ai ensuite la liste des appli­ca­tions dans mon inter­face d’ad­mi­nis­tra­tion et je peux en ajou­ter ou en reti­rer à la volée. Le résul­tat c’est que je peux vali­der ou refu­ser chaque appli­ca­tion indé­pen­dam­ment, sans secret partagé entre toutes.

Côté sécu­rité, rien ne m’in­dique qu’il est impos­sible de copier le logi­ciel présent sur mon télé­phone portable (ou les mots de passe à usage unique que j’ai en backup) et l’uti­li­ser sans que je ne le sache. Tech­nique­ment ça ne prend pas long­temps pour quelqu’un qui a accès à mon télé­phone, 10 minutes au plus. J’au­rai aimé un système qui détecte que deux télé­phones distincts utilisent la même clef et me l’in­dique. Si c’est présent Google n’en parle pas.

Enfin, tout ça est « google-only ». Je peux certes utili­ser google en openid, mais ça reste centra­lisé. J’au­rai aimé quelque chose d’uti­li­sable partout, y compris sur mes serveurs.

Clefs SSH

En rédi­geant tout ça je me suis rendu compte que j’uti­li­sais déjà un système assez ressem­blant : les clefs SSH. Pour me connec­ter à mes serveurs j’uti­lise des clefs privées. J’ai une clef par source, toutes diffé­rentes. Je peux auto­ri­ser faci­le­ment une nouvelle source, ou en griller une exis­tante, sans mettre à jour. J’ai aussi un mot de passe de secours que je peux utili­ser quand je suis à l’ex­té­rieur.

Malheu­reu­se­ment là c’est unique­ment pour ssh, et mes authen­ti­fi­ca­tions se font à 90% sur des formu­laires web. Ca demande aussi d’avoir ses clefs ssh sur soi, or le scéna­rio d’au­then­ti­fi­ca­tion forte est surtout utile juste­ment quand je suis ailleurs que chez moi, ou avec une machine qui n’est pas une machine de confiance.

Je n’ai non plus aucun système qui m’as­sure que ma clef n’a pas été copiée et utili­sée par un tiers.

Et vous ? Qu’a­vez-vous pour vos authen­ti­fi­ca­tions fortes ?

En regar­dant j’ai­me­rai :

  • Authen­ti­fi­ca­tion par un système de clefs privée/publique géré par une appli sur mon télé­phone portable
    • Possi­bi­lité de gérer une liste de clefs auto­ri­sées (une par télé­phone portable) pour ajou­ter/reti­rer faci­le­ment un accès
    • Le jeton renvoyé par le télé­phone est obtenu par une combi­nai­son d’un mot de passe ou PIN et de la clef (il faut les deux, et donc le mot de passe n’est pas saisit sur le PC public mais sur mon propre télé­phone)
    • Un système de numéro incré­men­tal est asso­cié au jeton d’ac­cès afin de repé­rer si un tiers utilise une de mes clefs après l’avoir copiée (si le numéro est égal ou plus faible que la dernière fois le serveur refuse l’ac­cès, je saurai donc que quelqu’un utilise ma clef ailleurs et je pour­rai la suppri­mer des auto­ri­sa­tions)
  • Authen­ti­fi­ca­tion alter­na­tive par un mot de passe que je choi­sis moi, pour quand je n’ai pas mes télé­phones et que je suis prêt à prendre le risque
  • Authen­ti­fi­ca­tion alter­na­tive par mot de passe pour les API, logi­ciels, etc. (mot de passe généré, long/complexe)
    • Possi­bi­lité de gérer une liste de mots de passe auto­ri­sés (un par appli­ca­tion/API) pour ajou­ter/reti­rer faci­le­ment un accès
Catégories
Métiers du web Vie professionnelle

N’éco­no­mi­sez pas sur votre maté­riel infor­ma­tique profes­sion­nel

Choi­sis ce que tu veux

J’ai inté­gré une nouvelle société il y a peu. Première surprise, on m’a demandé avant que j’ar­rive ce que je voulais comme poste infor­ma­tique. Agréable. Mieux : On m’a simple­ment dit d’al­ler prendre ce qui me corres­pon­dait sur les sites de Dell ou d’Apple. Pas de choix prééta­bli ou de guide sur le budget.

Avec un cahier des charges aussi inexis­tant le moindre DAF risque­rait une attaque cardiaque. L’es­sen­tiel des effec­tifs peut faci­le­ment se faire coller l’étiquette « geek », c’est un coup à dépen­ser 3 000 euros par poste ça.

Qu’est-ce qui peut bien pous­ser une société à lâcher la bride ainsi à ses infor­ma­ti­ciens ?

Que ceux qui n’ont jamais pesté devant leur machine qui ne réagit pas assez vite lèvent la main !

À mon arri­vée à Yahoo! j’avais eu pendant un moment un vieux Dell qui avait 10 minutes de batte­rie (montre en main) et 8 minutes pour démar­rer. Je n’avais pas le temps de lancer un logi­ciel qu’il s’ar­rê­tait. Chan­ger la batte­rie ? ah non, pas avant les trois ans d’amor­tis­se­ment. Résul­tat : une horreur pendant les réunions.

Plus récem­ment à mon précé­dent poste j’ai béné­fi­cié d’un Dell Lati­tude E5510 tout neuf. Proces­seur Intel i3 dual core à 2,4 Ghz et 4 Go de mémoire, sur le papier c’est même surdi­men­sionné pour quelqu’un qui fait un peu de code et majo­ri­tai­re­ment de la bureau­tique. Pour­tant, que ce soit l’anti-virus ou le maté­riel, il me fallait presque 10 minutes pour démar­rer la machine, plus d’une minute pour avoir accès à MS Word ou Fire­fox après les avoir lancé, et le wifi mettait du temps à accro­cher.

Je ne prends même pas en compte toutes les fois où j’ai du noter sur papier et ressai­sir à cause d’une mauvaise batte­rie et d’un manque de prises en salle de réunion, vous ne croi­riez pas le temps perdu ainsi cumulé.

La renta­bi­lité comme seul objec­tif

Depuis une semaine c’est une joie. J’ouvre le portable et je peux commen­cer à frap­per au clavier. Pas de minute d’at­tente, pas même 30 secondes. Je clique sur l’icône de MS Word et je peux taper immé­dia­te­ment. Je dis bien immé­dia­te­ment. J’ai véri­fié si c’était une impres­sion ou si c’était objec­tif. J’ai cliqué et tapé immé­dia­te­ment.  La batte­rie je n’en parle même pas, je pour­rai tenir la jour­née dessus sans rechar­ger. Quant au wifi, c’est en rédi­geant ce billet que je me suis rendu compte que je n’ai jamais fait atten­tion à savoir si le wifi était en recherche ou connecté : j’étais en ligne dès l’ou­ver­ture du capot, ou du moins je n’ai jamais ressenti le délai.

En ce moment je fais des entre­tiens auprès de mes clients. Deux entre­tiens par jour, c’est un démar­rage à froid et trois reprises à chaud. Entre le wifi, la sortie de veille, le lance­ment des logi­ciels et la réac­ti­vité géné­rale, je gagne un grand mini­mum de 3 minutes à chaque fois, le double pour le démar­rage à froid, soit 15 minutes par jour.

Comp­tez vous-mêmes, j’ai renta­bi­lisé une jour­née de travail à peu près tous les deux mois. 15 minutes ça peut sembler exagéré, on ne se rend pas toujours compte de tous ces petits temps d’at­tente, on met instinc­ti­ve­ment en place des contour­ne­ments (le café après avoir allumé la machine, la présen­ta­tion avec le client le temps que MS Office se lance) … jusqu’au jour où on n’en n’a plus besoin et qu’on devient vrai­ment effi­cace.

N’éco­no­mi­sez pas sur l’ou­til de travail

Le « choi­sis ce que tu veux » est très diffi­cile pour moi. Ça veut dire que c’est à moi de défi­nir les limites de ce qui est accep­table ou rentable. Mes expé­riences passées m’in­ci­taient d’un côté à ne surtout pas rogner trop, mais de l’autre à croire que je risquais de me faire remarquer par une facture refu­sée avant même de faire mon premier jour.

Heureu­se­ment un futur collègue m’a incité à ne pas faire l’éco­no­mie d’un poste de travail et m’a rappelé que le coût était quand même ridi­cule au final pour du profes­sion­nel.

Résul­tat : Je me suis lâché. Raison­na­ble­ment, mais mon poste a proba­ble­ment coûté quatre fois plus que celui que m’avait alloué mon précé­dent employeur.

Le montant repré­sente tout de même moins de trois jours de factu­ra­tion client. La diffé­rence avec un poste milieu de gamme sera amor­tie en moins de six mois sur la base des calculs plus haut. Avec un renou­vel­le­ment tous les trois ans, mon employeur précé­dent aurait fait une écono­mie de 15 jours de factu­ra­tion en faisait le même choix.

Tout n’est pas chif­frable

Mais le gain réel n’est même pas là. Le gain c’est par exemple que j’ai envie de travailler, que j’ai une impres­sion de confiance et d’ef­fi­ca­cité indé­niable pour commen­cer dans mes nouvelles affec­ta­tions. Je commence motivé et non frus­tré.

Pour savoir combien cette frus­tra­tion peut tuer toute moti­va­tion sur le long terme au fur et à mesure des embê­te­ments et des mauvaises expé­riences, le retour sur inves­tis­se­ment chif­fré plus haut est tota­le­ment négli­geable. La vraie valeur ajou­tée elle ne se chiffre pas, mais c’est elle la plus impor­tante : je suis effi­cace est motivé.

Faites tour­ner ce retour à votre service infor­ma­tique le jour où on vous annonce que fran­che­ment votre poste coûte déjà assez cher comme ça et que ce que vous deman­dez n’est pas vrai­ment indis­pen­sable, qu’on peut très bien faire sans.

Photo d’en­tête sous licence CC BY-NC-ND par Kmeron

Catégories
Performance des sites web

How media queries slow the mobile web

You proba­bly have been told to design with the grace­ful degra­da­tion para­digm. If you have very smart friends, they may even use the « progres­sive enhan­ce­ment » in place of grace­ful degra­da­tion. To enable an opti­mi­zed access to mobile on a website, you proba­bly use css media queries:

header { background-image: url(head-1280px.png) }
@media screen and (max-device-width: 480px) {
  header { background-image: url(head-480px.png) }
}

If you’re really smart and don’t care about IE, you may design first for narrow mobiles and then opti­mize all other use cases:

header { background-image: url(head-320px.png) }
@media screen and (min-device-width: 321px) {
  header { background-image: url(head-480px.png) }
}
@media screen and (min-device-width: 481px) {
  header { background-image: url(head-855px.png) }
}
@media screen and (min-device-width: 856px) {
  header { background-image: url(head-1280px.png) }
}

Sorry, what you has been told is bull­shit. You are not opti­mi­zing anything. Worse, you are degra­ding all android user expe­rience (and proba­bly some ipho­ne’s ones).

It’s not your fault, webkit has an horrible bug. It down­loads all appli­cable images, not just the final one. This basi­cally means that down­loa­ding only the big 1280px image may even be chea­per than these alter­na­tives with media queries.

Yes, it’s sad, but so is the life. The former is true at least up to Android 2.3.2 so the problem won’t disap­pear this year.

If you ask me, it’s even worse: Brow­sers based on 2010’s webkit and lower (inclu­ding mobile ones) don’t need any media query to be slowed down. You just need the follo­wing to down­load two images instead of one.

p { background-image: url(useless.png); }
p { background-image: url(usefull.png); }

There are only three solu­tions

  1. Push the fix on Android (still not there in 2.3.2) and upgrade to the latest firm­ware (not only on your own mobile, but on everyo­ne’s)
  2. Use the same images for all devices and screen widths AND don’t use the cascade to over­ride previous back­ground-image rules in your style­sheets
  3. Wrap every back­ground-image rule in a media query and define min and max constraints for each media query so that a device never read more than one block (this mean you will never support IE without CSS hacks) AND don’t use the cascade to over­ride previous back­ground-image rules in your style­sheets