HTeuMeuLeu

HTML, CSS et JavaScript

Je conserve ici ce slide de Heydon Pickering sur HTML, CSS et JavaScript parce qu’il est presque parfait.

CSS - JS - HTML

J’aurais juste laissé CSS au dessus de HTML, et ça aurait été l’illustration parfaite pour répondre à tous ceux qui cherchent à construire des « applications robustes » toutes en JavaScript. À mettre en contraste avec cet autre slide posté en janvier dernier.

La pyramide alimentaire du Web

La différence entre un développeur junior et un développeur senior

Vu sur Twitter, ce tweet de Vicky Harp :

Un utilisateur réclame une fonctionnalité déjà existante dans le produit.
— Le développeur junior : « lol, idiot d’utilisateur »
— Le développeur avancé : « Fermé – Résolu »
— Le développeur senior : Ouvre un bug d’utilisabilité.

C’est tellement bien résumé.

Réinventer la roue

Je suis tombé récemment sur cet article initialement intitulé « Quand ne devrait-on pas utiliser WordPress ? ». J’ai d’abord cru à un article satirique, puis j’ai vite réalisé que l’auteur était sérieux. Parmi les arguments avancés pour justifier une utilisation systématique de WordPress, j’ai sursauté sur le suivant.

  • Il ne sert à rien de réinventer la roue.

Non merci ! Trop occupés

C’est un argument que je n’aime pas trop, mais que j’ai déjà entendu de la part de clients. Pour commencer, je n’aime pas la comparaison avec la roue. Je ne suis pas un travailleur à la chaîne qui assemble des pneus. Je suis intégrateur. Je me vois plus comme un artisan que comme un ouvrier sur une chaîne de montage.

Alors prenons une autre métaphore. Par exemple, la cuisine. Si vous allez dans un supermarché, vous trouverez certainement de quoi vous nourrir jusqu’à la fin de vos jours sans avoir jamais à cuisiner. Plats préparés, surgelés, conserves. Rien de telle qu’une bonne ratatouille surgelée, non ? Non ? Non ?

Mais alors, à quoi bon réinventer la ratatouille ?

Le premier argument qui me vient à l’esprit, c’est bien entendu la qualité. En cuisinant moi même une ratatouille, je connais la qualité de mes ingrédients.

Le second argument, c’est la facilité de personnalisation. Vous n’aimez pas les poivrons ? Aucun problème, je vous fait une ratatouille sans poivron.

Le dernier argument, c’est le plaisir. Découper soi même amoureusement ses aubergines, courgettes et tomates, et les faire revenir langoureusement à la poêle, c’est quand même autre chose que jeter un sachet plastique surgelé dans le micro-onde.

La ratatouille du film ratatouille, cuisinée par… Rémy

Le parallèle avec l’intégration, ou même le développement au sens large, n’est pas bien difficile à faire. Je suis un codeur dans l’âme. J’aime savoir comment fonctionne quelque chose avant de l’utiliser. J’ai besoin de m’assurer de la qualité de ce que j’utilise. J’aime aussi concevoir des pages et interfaces sur mesure, correspondant à un besoin précis. Et j’éprouve beaucoup de plaisir à faire tout ça, même si ça nécessite que j’y passe beaucoup de temps ou que j’y laisse quelques cheveux.

De la même manière que je pourrais me contenter de manger du surgelé tous les soirs, je pourrais me contenter de claquer du WordPress sur tous mes projets. Mais j’y perdrais surement vite goût.

Toute la subtilité de mon métier réside alors mon propre jugement de ma capacité à réinventer la ratatouille. Si on est vendredi à dix-sept heures et qu’il faut impérativement que je livre une page avec un carousel en 3D pour dans trente minutes, il y a des chances pour que je me jette sur la première bibliothèque faisant ça proprement que je trouverais.

Et ça ne signifie pas non plus que je vais systématiquement réessayer de réinventer la roue. J’aurais peu d’intérêts à créer mon propre pré-processeur CSS, mon propre langage de programmation, mon propre système d’exploitation, etc.

Pour citer Carl Sagan (dans un moment de télévision tel qu’on ne ferait plus de nos jours) :

Carl Sagan: If you wish to make an apple pie from scratch, you must first invent the universe.

Si vous souhaitez faire une tarte aux pommes à partir de zéro, vous devez d’abord inventer l’univers.

La semaine dernière, je suis tombé sur cet autre article intitulé « Je sais comment programmer, mais je ne sais pas quoi programmer ». Ce passage m’a apporté un autre argument pour réinventer la roue :

Dans la communauté du logiciel, l’attitude générale est de ne pas réinventer la roue. C’est presque mal perçu si vous réécrivez une bibliothèque quand une option mature et stable existe. Si c’est une bonne règle en général, les débutants ne devraient pas avoir peur de réinventer la roue. Quand c’est fait pour apprendre et pour s’entraîner, c’est très bien de faire une roue. C’est une partie importante de l’apprentissage. Par exemple, écrivez votre propre version de ls, mv, wget ou cowsay. Si vous souhaitez partir sur un jeu, alors faites un clone de Pong, Tetris ou Space Invaders. Vous n’avez pas besoin de reprendre toutes leurs fonctionnalités ou d’en faire une réplique exacte, mais vous démarrez avec votre objectif et une feuille blanche, et vous faites en sorte d’y arriver.

Il s’avère que Jeff Atwood avait écrit sur ce thème en 2009 :

« Ne réinventez pas la roue » devrait être utilisée comme un appel aux armes pour s’enrichir de toutes les solutions existantes, et pas comme une matraque pour affaiblir ceux qui voudraient légitimement construire quelque chose de mieux ou améliorer ce qui existe déjà. De ma propre expérience, malheureusement, c’est plus souvent ce dernier cas que le premier.

Donc, non, vous ne devriez pas réinventer la roue. À moins que vous ne prévoyiez d’en savoir plus sur les roues.

Les métiers du Web nécessitent un constant réapprentissage (« Les bonnes pratiques d’aujourd’hui seront les mauvaises pratiques de demain », disais-je il y a quatre ans). Réinventer la roue, c’est aussi une façon de s’assurer de rester dans la course plutôt que de regarder la roue tourner.

Le nouveau benchmark

Lu le mois dernier : ce commentaire sur Hacker News (via Twitter) en réaction à un test du dernier Macbook.

J’ai trouvé cette affirmation intéressante :

« Les nouvelles spécifications vous offrent une meilleure performance, mais aussi une meilleure durée de vie de la batterie avec, selon Apple, 10 heures de navigation web ou 11 heures de lecture de films iTunes. »

La lecture de films était autrefois considérée comme un test de facto de la rigoureuse autonomie qu’un ordinateur pouvait avoir. Les DVD tournoyant et les disques durs ont été remplacés par des SSD, et le décodage de vidéo avec accélération matérielle a remplacé l’utilisation maximale de votre processeur.

En revanche, la navigation web était autrefois considérée comme une utilisation légère de batterie. Récupérer du contenu réseau en mémoire, analyser du HTML de base, etc. Maintenant, avec JavaScript partout et la complexification grimpante des pages web, la navigation web est devenue l’une des choses les plus coûteuses que vous pouvez faire, en ce qui concerne l’autonomie. À vrai dire, sur mon Macbook Pro, maintenant qu’OS X indique quels processus consomment le plus d’énergie, les navigateurs web comme Safari et Chrome sont les seules choses que je vois apparaître dans les « Applications consommant beaucoup d’énergie ».

Je n’avais jamais vu les choses sous cet angle, mais le web est effectivement devenu un nouveau benchmark de facto.

« Bobbie had a Nickel »

Vu sur Twitter, un long article sur Marissa Mayer et Yahoo, avec notamment cette anecdote invraisemblable.

Près de 4000 employés de Yahoo étaient assis et attendaient que Marissa Mayer arrive pour s’expliquer. […]

Mayer pris une grande respiration. Elle salua tout le monde. Elle leur rappela la confidentialité de cette réunion. Elle déclara avoir parcouru leurs questions, et qu’elle avait quelque chose qu’elle voulait leur lire. Elle tenait un livre dans ses mains. Un livre pour enfant. « Bobbie had a Nickel ».

Elle commença à lire.

« Bobbie avait un nickel rien que pour lui. Devait-il acheter des bonbons ou un cône glacé ? »

Mayer leva le livre, pour montrer aux employés les illustrations.

« Devait-il acheter une pipe à bulles ? Ou un bateau en bois ? »

Une autre illustration.

« Peut-être, quand même, qu’un petit camion serait mieux que tout ! »

Les employés présents dans la salle échangeaient des regards. À leurs bureaux, les employés à distance devenaient embrouillés.

Que faisait Mayer ?

Elle continua à lire.

« Bobbie s’assit et se demanda, Bobbie s’assit et pensa. Quelle pourrait être la meilleure chose qu’un nickel puisse acheter ? »

Mayer sembla sauter quelques pages. Elle lu, avec un peu d’agitation dans sa voix :

« Il pourrait s’acheter un sac de fèves ou une toupie. Il pourrait s’acheter un moulin à vent à offrir à son petit frère. Ou devrait-il s’acheter, se demande Bobbie, une petite boîte à crayons ? »

Mayer semblait lire avec une réelle frustration maintenant, comme si toute la colère et confusion de la salle s’en irait si tout le monde comprenait l’histoire qu’elle lisait à voix haute.

« Bobbie pensa, et soudain une idée brillante lui vint », Mayer lu, atteignant la dernière page du livre.

« Il dépensa son nickel comme ça… »

Mayer leva le livre pour montrer sa dernière illustration. C’était un dessin d’un petit garçon roux à cheval sur un manège.

Quasiment personne ne pouvait voir la page.

Personne ne compris ce que Mayer essayait de dire. […]

C’est quand Mayer est montée sur scène, s’est assise sur sa chaise, et leur a lu un livre pour enfant, en leur montrant les illustrations comme si elle était une maîtresse d’école et qu’ils avaient tous six ans. Plus tard, elle expliqua qu’elle avait lu ce livre parce qu’elle voulait dire que ce qui comptait le plus dans la vie était les expériences, et que son expérience chez Yahoo était fantastique jusque là.