Retour sur la planète NoSQL

J’ai déjà discuté des raisons pourquoi je ne favorisais pas l’utilisation d’une base de données NoSQL dans un projet auquel je collaborais.  Mais, est-ce que ces bases de données ont leur place?  Est-ce qu’elles sont utiles?  Comment faire le meilleur choix?

Les réponses, comme pour la plupart des choses en informatique, dépendent principalement de l’utilisation. En effet, il faut être conscient des limites imposées par les choix technologiques que l’on fait et il faut comprendre comment ces limites peuvent contraindre l’application développée.

Lire la suite

Publicités

Le projet est en retard, il nous faut un plan

Avez-vous déjà remarqué que la première chose qu’on nous demande de faire lorsqu’un projet est en retard est de produire une liste?  Bien sûr, cette liste est parfois habilement dissimulée par une autre appellation comme un plan d’action ou un état général de la situation.  Mais dans tous les cas, le document produit reste toujours une liste des choses à faire pour compléter le projet.

L’objectif de cette liste est de créer une stratégie claire pour la complétion du projet.  Le client va s’en servir comme étalon pour juger de l’avancement futur du projet.  Elle lui donne une sensation de contrôle parce qu’il sait ce qu’on doit faire, la direction qu’on va suivre et combien de temps on va prendre.  Elle n’existe que pour cet objectif bien particulier soit rassurer le client et lui démontrer qu’on a la volonté de compléter le projet.

Lire la suite

On ne peut avoir qu’une seule chance pour faire une bonne impression

La première rencontre avec une nouvelle personne peut définir en grande partie notre relation future.  Il arrive qu’on tombe amoureux ou qu’on déteste profondément quelqu’un au premier regard.  La même chose peut se passer avec une application.  Les premières minutes d’utilisation sont  déterminantes pour la survie de notre logiciel sur l’ordinateur de notre utilisateur.

Lire la suite

Et si on optimisait…

Je discutais dernièrement avec d’autres développeurs au sujet de la manière optimale pour conserver des données non-structurées dans une base de données.  Plus précisément nous cherchions à entrer données descriptives liées à un profil utilisateur.  Nous utilisions une base de données relationnelle pour le reste du projet et il me semblait normal de continuer avec le même système.  Nous avions même trouvé une structure permettant de faire le travail.  Elle était cependant un peu lourde.  Ceci a soulevé des craintes sur les performances qu’il était possible d’atteindre chez quelques personnes.  Quelqu’un a alors proposé d’utiliser une base de données non relationnelle pour cette section du logiciel.  La base de données en question était MongoDB.

Lire la suite

Faire attendre l’utilisateur avec style

Je viens de faire l’achat d’un nouvel appareil photo numérique et je l’attend impatiemment. Comme d’habitude, j’ai reçu un code de suivi qui me permet de suivre mon paquet sur le site du transporteur et d’estimer quand il sera arrivé.  Le tout fonctionne parfaitement.  Mon colis se trouve actuellement quelque part entre ma maison et Toronto.

Le seul problème est que je suis vraiment impatient.  J’ai besoin de valider à tout moment où il est rendu.  C’est presque maladif.  Je vérifie la position du colis aux cinq minutes.  Évidemment, le site du transporteur affiche toujours la même information : en transit à partir de Toronto.  Pourtant je dois valider quand même au cas où.

Lire la suite

Le triage des demandes ou comment rendre tout le monde insatisfait

Le processus de triage est largement utilisé dans les hôpitaux depuis plusieurs années.  Nous l’avons tous déjà vu en utilisation lors de l’une de nos nombreuses visites à l’urgence d’un hôpital.  Il consiste à classifier la gravité et l’urgence d’un patient pour déterminer l’ordre dans lequel il sera traité tout en optimisant ses chances de survie.

Voici comment ça se passe généralement:

  • Un préposé nous rencontre, il nous examine et il classifie le type de blessures ou de maladie que nous avons.
  • Il place notre dossier dans la liste selon une échelle de classification.
  • On prend place dans la salle d’attente et on attend.
  • On attend encore… Lire la suite

Comment devenir Sherlock Holmes et diagnostiquer des exceptions comme un pro en .Net

J’utilise dans mes projets depuis assez longtemps une classe d’exception personnalisée qui capture le maximum d’informations lorsqu’une erreur se produit pour m’aider à la diagnostiquer.  Certains types d’erreurs sont notoires pour être résistants à l’identification tel que le fameux La référence d’objet n’est pas définie à une instance d’un objet.  Dans ce cas, le contexte de l’exception fourni une description précise de la méthode contenant la référence nulle mais reste peu bavard sur l’objet concerné.

La méthode habituelle pour trouver le problème débute par tenter de reproduire l’erreur.  Ce qui marche quelques fois, après tout avec un peu de chance et d’observation on peut tomber sur la bonne ligne de code.  Si on est moins chanceux, la correction du problème peut être difficile et il peut être nécessaire de se fier à la mémoire de l’utilisateur qui est normalement une source peu fiable après cinq minutes.

Lire la suite

C’est quoi une dette technique et comment la gérer

Une dette technique c’est un peu le même concept qu’une carte de crédit.  À toute les fois qu’on ajoute une ligne de code à un logiciel, on augmente la dette d’un montant basé sur la taille et complexité du code ajouté.  Ce qui veut dire, que plus le code est complexe et lourd plus on va devoir payer des intérêts en le supportant.

On peut aussi augmenter notre dette rapidement en faisant un code non-optimal pour atteindre un objectif comme livrer à temps.  L’objectif à atteindre est alors beaucoup plus important que les considérations futures de maintenance.  Dans un monde idéal, ça n’arrive jamais.  Dans la vraie vie, ça arrive tous les jours.

L’expérience de l’équipe de développement a également un impact sur les intérêts payés.  C’est un peu leur cote de crédit.  Plus l’équipe est expérimentée et efficace, plus sa cote est bonne donc les intérêts sont plus faciles à assumer.  À l’inverse, plus l’équipe est inexpérimentée ou manque de connaissances sur le logiciel maintenu, plus les intérêts seront élevés.

Lire la suite

Comment j’ai découvert la gestion de projet agile ou pourquoi je n’ai plus un mur de libre

Tout vient d’une constation bien simple que j’ai fait voici un an ou deux:  J’ai de la difficulté à connaître l’avancement de mes projets et toutes mes prévisions ne marchent pas.  Simple à régler?  Pas vraiment…

L’informatique est un milieu particulier pour la gestion de projet.  L’incertitude et la variabilité des tâches sont très élevées.  En effet, il est possible d’atteindre le même objectif de plusieurs manières différentes.  Chaque manière est plus ou moins complexe et implique un temps de réalisation différent dépendant du risque, de la description de la tâche, de l’expérience du programmeur, de son état mental, de l’alignement des planètes et du nombre de fois que son chat a marché sur le clavier.  Au final, on se retrouve avec un projet composé de probablement 50 à 500 tâches qui peuvent prendre de 2 à 40 fois le temps prévu 90% du temps si on est chanceux.

Lire la suite