Combien coûtent les tests unitaires ?

Les radins calculent le coût uniquement en terme d’argent. Mais si vous voulez un logiciel parfaitement testé, il faut considérer le tableau dans son ensemble.

C’est la grande question de cette série de 12 articles sur les tests unitaires pour les managers (en anglais). Ceci est l’épisode 11.

Continue reading “Combien coûtent les tests unitaires ?”

Application « Notes » sur iPhone : pourquoi Apple a tout faux

Faire ressembler l’application « Notes » à un vrai carnet de note est une erreur.

La première fois que j’ai utilisé un iPad, j’ai lancé l’application Notes. Et avec le niveau de détail supérieur à l’iPhone je me suis rendu compte de toute la décoration qu’Apple a ajouté à son application : fond type papier, bordures en cuir, feuilles légèrement déchirées au bord…

Assez pour le faire ressembler à un vrai calepin. Mauvais.

La version française de cet article est sur ux-fr.

Convaincre en moins de 2 minutes

[avhamazon locale=”FR” asin=”2501049837″ linktype=”text” picsize=”medium”] ne fait pas partie du Personal MBA, et je l’ai lu avant de connaitre ce principe (merci @Nat).

Je vais donc en parler rapidement et passer à autre chose parce que : Continue reading “Convaincre en moins de 2 minutes”

Comment un Monty Python trouve ses idées

Voici l’extrait d’une conférence fabuleuse donnée par l’ex Monty Python John Cleese au World Creativity Festival.
Que ce soit pour la création d’entreprise, la dramaturgie ou l’ingénierie (3 de mes passions), le problème est le même : la créativité n’a rien de magique. Pas besoin de vivre une vie de bohème, de boire toute la journée en insultant les passants d’une main et en rédigeant des poèmes de l’autre. Il existe des méthodes pour stimuler la créativité et faire venir les idées.

Si tu ne trouve pas de solution : va te coucher !

Avez-vous déjà testé cette méthode ? Après avoir lutté sur un problème : la solution vient lorsque l’on arrête de chercher. C’est parce que notre esprit se relâche et récupère des éléments de réflexions ailleurs qui viennent alimenter la solution, sans même y pense, en dormant par exemple. Cependant ça ne marche pas à tous les coups pour moi.

Laisse ton esprit trouver les solutions tout seul

J’aime ce qu’il dit à propos de la vie actuelle : nous sommes sur-occupés. Nous ne laissons jamais notre esprit se reposer, vagabonder. Téléphone, baladeur, télévision, internet, lecture : j’ai tendance à me saturer. Solution : faire le nettoyage, débrancher twitter, s’éloigner d’internet.  Parce que sinon notre esprit n’a jamais le loisir d’assembler de nouvelles idées, de récupérer de nouveaux éléments pour ensuite résoudre des problèmes.

Ne te fais pas interrompre

Evident mais tellement vrai : le téléphone sonne ou quelqu’un rentre dans la pièce pendant que je déboggue un programme ou que je conçois une architecture pour mes classes et tout est à refaire.
Parfois cela nous parait normal : mais au moment de reprendre ce qu’on faisait, c’est très difficile.

Réserve toi du temps et de l’espace pour créer

Encore une fois évident mais très dur à réaliser. Pour moi les meilleurs moment de création était dans des jardins publics ou même sur le quai d’un métro. Le problème c’est que dans le monde du travail, sans même parler des open space, le simple fait de partager son bureau peut gêner. J’utilise de la musique assez forte pour m’isoler. Mais parfois je devrais simplement chasser mon collègue et fermer mon bureau à clé…

Mon seul regret est que Cleese n’aborde pas les notions de travail en groupe dans cette vidéo. Ce qui est magnifique avec les Monty Python c’est cette capacité de plusieurs acteurs talentueux à créer ensemble.

Et vous ? Comment faites vous pour trouver des idées ? Pour vous isoler ?

5 raisons pour lire « Refactoring To Patterns » de J. Kerievsky

[avhamazon locale=”US” asin=”0321213351″ linktype=”pic-text” picsize=”medium”]

Il faut avoir lu “Refactoring To Patterns” de J.Kerievsky parceque  :

1. Les design patterns c’est bien mais…

Le projet commence. On lit les spécifications (quand il y a en a, ou qu’elles font plus d’une page), on se penche sur son GribouilleTop et on commence la conception.

Et puis arrive le moment fatidique où on se dit : “Trop bien! Je vais mettre un singleton ici, 3 fabriques abstraites là et un flyweight à cet endroit”.

Normal, les spécifications manquent ou bien on est juste méfiant (et on a raison). Donc on se blinde. En plus ça montre aux autres qu’on connait les patterns sur le bout du clavier. La classe.

Fin du projet (=date prévue +150%) :

Collègue

Dis-moi, Machin, ça sert à quoi tout ce système ?

Jb

Au cas où !

Perdu.

Le déboguage est compliqué, personne ne comprend rien et surtout pour ajouter une option le collègue réinvente la roue, sans passer par votre super implémentation.

C’est ce que l’auteur appelle l’over-engineering (la sur-conception).

A noter que la même chose est possible dans l’autre sens : l’under-engineering (la sous-conception). Dès qu’on veut rajouter une option il faut tout casser.

Voilà pourquoi :

2. …le refactoring vers les patterns c’est mieux !

C’est tout l’argument de ce livre. D’abord, ne pas attendre pour modifier sa conception que la fin du projet arrive. Ensuite parce que c’est normal ! Un produit évolue, et on ne peut pas penser à tout.

Les patterns apparaissent beaucoup plus clairement quand on a commencé à se plonger régulièrement dans le code, et moins au début.

3. Vous n’êtes pas obligé de lire le livre dans l’ordre.

Et ça c’est plutôt cool. Parce que même si, entre nous, on s’endort moins qu’en lisant d’autres livre de ce style, c’est quand même sympa de pouvoir étudier tous ces patterns au moment ou ils sont le plus parlant pour nous.

Vous pouvez lire :

  • dans l’ordre des pages,
  • par ordre des exemples (l’auteur donne une table des chapitres qui utilisent le même exemple),
  • par pattern,
  • par problèmes de conception.

Et le tout reste très clair. Vraiment bien.

4. Les chapitres sont très bien structurés (parfois trop)

Dans chaque chapitre on trouve :

  • Un résumé sous forme de schéma avant/après le refactoring et dans quels cas appliquer ce refactoring.
  • Une longue description (Motivation) sur les pour et les contres (avec beaucoup d’honnêteté) de ce refactoring et un résumé à la fin.
  • Une section “Algorithme”(Mechanics) qui décrit vraiment très génériquement comment appliquer pas à pas le refactoring. Par exemple : renommez la fonction, puis retirez cette variable, compilez et testez, puis collez cette variable ailleurs etc… Cette section peut être évitée à la première lecture (ce que j’ai fait puisque l’auteur nous y invite) et on y perd rien. Je pense que si on collait tous ces algorithmes dans une application on obtiendrait un plugin Eclipse de refactoring, tout simplement.
  • Un exemple : entre nous la meilleure section parceque…

5. Pour une fois les exemples ne sont pas “foo” et “bar”.

Les exemples sont des applications et des cas réels que l’auteur expose largement. On les retrouve tout au long du livre et ils sont très clairs. C’est assez rare pour être souligné.

6. En conclusion.

Ce qui est plaisant c’est que l’auteur reconnait qu’il y a des cas ou reconçevoir en pattern n’est pas utile, ou trop lourd. C’est rassurant et honnête. Du coup on lit sans culpabiliser de ne pas y avoir pensé plus tôt. D’ailleurs, il est toujours temps de faire du refactoring. C’est justement le principe.

Question pour ceux qui travaillent en Agile : est-ce qu’on est plus enclin à pratiquer le refactoring que dans une gestion de projet classique ?

Et vous ? Pratiquez-vous le refactoring intensif ? Pas trop peur de tout casser ? Vous en avez le temps ?

GribouilleTop : je dessine sur mon bureau et j’en suis fier

La créativité passe par la possibilité de confronter ses idées, notamment en les dessinant très vite. Et jusqu’à aujourd’hui, entre collègues on dessine surtout… sur du papier.
Alors que faire pour ne pas user 3 tonnes de papier pour des schémas “aussitôt fait, aussitôt jetés” ? Comment maintenir une liste de choses à faire urgentes, sans écrire dans un fichier qu’on ne retrouve jamais, ou dans un cahier qu’on laisse fermer ?
Le GribouilleTop est la réponse. L’expression “faire un schéma sur un coin de table” prend tout son sens.
Mais avant de vous présenter mon invention IN.CR.OY.AB.LE, une petite saynète s’impose :

La créativité passe par la possibilité de confronter ses idées, notamment en les dessinant très vite. Et jusqu’à aujourd’hui, entre collègues on dessine surtout… sur du papier.

Alors que faire pour ne pas user 3 tonnes de papier pour des schémas “aussitôt fait, aussitôt jetés” ? Comment maintenir une liste de choses à faire urgentes, sans écrire dans un fichier qu’on ne retrouve jamais, ou dans un cahier qu’on laisse fermer ?

Le GribouilleTop est la réponse. L’expression “faire un schéma sur un coin de table” prend tout son sens.
Mais avant de vous présenter mon invention IN.CR.OY.AB.LE, une petite saynète s’impose :

Continue reading “GribouilleTop : je dessine sur mon bureau et j’en suis fier”