Archives mensuelles : juin 2012

Interagir avec ses clients – Le guide du programmeur

Il y a une réalité qui ne peut pas échapper à un programmeur. D’une façon ou d’une autre quelqu’un va utiliser le code que vous allez écrire. Puisque qu’éventuellement ces gens vont utiliser ce code, ils vont, par extension, devenir un client.

À travers différents contextes dans ma carrière, j’ai eu à faire du support à mes clients. Peu importe la situation, il y a des règles que je considère universelles lorsqu’il est question de support client.

Pour certains, il peut être révulsant de prendre le temps soit par téléphone ou même par courriel de répondre à des questions et d’identifier des situations problématiques avec ses utilisateurs. Ces lignes directrices pourront vous éclairer sur ce qui est important.

  • Faire preuve d’empathie envers vos clients. Dans le processus d’acquisition d’informations pour une situation qui cause problème à votre client, faire preuve d’empathie contribue pour beaucoup à établir une confiance entre vous et le client. Un client qui vit une situation problématique avec votre application a besoin d’être écouté et compris.
  • Étant geek de nature, il arrive qu’on soit à court de mots pour aborder une situation. C’est là que je suggère d’apprendre certaines phrases par cœur au point qu’elles deviennent un automatisme. Par exemple : 
    • « Je suis désolé que vous éprouviez cette situation. »
    • « Si vous avez des questions ou des commentaires, je suis disponible toute la journée pour y répondre. »
  • Apprendre à écrire avec le moins de fautes d’orthographe possible. La communication par écrit doit être impeccable. Si vous faites des fautes sans bon sens, comment je peux vous faire confiance pour résoudre mes problèmes?
  • Être distancé émotionnellement de la situation et être calme. Il peut être difficile de le faire car il va arriver que ce soit directement votre code ou vos solutions qui soient en jeu. Cela va vous permettre d’être capable d’offrir une solution rapidement.
  • Vous n’êtes pas le problème. Vous êtes là pour fournir des solutions.
  • Portez attention au vocabulaire que vous utilisez. Les clients font face à des situations plutôt qu’à des problèmes.
  • Connaître son type de personnalité et apprendre à connaître la personnalité de votre vis-à-vis. Par exemple, quelqu’un de « Jaune » va apprécier quelques minutes de discussion « varia » avant d’entamer le vif du sujet. Un « bleu » va apprécier avoir une liste détaillée des changements qui seront apportés et un résumé hebdomadaire de l’avancement des travaux.
  • Vous êtes humain vous aussi. Il peut vous arriver de faire des erreurs et il est aussi admissible d’admettre que l’on a fait une erreur.
  • Être à l’écoute lorsqu’on vous parle. Dans bien des cas, la solution va sortir directement de la bouche du client. Après tout, ce sont leurs problèmes que vous tentez de régler.
  • Une relation avec un client ça se construit. Il peut y avoir des hauts comme des bas, l’essentiel est qu’il y ait du respect.
  • Soyez en engagés auprès de vos clients et respectez vos engagements. Est-ce que vous arriveriez en retard à votre propre mariage? Non? Ne laissez-pas tomber un client par votre manque d’engagement.

C# Dynamics

La dernière mise à jour majeure du Framework .NET a ajouté un concept ajoutant une couche permettant à C# d’agir comme un langage dynamique. Un langage dynamique permet d’être interprété qu’au moment de son exécution.

Dans les langages dits dynamiques, on retrouve des noms connus comme :

Un language dynamique fait contraste avec un language fortement typé où le code est exécuté au moment de la compilation de celui-ci.

Introduction du type dynamic dans .NET 4.0

Le type dynamic a été introduit à 4.0 afin de court circuiter  la validation statique des types. Cet ajout permet de d’écrire du code qui sera résolu une fois seulement qu’il sera exécuté.

Ce nouveau mot clé peut être utilisé à plusieurs sauces. Dans certains cas, son utilisation va sembler assez transparente. Par exemple, les types dynamics sont utilisés assez régulièrement avec ASP.NET MVC avec la mécanique du ViewBag.

Un bel exemple de la différence entre les deux concepts est le code suivant :

Le code exécuté en javascript va donner le résultat « 20 » car il s’agit de la multiplication de 10 et de 2. Le même code en C# ne passera pas l’étape de la compilation car il n’est pas possible de multiplier un nombre à une chaîne.

ExpandoObject

Une instance de la classe ExpandoObject vous permet d’avoir accès à un objet totalement dynamique dans lequel vous pouvez y enregistrer l’information que vous y désirez dans des propriétés. Ces propriétés peuvent être aussi être parcourues à l’aide d’une requête.

L’ExpandoObject expose un dictionnaire ayant la signature IDictionary<String, Object>) afin que vous puissiez y retrouver vos propriétés dans une boucle par exemple. Vous pouvez le faire de cette façon :

Ce code va écrire à la console le texte suivant :

Ceci est un titre
Paradis
Pascal

DynamicObject

Considérant l’implémentation vraiment naive d’un objet servant de dictionnaire d’URL :

Ce qui est important de savoir avec ce dictionnaire c’est qu’il hérite de la classe DynamicObject. DynamicObject permet à  une classe exposant des propriétés ou des fonctionnalités comme un dictionnaire ou une liste d’exposer ses propriétés de façon dynamique.

Dans le cas de cet exemple, il n’est pas question sa savoir quel algorithme de tri dictionnaire d’URL utilise pour trier ses élément mais plus de savoir qu’il est possible d’accéder dynamiquement à ses propriétés.

Pour avoir un minimum de fonctionnalités avec votre classe héritant de DynamicObject, il vous faut réimplémenter les fonctions TryGetMember et TrySetMember. Ces deux réimplémentations vont vous permettre d’avoir les fonctionnalités  vous permettant d’accéder et de paramétrer des propriétés dynamiques.

Voici un exemple excessivement simpliste vaguement tiré de MSDN

Do Not Track

Do Not Track (DNT) est un standard proposé par le W3C qui  permet aux utilisateurs d’internet ne désirant pas être suivi par des services de publicités ou d’analyse de visites de les notifier de leur intention de ne pas l’être. Cette intention se signifie à l’aide d’une entête HTTP ajoutée à toutes vos requêtes HTTP.

Historiquement, le suivi des visites et de l’analyse des comportements sur un site web était limité au clics et des chargements de pages. Depuis la venue des Cookies, les compagnies de publicités ont trouvé d’innombrables moyens de suivre vos tendances de visites sur internet et de vous afficher du contenu qui correspond à vos besoins potentiels.

Certaines compagnies ont clairement signifé leur intention par écrit de respecter l’affichage de l’intention de ne pas être suivi. Il n’y a actuellement pas de mécanismes permettant d’obliger une compagnie de marketing à respecter l’intention d’un utilisateur à ne pas être suivi. Le respect de DNT est principalement effectué de bonne foi par les services ayant signifé leur intention de respecter.

Il est à noter que, depuis mai 2012, Twitter a décidé d’aller de l’avant avec le respect de DNT auprès de ses utilisateurs. Il s’agit de la première compagnie d’importance à aller de l’avant avec cette décision.

La responsabilité du signalement de DNT revient entièrement au navigateur web. Il est proposé que l’activation de DNT doit se faire dans les paramètres de configuration du navigateur web.

Le support de DNT est actuellement limité selon le navigateur web. Un support natif à Do Not Track est offert dans Internet Explorer 9 et Firefox 11. Google Chrome offre un support à DNT par le moyen d’une extension à télécharger. Le support officiel par Google Chrome est à venir selon les dires de Google.

L’activation de DNT est très simple. Sous Firefox, il faut aller sous Options \ Privacy et activer l’option Tell websites I do not want to be tracked.

Dans le concret, l’activation de cette option ajoutera l’entête HTTP DNT : 1 à vos requêtes HTTP.

L’ajout de Do Not Track est un premier pas dans le respect de la vie privée des internautes. Il va falloir encore quelques temps avant que son utilisation devienne une pratique courante dans l’industrie de la publicité et du marketing internet.

À mon avis, les attentes aux promesses de DNT ne doivent pas très élevées car une partie de son succès est dans les mains des compagnies de publicités qui ont des intérêts très différents de l’utilisateur moyen. Toutefois, il ne s’agit pas d’une raison de reculer pour faire avancer le respect des de nos droits sur le web.

Astuce Visual Studio : Sélection de texte en colonnes

Vous vous êtes probablement comme moi retrouvés plus souvent qu’autrement avec une sélection de code avec une indentation de trois quatre niveaux à coller? Ou même une sélection où vous avez oublié de sélectionner la première ligne entièrement?

Une sélection qui, sommairement, ressemble à celle-ci :

Bref, l’indentation est à refaire entièrement. À chaque fois!

Il y a pourtant une solution très simple dans Visual Studio. Il s’agit de la combinaison des touches SHIFT et ALT.

Son utilisation est très simple, il suffit de positionner son curseur au début de la sélection, d’appuyer sur les touches SHIFT et ALT et de faire sa sélection.

Il s’agit d’une astuce que je dois absolument ajouter dans mes habitudes de travail dès maintenant.

Happy coding!