Skip to content

Blogs de Développeurs: Aggrégateur de Blogs d'Informatique sur .NET, Java, PHP, Ruby, Agile, Gestion de Projet

Forum Logiciel

Forum Logiciel : diffusion de connaissance et d’informations sur toutes les activités liées au développement d’applications informatiques en entreprise.

Agrégateur de flux

Le mois du JS : Project Bootstrapping

Xebia organise le Mois du JS. 4 meetups sur le langage JavaScript.Le mois du JS a commencé ce mardi 24 mai.

Le but est d’expliquer les diff√©rents aspects du langage JavaScript dans un langage Front-End via 4 TechEvents gratuits, programm√©s autour de la Conf√©rence Best of Web !

PROJECT BOOTSTRAPPING

Pour ce premier TechEvent, nous avons pu expliquer Npm, Webpack tout en faisant un détour par JSPM !

Nous vous proposons de retrouver en vidéo ces interventions :

Cette première session vous a convaincu ? Retrouvez les prochains événements :

 LES 4 FANTASTIQUES FRAMEWORKS FRONT

Le 31 mai 2016 à 19 h.

Vous commencez un projet front, mais les technologies évoluent vite ! Qu’est-ce qui est à la mode ? Que choisir, et surtout pourquoi ? On vous donne les réponses, venez découvrir les 4 Frameworks Fantastiques : ReactJS, Angular2, Ember2 et Aurelia.

Découvrez le programme ou inscrivez-vous dès maintenant !

QUALIT√Č ET PERFORMANCES JAVASCRIPT

Le 14 juin 2016 à 19h.

Le JavaScript d’aujourd’hui s’écrit avec les langages de demain. Code trop flou, trop copieux, surtout trop spaghetti. Venez consolider votre pile, transcompiler et monter une pyramide des tests avec nous !

Découvrez le programme ou inscrivez-vous dès maintenant !

LE CABINET DE CURIOSIT√Č JS

Le 21 juin 2016 à 19h.

JavaScript √† toutes les sauces et pour tous les go√Ľts, venez d√©couvrir le JS autrement : IoT, conteneurs, orient√© fonctionnel‚Ķ

Découvrez le programme ou inscrivez-vous dès maintenant !

Chaque TechEvent suivra d’un buffet campagnard.

Nous espérons vous voir au 156 boulevard Haussmann, 75008 PARIS (7e étage) :)

Catégories: Blog Société

Revue de Presse Xebia

revue-de-presse--xebia

La revue de presse hebdomadaire des technologies Big Data, DevOps et Web, architectures Java et mobilité dans des environnements agiles, proposée par Xebia.

Craftsmanship Martin Fowler : exercice de refactoring en Javascript http://www.gravatar.com/avatar/1e0ca9963bcd96ba434e5e4ffd972c2fhttp://blog.xebia.fr/author/aletaxin1http://twitter.com/modulomPar Antoine Le Taxin Pour faire du bon Javascript, il est important de comprendre les patterns de code et d‚Äô√©tudier les bonnes pratiques… Et elles sont tr√®s nombreuses dans ce langage, qui offre une grande libert√© et n‚Äôimpose pas une structure de code particuli√®re (un d√©faut pour beaucoup de d√©veloppeurs). Trop souvent cantonn√© √† de ¬ę¬†vrais¬†¬Ľ langages, l‚Äôexercice du refactoring est abord√© par Martin Fowler dans un article s‚Äôappuyant sur un exemple de boutique de vente de vid√©os en Javascript¬†! En partant d‚Äôun code simple, il d√©montre 4 voies possibles et explique les avantages et d√©fauts de chacun des refactoring. De grandes libert√©s impliquent de grandes responsabilit√©s, et c‚Äôest la v√ītre, en tant que d√©veloppeur JS, de suivre la voix du craftsmanship, types ou pas types. Front Toast : une grille CSS simple et efficace http://www.gravatar.com/avatar/d2d7263cc510ef945bf738083be3c4f8http://blog.xebia.fr/author/pantoinehttp://twitter.com/PhilippeAntoinePar Philippe Antoine

Toast est une grille CSS concise qui vous permet de d√©finir simplement les colonnes de vos pages responsives. On appr√©ciera la syntaxe concise au format BEM et la mise √† disposition d’une version SASS.

Jile : pour g√©rer les styles avec React en souplesse http://www.gravatar.com/avatar/1e0ca9963bcd96ba434e5e4ffd972c2fhttp://blog.xebia.fr/author/aletaxin1http://twitter.com/%40modulomPar Antoine Le Taxin Si vous faites du React, vous savez que g√©rer les styles est une discussion sans fin et qui n‚Äôa, pour le moment, pas trouv√© de r√©ponse id√©ale. Style inline ? Cela permet en effet de g√©rer la probl√©matique des scopes des styles et de b√©n√©ficier de la souplesse du Javascript. Cependant certaines syntaxes CSS ne sont pas disponibles : les pseudo-elements, les media-queries… Modules CSS ? Ils apportent une solution pour r√©gler le principal souci avec les composants : r√©duire le scope d‚Äôun module CSS √† un composant donn√©. Cependant il faut alors mixer CSS et JS et g√©rer le build du CSS. Jile propose de mixer les deux approches. Son ambition est de fournir aux styles g√©r√©s en JS, tout l‚Äô√©ventail des possibilit√©s de CSS : @media, @page, @keyframe, @font-face, les styles ‚Äėglobaux‚Äô (pour utiliser une m√™me class dans diff√©rents composants), autopr√©fixage, et quelques autres features… √Ä suivre¬†! Back Horizon : le backend temps r√©el pour vos applications JavaScript http://www.gravatar.com/avatar/d2d7263cc510ef945bf738083be3c4f8http://blog.xebia.fr/author/pantoinehttp://twitter.com/PhilippeAntoinePar Philippe Antoine

horizon-logoHorizon est un backend temps r√©el pour vos applications JavaScript. Les backends temps-r√©el sont √† la mode, on pensera aux r√©centes annonces de Google autour de Firebase. Horizon propose une alternative open source bas√©e sur la technologie de RethinkDB. On retrouvera les principaux cas d’utilisations d’un backend (Authentification, gestion des utilisateurs et des groupes, collections), mais aussi une cli pour d√©marrer rapidement ses projets.¬†Une version beta en mode cloud est disponible √† travers un formulaire.

Data  Confluent annonce la release de Kafka 0.10 http://www.gravatar.com/avatar/88c5baa59087dfc25e2581c332069ca6http://blog.xebia.fr/author/slequeuxhttp://twitter.com/slequeuxPar Sylvain Lequeux

Kafka est une plateforme s√©curis√©e d’√©changes de donn√©es. Confluent vient d’annoncer la sortie de la version 0.10 de Kafka coupl√©e √† la version 3.0 de la plateforme Confluent. Cette version 0.10 propose quelques nouveaut√©s importantes, notamment l’API Kafka Streams. Cette API permet la transformation de topic √† topic sans avoir √† utiliser de framework de calcul distribu√© complexe de type Spark, Storm ou Flink.¬†Nous avions test√© cette version pendant notre Hand’s on lors de Devoxx 2016 et force est de constater que Kafka Stream semble prometteur.

On notera √©galement l’ajout d’un timestamp dans les m√©tadonn√©es des messages (ce qui offre de nouvelles possibilit√©s de requ√™tes), des fonctionnalit√©s de Rack Awareness afin de garantir la disposition g√©ographique des r√©pliquas, et diverses am√©liorations commenc√©es en 0.9 concernant la s√©curit√© ou encore Kafka Connect.

Catégories: Blog Société

It’s a wrap! Highlights from the Valiantys Enterprise Day London 2016

Le blog de Valiantys - mer, 05/25/2016 - 15:30

Last week over 100 Valiantys customers, partners and members of the Atlassian ecosystem joined forces in central London for the Valiantys London Enterprise Day 2016. The modus operandi? To share the latest news and tips from across the Atlassian suite, with demos from leading add-on vendors, industry insights and first-hand accounts of Atlassian implementations from our very own customers. Everything ...

The post It’s a wrap! Highlights from the Valiantys Enterprise Day London 2016 appeared first on Valiantys Blog - Atlassian Expert.

Catégories: Blog Société

Agile : La fin de la hiérarchie n’est pas celle du manageur (3/3)

√Ä travers cette s√©rie de trois articles, nous vous proposons une r√©flexion sur ces nouvelles organisations plates, « lib√©r√©es » ou dites de « bonheur au travail » qui font fit de la hi√©rarchie et r√©inventent le r√īle du manageur. Dans les pr√©c√©dents articles, nous avons vu les raisons qui am√®nent certaines entreprises √† vouloir faire dispara√ģtre la hi√©rarchie et les nouveaux besoins qui √©mergent au sein de ces organisations sans « chef ». Pour conclure, voici pourquoi il serait pr√©matur√© d’en d√©duire qu’il s’agit l√† de la fin du manageur.

Le nouveau r√īle du manageur Les sources de l’incompr√©hension

Comme nous l’avons vu pr√©c√©demment, supprimer la hi√©rarchie n’est pas une mince affaire. Alors que le cadre est plus diffus et que les rep√®res s’effacent, il faut un capitaine au navire. Un capitaine non pas pour diriger, mais pour inspirer √† aller dans une m√™me direction. Comme le disait Antoine de Saint-Exup√©ry:

 

« Si tu veux construire un bateau, ne rassemble pas tes hommes et femmes pour leur donner des ordres, pour expliquer chaque d√©tail, pour leur dire o√Ļ trouver chaque chose… Si tu veux construire un bateau, fais na√ģtre dans le cŇďur de tes hommes et femmes le d√©sir de la mer. »

 

Ce r√īle de capitaine qui inspire plut√īt qu’il ne dirige peut √©videmment √™tre port√© par le manageur. Si l’organisation n’a plus besoin de la structure hi√©rarchique traditionnellement symbolis√©e par le manageur, si elle n’a plus besoin de son r√īle « command and control », elle ne peut pas se dispenser de son r√īle de leader. Le manageur ne dispara√ģt pas, c’est son r√īle qui √©volue.

Le-manager-est-un-capitaine-qui-inspire.png

Le manageur est un capitaine qui inspire

Si nous avons pu trop h√Ętivement conclure que la disparition de la hi√©rarchie signifiait celle du manageur, c’est notamment le fait de quelques communications provocantes et sans doute un brin d√©magogiques.

Celle de Gary Hamel, dont nous parlions dans notre premier article, en est sans doute l’exemple le plus frappant. Il faut avouer qu’avec un article intitul√©¬†First Let’s Fire All Managers (traduit ici en:¬†Commen√ßons par virer tous les manageurs), nous serons pardonn√©s du raccourci.

Pour autant, cet article publi√© dans la Harvard Business Review de¬†d√©cembre 2011¬†parle surtout des probl√®mes n√©s des structures hi√©rarchiques. Pr√©cis√©ment les m√™mes difficult√©s que nous avons expos√©es dans notre partie « La fin de la hi√©rarchie« . Il s’attarde aussi particuli√®rement sur le mod√®le organisationnel surprenant de Morning Star. Aujourd’hui, Morning Star est un leader mondial de la transformation de tomates. Ils traitent 25 √† 30% des tomates aux √Čtats-Unis. Tout cela dans une absence totale de hi√©rarchie ou plus justement gr√Ęce √† des √©quipes capables de fonctionner avec une grande autonomie.

De l√† nous avons sans doute √©t√© trop h√Ętifs √† en conclure que les manageurs n’√©taient plus utiles. Mais si leur pouvoir de d√©cision absolue dispara√ģt, il reste une certaine reconnaissance de l’exp√©rience, de la capacit√© de conseils de certains ou encore du pouvoir de facilitation d’un « manageur » (m√™me chez Morning Star). Il ne s’agit donc pas tant d’une disparition que d’une profonde transformation.

Cette incompr√©hension est aussi question de vocabulaire et d’image.

De vocabulaire, car le terme de manageur est devenu un immense fourre-tout qui englobe les notions les plus diverses. Stricto sensu le terme anglais de manager serait issu du vieux terme fran√ßais « mesnager » qui signifie « tenir en main les r√™nes d’un cheval » et qui par extension a signifi√© tenir les r√™nes de l’organisation (source Wikip√©dia: https://fr.wikipedia.org/wiki/Management). On parle donc essentiellement de commandement et de contr√īle; une fonction qui, il est vrai, dispara√ģt dans les organisations plates.

Mais c’est aussi une probl√©matique d’image, car l’inconscient collectif a fait du manageur une sorte de superh√©ros en charge de tous les probl√®mes de l’entreprise. Le manageur planifie,¬†d√©cide, organise, dirige, d√©veloppe, transforme, inspire, contr√īle et r√©compense. Le poste de manageur, c’est le point de passage oblig√© pour √©voluer dans sa carri√®re. Devenir manageur c’est avoir r√©ussi.

Le r√īle reste, mais la fonction dispara√ģt

L√†, o√Ļ il y a changement c’est que dans une organisation sans hi√©rarchie l’ensemble de ces t√Ęches sont distribu√©es. Il n’y a plus une fonction qui porte l’ensemble du monde sur ses √©paules, mais un r√īle qui peut √™tre endoss√© par plusieurs de mani√®re limit√©e dans le temps ou sur des p√©rim√®tres pr√©d√©finis. Il y a aussi une v√©ritable symbiose entre responsabilit√© et redevabilit√© de mani√®re √† sortir du responsable, mais pas coupable derri√®re lequel on peut s’abriter parfois. Enfin c’est aussi la reconnaissance de la diff√©rence entre management et leadership. Comme le rapportent John Mackey et Rajendra Sisodia dans Conscious Capitalism:

 

« Leadership and management are not synonymous. Leadership is mostly about change and transformation. Management is about efficiency and implementation. »

 

Le management, c’est l’efficience et l’impl√©mentation. Dans une organisation plate, il rel√®ve donc de la responsabilit√© et de la redevabilit√© de chacun. Mais si le leadership s’attache au changement et √† la transformation, cela devient un r√īle bien particulier. C’est une action globale sur l’entreprise qui a besoin d’individus identifi√©s pour la porter.

Leadership-is-about-change-and-transformation.png

Le leadership c’est le changement et la transformation… enfin peut-√™tre pas celle-l√†!

Le manageur porte la vision et cr√©e l’alignement

Ces leaders dont l’organisation a besoin peuvent √™tre de nouvelles personnes, mais sont aussi potentiellement les anciens manageurs de l’entreprise. Ce qui √©volue, c’est que quand autrefois les manageurs √©tablissaient une vision plus impos√©e que partag√©e et s’attardaient essentiellement √† l’impl√©mentation, ils ne sont aujourd’hui l√©gitimes que parce qu’ils suscitent l’adh√©sion et portent le changement. Ce faisant, ils cr√©ent naturellement l’alignement sans avoir recours au contr√īle et en pr√©servant ainsi l’intelligence collective. C’est l√† toute leur valeur.

D√©finir cette vision qui englobe et emm√®ne l’organisation est une qu√™te du sens qui se fait √† plusieurs niveaux. La premi√®re √©tape, sans doute la plus importante, est la d√©finition de la raison d’√™tre de l’entreprise:

 

« Qu’est-ce qu’une raison d’√™tre? Pour le dire simplement c’est une d√©claration ferme √† propos de la diff√©rence que vous essayez d’accomplir. Si vous avez une raison d’√™tre et que vous pouvez l’articuler avec clart√© et passion, tout fait sens, tout devient fluide. Vous √™tes heureux de ce que vous faites et savez clairement comment y parvenir. Plus vous avez de parties prenantes, plus il est important d’avoir une raison d’√™tre simple et clairement d√©finie aupr√®s de laquelle chacun et chaque chose peut s’identifier et un ensemble de valeurs fondatrices qui d√©finissent la mani√®re dont les gens interagissent les uns avec les autres. » – (Roy Spence, Haley Rushing – It’s not what you sell, it’s what you stand for)

 

Que ce soit des Leaders ou des Manageurs, il est essentiel d’avoir des personnes passionn√©es, capables de cr√©er cette vision et de « susciter le d√©sir de la mer dans le coeur des hommes ». Par leur charisme et leur √©nergie, ces personnes seront capables de f√©d√©rer l’organisation autour de la d√©finition de cette vision y compris √† travers des processus parfois lents et exigeants. Lorsque les dirigeants d’Harley-Davidson s’engagent sur le chemin de la lib√©ration en 1987, ils entament une d√©marche qui durera plus de 7 ans! (More than a motorcycle: the leadership journey at Harley-Davidson)

Pour ce qui est de la forme que peut prendre cette raison d’√™tre ou de la mani√®re de s’y prendre, il n’y a pas de recette unique. Chaque entreprise devra trouver la sienne.¬†John Mackey et Rajendra Sisodia proposent toutefois de regrouper les raisons d’√™tre en quatre grandes cat√©gories. Ce ne sont peut-√™tre pas les seules possibles, mais elles peuvent vous servir d’inspiration:

  • The Good (Le Bon): Le service des autres, l’am√©lioration de la sant√©, de l’√©ducation, des communications ou de la qualit√© de la vie
  • The True ¬†(Le Vrai): Une qu√™te qui vise √† d√©couvrir de nouveaux savoirs et √† √©largir la connaissance humaine
  • The Beautiful (Le Beau): Une forme de recherche de l’excellence et de cr√©ation de ce qui est beau
  • The Heroic Courage (Le Courage H√©ro√Įque) : Le courage √† faire ce qui est juste et la volont√© de changer le monde.

Il s’agit bien ici de d√©finir une forme de vision transcendante. C’est la Vision avec un grand V au service de laquelle se met l’organisation. Malheureusement cette vision a souvent √©t√© d√©voy√©e au profit de messages convenus et consensuels qui n’ont d’autre vocation que de redorer l’image de marque de l’entreprise aupr√®s de l’ext√©rieur. En cela, il faut faire attention √† ce que cela ne soit pas un simple discours de fa√ßade, une phrase-choc que nous affichons sur notre site web. C’est l√† l’expression r√©elle de la finalit√© de l’entreprise (son purpose comme disent les anglais) La vision n’est valable que si l’ensemble des acteurs de l’entreprise peuvent s’y identifier. Si cette vision ne restait qu’apparence, elle ne pourrait pas servir son r√īle d’alignement et perdrait toute valeur. Le manageur-leader est alors le garant de cette vision, il en est √† la fois le d√©fenseur, le promoteur et l’arbitre. Il sert de r√©f√©rent en cas de doutes.

Si le manageur est l√† pour d√©finir et communiquer cette vision d’entreprise, ce n’est pas sa seule mission. Il a aussi un r√īle √† jouer dans l’expression d’une vision quotidienne. La qu√™te du sens se fait √† tous les niveaux et il ne faudrait pas croire que donner du sens √† une action m√™me banale est inutile. Ainsi comme le rapporte¬†une √©tude de la Harvard Business School¬†le fait d’instaurer un lien visuel entre ceux qui pr√©parent la nourriture au sein d’une caf√©t√©ria et ceux qui la consomment est d√©j√† cr√©ateur de valeur. Ce simple artefact suffit en effet √† ce que la qualit√© des pr√©parations et la satisfaction des consommateurs s’am√©liorent.

Le manageur cultive un cadre propice √† l’engagement

La mission du manageur ne s’arr√™te pas √† la d√©finition de cette vision. Dans une entreprise sans hi√©rarchie, il peut √™tre difficile d’obtenir l’engagement des employ√©s. Certes, la vision joue un r√īle, mais elle n’est pas le seul ressort de la motivation. Cette motivation, il faut la travailler et bien qu’il soit illusoire de vouloir motiver les gens, nous pouvons n√©anmoins cr√©er le cadre propice √† leur investissement. C’est l√† encore une responsabilit√© toute d√©sign√©e du manageur.

Jesper Isaksen est l’auteur d’une √©tude intitul√©e Constructing meaning despite the drudgery of repetitive work.¬†Comme le rapporte Sandrine Hassler Vinay, il y d√©termine 8 √©l√©ments qui permettent de donner du sens au travail¬†et sur lesquels¬†le manageur peut agir. On peut les regrouper en quatre cat√©gories. Trois n√©cessaires √† la motivation intrins√®que pr√©sent√©e par Daniel Pink: le sens, l’autonomie et la ma√ģtrise. Une quatri√®me n√©cessaire au bonheur, la dimension sociale:

  • Sens
    • Pouvoir s’identifier √† son travail (ce qui n√©cessite de rendre claire la Vision avec un grand V qui inspire les individus et √† laquelle on puisse s’identifier.)
    • Avoir le sentiment de pouvoir contribuer √† l’accomplissement d’un projet (il s’agit de percevoir¬†l’impact de notre travail sur le plus grand ensemble.)
    • Avoir un sentiment de responsabilit√© et de fiert√© (ce qui rel√®ve un peu de toutes les dimensions, la fiert√© pouvant relever de l’importance du sens de nos actions, de notre capacit√© √† avoir atteint une ma√ģtrise sup√©rieure ou encore de la reconnaissance sociale du travail accompli. Le sentiment de responsabilit√© quant √† lui relevant aussi clairement de l’autonomie.)
  • Autonomie
    • Participer √† l’am√©lioration de l’efficacit√© des processus et des conditions de travail (c‚Äôest une forme d’autonomie qui rend le contr√īle sur son travail √† l’individu.)
    • Avoir un sentiment d’autonomie et de libert√©
  • Ma√ģtrise
    • Pouvoir apprendre et avoir du plaisir √† accomplir son travail (autrement dit, le fait de pouvoir d√©velopper ses comp√©tences et son savoir-faire.)
  • Social
    • D√©velopper de bonnes relations avec les autres (un des secrets du bonheur comme nous l’avons vu dans notre article pr√©c√©dent avec¬†l’√©tude la plus longue sur le bonheur.)
    • Percevoir que le travail accompli est important pour les autres (ce qui donne du sens tout en participant √† la dimension sociale du travail.)

Nous le voyons, il ne s’agit pas d’√©l√©ments qui rel√®vent seulement de l’individu, mais d’√©l√©ments pour lesquels le groupe peut avoir un r√īle √† jouer. En reconnaissant leur importance, en s’attachant √† les rendre visibles, en les pr√©servant ou en les d√©veloppant par le feedback, le manageur a donc une place particuli√®re dans la motivation intrins√®que des personnes.

Le manageur permet la réalisation de nos potentiels

Au-del√† de ce travail sur le sens, le manageur a aussi une carte √† jouer dans la cr√©ation des conditions pour que les gens donnent le meilleur d’eux-m√™mes. Comme le rapporte Clayton M. Christensen dans The Innovator’s Dilemma:

 

« Si un manageur d√©terminait qu’un employ√© √©tait incapable de r√©ussir dans une t√Ęche, il ou elle trouverait soit quelqu’un d’autre pour faire le travail ou formerait attentivement l’employ√© pour qu’il soit capable de r√©ussir. La formation fonctionne souvent, car les individus peuvent devenir comp√©tents dans une multitude de t√Ęches. En d√©pit des croyances cr√©√©es par les programmes populaires de change-management et de reingineering, les processus ne sont pas autant flexibles ou « entrainables » que le sont les ressources – √† plus forte raison les valeurs. »

 

Le manageur nous e-le-ve vers de nouvelles hauteurs

Le manageur nous élève vers de nouvelles hauteurs

Cette capacit√© d’une organisation apprenante comme aime √† l’appeler Peter Senge dans La cinqui√®me discipline est une des diff√©rences essentielles entre l’organisation hi√©rarchique classique bas√©e sur des processus et l’organisation plate qui s’appuie sur le savoir des individus. Si nous ne cherchons pas √† d√©velopper les comp√©tences des personnes, si nous ne cr√©ons pas le cadre pour leur permettre de progresser en¬†ma√ģtrise, nous ne pouvons pas pr√©tendre obtenir d’eux la motivation intrins√®que dont parle Pink.

Plus concr√®tement, le manageur de ces organisations devra d√©velopper les √©changes et la communication qui sont la base de l’innovation et de l’apprentissage. Il s’agit de mettre en oeuvre les comp√©tences que l’on trouve au stade 4 et 5 du Tribal Leadership o√Ļ le leader cherche √† mettre en relation des personnes non pas pour son b√©n√©fice personnel, mais pour le b√©n√©fice du groupe. Le manageur devient alors facilitateur. Il connecte les personnes pour qu’elles expriment leur plein potentiel.

Il a enfin un r√īle difficile √† jouer d’alignement entre la strat√©gie de l’entreprise, ses valeurs et sa culture. Il doit ainsi s’assurer que la strat√©gie mise en place soit au service de la vision d’entreprise, il doit vivre, transmettre et pr√©server les valeurs qu’elle cherche √† exprimer et il doit savoir s’appuyer sur la culture qu’elle manifeste √† travers ses histoires, ses mythes ou simplement la fa√ßon dont les choses sont faites. On a attribu√© √† Peter Drucker cette phrase c√©l√®bre « Culture eats strategy for breakfast ». Mais il ne s’agit pas tant de savoir si la culture est plus importante que la strat√©gie, que d’avoir congruence entre les deux comme l’explique Ken Favaro dans cet article:¬†Strategy or culture: Which is more important?¬†Si vous avez une culture de la parcimonie, mais que vous cherchez √† vous d√©velopper dans les domaines du luxe, il y a en effet bien peu de chances que vous r√©ussissiez. Si le manageur ne travaille pas sans cesse √† cet alignement entre la pens√©e et les actes de l’entreprise, l’√©quipe ne peut pas lib√©rer son plein potentiel.

Un manageur reconnu par ses pairs

Si le manageur √©volue plus qu’il ne disparait, s’il devient essentiel pour assurer l’alignement, d√©finir le sens et faire progresser les individus, la fa√ßon dont il exerce son r√īle et les comp√©tences sur lesquelles il doit s’appuyer changent elles aussi.

Tout d’abord, le r√īle du manageur n’est plus li√© √† une personne et √† un poste.

Dans une organisation sans hi√©rarchie, nous ne sommes plus nomm√©s, mais reconnus comme manageur. C’est la reconnaissance de nos pairs qui nous donne notre l√©gitimit√© de manager. Ce n’est plus une question de pouvoir, mais de leadership. Comme le dit Sylvaine Pascual dans un article sur le leadership de soi:

 

Le pouvoir va du haut vers le bas, il s’exprime de mani√®re hi√©rarchique. Le leadership va du bas vers le haut: on est reconnu leader par son groupe.

 

Le leadership va du bas vers le haut

Le leadership va du bas vers le haut : on est reconnu leader par son groupe

Pour les organisations ayant entam√© ce chemin et ayant encore une forme de hi√©rarchie formelle (bien qu’avec un nombre d’√©tages extr√™mement r√©duit), le manageur est souvent √©lu et/ou not√© par ses pairs. C’est le cas chez FAVI, Semco ou HCL Technology entre autres. La position de manageur n’a alors plus rien de d√©finitive. Chez Semco les cadres sont √©valu√©s (et m√™me recrut√©s) par les employ√©s. S’ils n’atteignent pas un seuil de satisfaction suffisant, ils doivent laisser leur place.

Lorsque la structure est encore moins formelle, chacun devient alors manageur. Lorsque chacun devient autonome et peut prendre des d√©cisions alors chacun est aussi responsable et redevable de son travail. Chez Morning Star, l’ensemble de ces responsabilit√©s et redevabilit√©s est r√©gi par une C.L.O.U (Colleague Letter Of Understanding), c’est-√†-dire un document qui vient d√©finir l’engagement de la personne envers ses pairs. En Holacracy¬†c’est le but des « r√īles » qui comportent syst√©matiquement une raison d’√™tre, un ou des domaines et un ensemble de redevabilit√©s. En rendant visibles ces engagements, Morning Star ou l’Holacracy s’assurent √† la fois de leur r√©alisation et de la transparence n√©cessaire √† leur bonne ex√©cution et √©volution dans le temps. Chacun dans l’organisation sait en effet aupr√®s de qui s’adresser sur un sujet donn√© ou peut demander √† faire √©voluer un r√īle lorsque le besoin s’en ressent.

Si le r√īle de manageur n’est plus li√© √† la personne, il n’a plus non plus n√©cessairement la m√™me port√©e que dans le pass√©. Quand le manageur traditionnel est responsable de tout un d√©partement, un manageur dans une organisation plate n’intervient parfois que sur un domaine tr√®s limit√©. Le manageur √©tant choisi, il est reconnu pour son savoir ou ses comp√©tences. Nous pouvons ainsi consulter quelqu’un pour obtenir son avis sur un sujet sur lequel nous reconnaissons sa valeur tout en consultant une tout autre personne sur une autre partie de ce m√™me sujet.

Ce qui nous am√®ne certainement au changement le plus important du r√īle de manageur √† savoir l’absence de pouvoir de d√©cision finale. Non pas qu’il ne puisse pas prendre de d√©cision, mais celles-ci n’ont pas plus de poids dans l’organisation que celles de n’importe qui d’autre. Le r√īle est avant tout consultatif et la d√©cision peut facilement √™tre remise en cause si elle ne sert pas l’organisation. Le monde du d√©veloppement logiciel Open Source en est d’ailleurs un remarquable repr√©sentant. En cas de dissension, rien n’interdit √† un d√©veloppeur de r√©aliser un fork. S’il est capable d’embarquer suffisamment de contributeurs dans sa vision, celle-ci peut m√™me devenir la nouvelle norme. Il n’est d’ailleurs pas rare de voir certains de ses forks r√©int√©gr√©s par la suite une fois leur valeur reconnue.

Manager des hommes plus que des t√Ęches

Au-del√† de cette distinction entre r√īle et personne, le manageur √©volue aussi dans les t√Ęches qu’il accomplit. Quoi que nous en disions, il faut bien reconna√ģtre que le plus souvent un manageur traditionnel g√®re avant tout des t√Ęches plus que des hommes. En y r√©fl√©chissant, c’est fort compr√©hensible, la t√Ęche ayant cet avantage sur la personne qu’elle n’√©prouve pas d’√©motions. Sans √©tats d’√Ęme, c’est tellement plus simple √† manager ! Ainsi, dans les plannings les personnes ne sont plus que des hommes/jour, la valorisation des personnes un formulaire annuel, le d√©veloppement des comp√©tences un plan RH standardis√© (ah les fameuses formations prise de parole en public ou Microsoft Office!).

Manager les hommes pour les aider √† progresser c’est √† la fois plus riche et… tellement angoissant! En effet, le plus souvent nous n’avons pas √©t√© form√©s √† cela. Le leadership demande de l’intelligence √©motionnelle. Il met l’accent sur de nouvelles comp√©tences, ce qu’on appelle les soft skills, qu’il n’est pas ais√© de mettre en oeuvre. Comme le dit Manfred Kets de Vries professeur en leadership √† l’INSEAD dans un article intitul√© Evolving leadership in the digital age, le leadership va m√™me au-del√† de comp√©tences personnelles puisqu’il doit √™tre distribu√© au sein de l’organisation. Le bon leader est celui qui sait s’appuyer sur le pouvoir des r√©seaux pour les organiser, les d√©velopper et les motiver.

Le nouveau manageur est ainsi surtout un facilitateur. Il n’est plus ce leader charismatique dont on nous a tant vant√© les m√©rites. Il va au-del√†. C’est un Leader-leader comme le dit le L.¬†David Marquet, ancien commandant de sous-marin nucl√©aire dans Turn the ship around. Il ne cherche plus tant √† d√©velopper son aura qu’√† faire √©merger de nouveaux leaders. Pour cela, il cherche constamment √† placer l’autre dans une position de leader. Il le met dans une position de confiance, l’aide √† prendre des d√©cisions parfois avec de simples artifices. L. David Marquet, nous rapporte d’ailleurs comment il a transform√© son sous-marin en demandant √† ses membres d’√©quipage de s’exprimer en commen√ßant par annoncer ce qu’ils avaient l’intention de faire (« I intend to« ). Cela peut sembler futile, voire inutile. Pourtant le choix des mots n’est pas sans cons√©quence: il peut √™tre d√©cisif pour aider √† la progression de l’√©quipe (Why motivating others starts with using the right language).

Cette √©volution vers ce nouveau r√īle de manageur est aussi et avant tout un cheminement personnel. La mise en oeuvre de ces soft skills va de pair avec une √©volution de l’individu √† travers des √©tapes de d√©veloppement personnel comme celles propos√©es par la Spirale dynamique. Une √©volution rendue d’autant plus difficile que les niveaux de conscience sup√©rieurs ne sont pas accessibles (et compr√©hensibles) pour l’individu tant qu’il ne les a pas atteints. Si le¬†manageur veut pouvoir jouer ce r√īle de chef d’orchestre qui emm√®ne et m√™me aller encore plus loin en devenant un simple membre d’un jazz band qui improvise tout en restant musical, il doit d√©velopper une personnalit√© en accord. En simplifiant grandement les diverses √©tapes (ou M√®mes) de la th√©orie de la spirale dynamique, on comprend bien que le m√®me rouge o√Ļ le pouvoir s’exprime par la force, le bleu qui est dogmatique ou m√™me le orange bas√© sur la comp√©tition ne sont pas les meilleurs m√®mes pour agir dans un groupe autonome. Pour permettre √† une organisation complexe de bien s’exprimer, le manageur doit atteindre le m√®me vert (avec la notion de service pour la communaut√©) ou mieux le m√®me turquoise (avec une pens√©e holistique et syst√©mique). Dans une organisation qui fonctionne en r√©seaux et valorise le groupe plus que l’individu, il y a l√† un savoir-√™tre essentiel √† la mise en oeuvre de l’intelligence collective.

Les organisations de demain

√Ä l’heure de la conclusion, c’est une √©vidence, non seulement la fin de la hi√©rarchie ne signifie pas celle du manageur, mais c’est m√™me son renouveau. D√©barrass√© de sa fonction hi√©rarchique de command and control, le manageur √©volue et peut enfin prendre la pleine dimension de son r√īle. Le manageur a mut√©, sa mission a chang√© sans m√™me qu’il ne s’en rende compte. Et le changement est profond puisqu‚Äôil ne s’agit pas seulement d’√©voluer vers des postures de leadership, mais bien de trouver les cl√©s pour lib√©rer les initiatives et permettre la cr√©ation de nouveaux leaders. Il ne s’agit plus de manager les chiffres, mais de manager l’humain.

Aujourd’hui, ces organisations sans chef restent de v√©ritables OVNIs. Elles suscitent la curiosit√©, font parler d’elles dans les m√©dias, s√©duisent m√™me, mais peu les ont r√©ellement vues √† l’oeuvre. Pour autant, elles pourraient bien demain devenir la norme.¬†Comme l’a dit Goethe:

 

« Nous sommes davantage les enfants de notre √©poque que ceux de nos parents. »

 

Et justement, notre √©poque a compl√®tement r√©volutionn√© nos modes de fonctionnement. L’instantan√©it√© de la communication, la culture des r√©seaux, l’innovation galopante, autant d’√©l√©ments qui marquent notre temps.¬†La g√©n√©ration Z nous envahit et c’est une g√©n√©ration d’entrepreneurs. Elle consomme l’entreprise comme n’importe quel bien de consommation courante et ne se voit pas fonctionner sans autonomie. Pour elle la notion de hi√©rarchie est d√©j√† r√©volue. C’est aussi une g√©n√©ration qui √©volue dans un univers de complexit√© jamais atteint alors et qui, de ce fait, a toutes les cl√©s n√©cessaires pour le succ√®s de ces organisations plates.

Pour celui qui n’est pas digital native, l’√©volution n’est pas sans heurts. Comme le montre l’article de Arnaud Bracchetti, √ätre manageur dans une entreprise agile,¬†l’acquisition des comp√©tences du manageur Agile ne se fait pas sans difficult√©. Ce changement peut faire peur, on peut le voir comme une fatalit√©, on peut se d√©courager face √† son ampleur. Si l’on en croit John Kotter, ce changement ne serait m√™me pas possible sans sentiment d’urgence. Pour autant, le changement en soi n’est ni bon, ni mauvais, il est. Et lorsque Peter Senge, demande aux participants de ses conf√©rences combien d’entre eux croient que les individus et les organisations ne changent qu’en cas de crise, une vaste majorit√© l√®ve la main. Mais s’il les incite √† imaginer un monde parfait, sur tous les plans et leur demande ce qu’ils feraient alors, la r√©ponse est g√©n√©rale:

 

« Nous tenterions de changer, de cr√©er quelque chose de nouveau! »

 

 

 

L’article aurait pu s’arr√™ter ici (en fait, cela a m√™me longtemps √©t√© le cas). Et puis comme les films r√©compensent les plus cin√©philes d’entre nous avec des images post g√©n√©rique qui donnent souvent un nouvel √©clairage sur l’oeuvre, je vous sugg√®re une derni√®re r√©flexion.

Certains des concepts que nous avons abord√©s n’ont en effet rien de r√©cent. Les travaux sur la motivation intrins√®que remontent aux ann√©es 60. D’autres id√©es sont encore plus anciennes. D√®s 1924 dans Creative Experience, Mary Parker Follett remettait en cause le leadership comme exercice du pouvoir et valorisait la cr√©ation de leaders, la diversit√© des points de vue et les communaut√©s autonomes. Malgr√© cela, le mod√®le pr√©valent aujourd’hui reste celui du b√Ęton et de la carotte. L’organisation reste orient√©e command and control. Apr√®s toutes ces ann√©es, nous pouvons nous demander pourquoi le changement n’est encore qu’√©mergent? Pourquoi donc est-il si difficile d’√©voluer en l’absence de sentiment d’urgence?

Et si l’on cherche √† trouver la cause racine de ce probl√®me, Gary Hamel nous propose dans La fin du management¬†l’√©clairage suivant:

 

« Inutile de dire que si vous encouragez vos coll√®gues √† continuer √† se demander « pourquoi », ils finiront par atteindre la vraie raison pour laquelle il faut une crise pour provoquer de grands changements: trop d’autorit√© a √©t√© investie en trop peu de personnes. Quand le pouvoir est concentr√© en haut, quelques seniors ex√©cutifs peuvent retenir la facilit√© de l’organisation √† changer en otage de leur propre volont√© ou capacit√© √† changer. Les anciens de la direction √©tablissent le business model actuel, ou sont promus pour le perfectionner. Leurs carri√®res, comp√©tences et mod√®les mentaux sont inextricablement li√©s au statu quo et ils peuvent difficilement imaginer d’alternatives. Rien d’√©tonnant √† ce qu’ils ignorent ou n√©gligent les informations qui r√©pandent le doute sur leur strat√©gie actuelle. »

 

Trop d’autorit√© en trop peu de personnes… C’est sans doute l√† tout le noeud du probl√®me.¬†Pour s’exprimer, l’intelligence collective a besoin de diversit√©, de d√©centralisation, d’ind√©pendance, mais aussi de coordination.¬†Il est temps de penser l’entreprise et le manageur autrement…

 

Bibliographie:

  1. La fin du management – Gary Hamel, Bill Breen
  2. Reinventing Organizations – Frederic Laloux
  3. Turn the ship around – L. David Marquet
  4. La sagesse des foules – James Surowiecki
  5. La vérité sur ce qui nous motive РDan Pink
  6. Conscious Capitalism – John Mackey, Raj Sisodia
  7. Liberté & Cie РIsaac Getz, Brian Carney
  8. La belle histoire de Favi РJean-François Zobrist
  9. Maverick – Ricardo Semler
  10. Delivering Happiness – Tony Hsieh
  11. La Spirale Dynamique – Fabien Chabreuil
  12. Complexity the emerging science at the edge of order and chaos – M Mitchell Waldrop
  13. Employees First, Customers Second – Vineet Nayar
  14. La Révolution Holacracy РBrian J. Robertson
  15. Tribal Leadership – Dave Logan, John King, Halee Fischer-Wright
  16. The Innovator’s Dilemma – Clayton M. Christensen
  17. La Cinquième Discipline РPeter Senge
  18. More than a motorcycle – Rich Teerlink, Lee Ozley
  19. Let my people go surfing – Yvon Chouinard
  20. The Peaceable Kingdom – Stan Richards
  21. Joy, Inc. – Richard Sheridan
  22. Beyond Empowerment – the age of the self-managed organization – Doug Kirkpatrick
  23. Petite poucette – Michel Serres
Catégories: Blog Société

[Devoxx 2016] Documentation vivante

Ecrire de la documentation est souvent un calvaire, en plus d‚Äô√™tre tr√®s souvent inutile car elle finira t√īt ou tard par ne plus √™tre √† jour. D‚Äôo√Ļ le sentiment de perdre du temps. La seule documentation v√©ritablement √† jour et pr√©cise, c‚Äôest le code source lui-m√™me, mais il n‚Äôest pas toujours trivial pour un non-d√©veloppeur […]
Catégories: Blog Société

AngularFire2

Blog d’Ippon Technologies - mar, 05/24/2016 - 15:45

AngularFire2 est une bibliothèque permettant de manipuler facilement le framework Angular 2 et la plateforme Firebase. La première version de AngularFire permettait de faire le lien entre Firebase et Angular 1. Nous allons dans cet article présenter quelques unes des fonctionnalités de AngularFire2. Il est quand même à noter que AngularFire2 est encore en version beta aujourd’hui.

Firebase

Firebase est une solution backend disposant de trois services majeurs pour permettre aux d√©veloppeurs de cr√©er des applications c√īt√© client :

  1. Realtime database : Firebase met à disposition une base de données NoSQL dans le cloud. Les données sont stockées au format JSON et sont synchronisées en temps direct avec les clients connectés.
  2. Authentication : Firebase offre la possibilité de facilement authentifier des utilisateurs par le biais de leurs comptes Facebook, Twitter, GitHub, Google ou encore via un mail et un mot de passe.
  3. Hosting : Firebase permet de déployer son application avec une simple ligne de commande.

Pour disposer d’un compte sur Firebase, on peut s’inscrire ou bien se connecter avec son compte Gmail sur la plateforme. La version gratuite est limit√©e √† un espace de stockage de 1¬†Go¬†et un syst√®me d’abonnement payant est propos√© pour disposer de plus d’espace. Une fois votre compte cr√©√©, vous disposez de deux URLs de type :

  • https://<IDENTIFIANT_UNIQUE>.firebaseio.com qui vous permet d’acc√©der √† une interface d’administration pour g√©rer votre base de donn√©es, la s√©curit√©, les authentifications, le d√©ploiement …
  • https://<IDENTIFIANT_UNIQUE>.firebaseapp.com qui sera l’URL sur laquelle vous pourrez d√©ployer votre application.
Angular 2

Angular 2 est la future version d’AngularJS. Angular 2 est passé en version release candidate (2.0.0-rc.1) le 2 mai en apportant un certain nombre de modifications par rapport aux versions beta. Des modifications dans les imports et dans le routing sont les principales nouveautés (pour en savoir plus).

Angular-CLI

Avant de commencer à utiliser AngularFire2, il est préconisé d’installer Angular-CLI. En effet, celui-ci va vous permettre de générer facilement un projet Angular 2 puis des Components, Directives, Pipes et autres Services pour votre application. On installe Angular-CLI via npm.

> npm install -g angular-cli

Puis on peut générer un nouveau projet.

> ng new angularfire2-ippon

Ainsi, le squelette de notre application Angular 2 est créé.

Exemple

Nous allons créer un projet Angular 2 via Angular-CLI et installer les dépendances vers AngularFire2 et Firebase.

> ng new angularfire2-ippon

> npm install angularfire2 firebase --save

Pour avoir plus d’informations sur la mise en place d’un projet Angular 2 utilisant AngularFire2, la documentation se trouve ici.

On peut maintenant commencer à modifier les fichiers générés. Tout d’abord nous allons modifier le fichier main.ts dans lequel nous allons définir le lien vers notre Firebase, lequel est défini par une URL unique.

import { bootstrap } from '@angular/platform-browser-dynamic';
import { Angularfire2IpponAppComponent, environment } from './app/';
import { FIREBASE_PROVIDERS, defaultFirebase } from 'angularfire2';

bootstrap(Angularfire2IpponAppComponent, [
  FIREBASE_PROVIDERS,
  defaultFirebase('https://xxxxx.firebaseio.com/')
]);

Ainsi le lien est fait entre AngularFire et Firebase. On peut maintenant, dans notre composant angular principal angularfire2-ippon.component.ts, utiliser AngularFire.

import { Component } from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';

@Component({
  moduleId: module.id,
  selector: 'angularfire2-ippon-app',
  templateUrl: 'angularfire2-ippon.component.html'
})
export class Angularfire2IpponAppComponent {
  items: FirebaseListObservable<any[]>;
  constructor(af: AngularFire) {
    this.items = af.database.list('/items');
  } 
}

On utilise ici le service AngularFire pour récupérer dans notre base Firebase une liste d’items. On modifie ensuite le template HTML de notre composant angularfire2-ippon.component.html en bouclant sur cette liste d’items et en affichant la propriété text de chaque item.

<ul>
  <li *ngFor="let item of items | async">
    {{item.text}}
  </li>
</ul>

On lance le serveur de notre application via une commande d’Angular-CLI.

> ng serve

Le résultat est à ce stade décevant car la page est vide. En effet, nous n’avons aucune donnée dans notre Firebase. Nous allons donc ajouter des données en utilisant le système d’import via fichier JSON de Firebase. On importe le fichier JSON suivant dans Firebase.

{
    "items": {
        "item1": {
          "text": "Angularjs 2"
        },
        "item2": {
          "text": "Firebase"
        },
        "item3": {
          "text": "Visual Studio Code"
        }
    }
}

Voici une représentation de notre base Firebase.

Firebase

Et ainsi directement nous pouvons visualiser notre liste d’items sans même redémarrer notre serveur. C’est en effet une des grandes forces de Firebase : on peut ajouter, modifier ou supprimer des données directement en base et les modifications sont immédiatement visibles sur l’application.

Apr√®s avoir vu comment lire les donn√©es depuis Firebase, nous allons impl√©menter les op√©rations de CRUD classiques. √Čcrivons tout d’abord les op√©rations classiques dans notre composant gr√Ęce aux m√©thodes fournies par AngularFire.

import { Component } from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';

@Component({
  moduleId: module.id,
  selector: 'angularfire2-ippon-app',
  templateUrl: 'angularfire2-ippon.component.html'
})
export class Angularfire2IpponAppComponent {

  items: FirebaseListObservable<any[]>;
  
  constructor(af: AngularFire) {
    this.items = af.database.list('/items');
  }
  
  addItem(textNewItem: string) {
    this.items.push({ text: textNewItem });
  }
  
  updateItem(keyItem: string, textUpdateItem: string) {
    this.items.update(keyItem, { text: textUpdateItem });
  }
  
  deleteItem(keyItem: string) {
    this.items.remove(keyItem);
  }
  
  deleteAllItems() {
    this.items.remove();
  }
  
}

On peut ainsi ajouter, modifier ou supprimer des items. Enrichissons ensuite notre vue pour qu’elle tire partie des opérations CRUD.

<ul>
  <li *ngFor="let item of items | async">
    <input type="text" [value]="item.text" #updateitem>
    <button (click)="updateItem(item.$key, updateitem.value)">Update</button>
    <button (click)="deleteItem(item.$key)">Delete</button>
  </li>
</ul>

<input type="text" #newitem />
<button (click)="addItem(newitem.value)">Add</button>
<button (click)="deleteAllItems()">Delete all</button>

Il s’agit ici d’utiliser simplement la syntaxe Angular 2 pour binder les évènements click sur les boutons pour appeler les méthodes définies dans notre composant. Pour la mise à jour d’un item, on récupère sa clé item.$key qui est unique.

On peut aussi requ√™ter de mani√®re plus fine les √©l√©ments que l‚Äôon souhaite ramener. Pour tester cela, cr√©ons un nouveau composant gr√Ęce √† Angular-CLI.

> ng g component items-observable

Ajoutons des nouvelles données à notre Firebase avec le JSON suivant.

{
    "items-observable": {
        "item1": {
          "type": "Framework",  
          "text": "Angular"
        },
        "item2": {
          "type": "IDE",  
          "text": "Visual Studio Code"
        },
        "item3": {
          "type": "Framework",  
          "text": "Ember"
        },
        "item4": {
          "type": "IDE",  
          "text": "IntelliJ Idea"
        },
        "item5": {
          "type": "Framework",  
          "text": "Backbone"
        }
    }
}

Le but de notre nouveau composant va √™tre de filtrer les items-observables par type (Framework ou IDE) gr√Ęce au syst√®me de query fourni par AngularFire.

import { Component } from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
import { Subject } from 'rxjs/Subject';

@Component({
  moduleId: module.id,
  selector: 'app-items-observable',
  templateUrl: 'items-observable.component.html'
})
export class ItemsObservableComponent {

  items: FirebaseListObservable<any[]>;
  typeSubject: Subject<any>;
  
  constructor(af: AngularFire) {
    this.typeSubject = new Subject();
    this.items = af.database.list('/items-observable', {
      query: {
        orderByChild: 'type',
        equalTo: this.typeSubject
      }
    });
  }

  filterBy(type: string) {
    this.typeSubject.next(type); 
  }

}

On voit ici que l’on trie les items-observable par type et que la méthode filterBy émet un évènement qui va permettre de modifier le type de filtre et ainsi mettre à jour la liste d’items avec seulement les items ayant le bon type. On peut donc écrire le template HTML correspondant.

<ul>
    <li *ngFor="let item of items | async">
      {{item.type}} : {{item.text}}
    </li>
 </ul>
<div>
   Filter by :
   <button (click)="filterBy('Framework')">Framework</button>
   <button (click)="filterBy('IDE')">IDE</button>
</div>

On boucle sur les items et suivant le bouton sur lequel on clique, seuls les items du type Framework ou IDE sont affichés.

Authentification

Firebase met √† disposition une API permettant de g√©r√©r facilement l‚Äôauthentification via email/password ou encore via les plateformes que sont Twitter, Facebook, GitHub ou Google. Nous allons cr√©er un composant qui va permettre √† un utilisateur de se connecter vis son compte Twitter et qui une fois connect√© affichera son nom. On cr√©e le squelette de notre composant gr√Ęce √† Angular-CLI.

> ng g component authentication-twitter

On implémente une fonction de connexion et de déconnexion, et on observe lorsqu’un utilisateur se connecte pour récupérér son username que l’on pourra afficher dans notre template.

import { Component } from '@angular/core';
import { AngularFire } from 'angularfire2';

@Component({
  moduleId: module.id,
  selector: 'app-authentication-twitter',
  templateUrl: 'authentication-twitter.component.html'
})
export class AuthenticationTwitterComponent {
  
  username: string;

  constructor(public af: AngularFire) {
    this.af.auth.subscribe(auth => {
      if (auth) {
        this.username = auth.twitter.username;
      } 
    });
  }

  login() {
    this.af.auth.login();
  }
  
  logout() {
    this.af.auth.logout();
  }

}

Le template HTML correspondant se contentera d’afficher un bouton pour se connecter lorsque l’utilisateur ne sera pas connecté, et lorsqu’il sera connecté son nom sera affiché ainsi qu’un bouton pour se déconnecter.

<div *ngIf="!(af.auth | async)">
    <button (click)='login()'>Login with Twitter</button>
</div>
  
<div *ngIf="af.auth | async">
    Hello {{ username }}
    <button (click)='logout()'>Logout</button>
</div>

On voit ici qu’il est très facile de gérer une authentification avec Firebase. Il est à noter que, dans le cas d’une connexion via Twitter, il faudra créer une application sur le site https://apps.twitter.com/ pour référencer son site et ainsi utiliser le système de connexion de Twitter.

Déploiement

On souhaite maintenant déployer notre application. Pour cela, nous devons installer une dépendance npm globale.

> npm install -g firebase-tools

Puis, à la racine de notre projet, on crée un fichier de configuration nommé firebase.json dans lequel on spécifie le nom, l’URL unique vers notre Firebase, ainsi que différentes options liées au déploiement.

{
  "firebase": "<IDENTIFIANT_UNIQUE>",
  "public": "dist",
  "ignore": [
    "firebase.json",
    "**/.*",
    "**/node_modules/**"
  ],
  "rewrites": [ {
    "source": "**",
    "destination": "/index.html"
  }]
}

Puis on peut lancer la commande suivante.

> firebase deploy

Notre application est maintenant en ligne.

Conclusion

AngularFire2 est une bibliothèque très riche pour faire le lien entre Firebase et une application Angular 2. Mais attention, AngularFire2 est toujours en beta, l’ensemble des exemples de code est écrit avec la version 2.0.0-beta.0 et il est à noter que AngularFire2 évolue beaucoup en ce moment.

Angular 2 non plus n’est pas encore en version finale. J’ai utilisé dans mes exemples la version 2.0.0-rc.1 de Angular 2.

Vous pouvez retrouver les exemples de code sur mon github.

Catégories: Blog Société

Retour sur nCrafts 2016

Souvent quand on essaie d’expliquer ce qu’est le software craftsmanship, on a du mal √† synth√©tiser les id√©es qui d√©finissent ce mouvement. Apr√®s r√©flexion, il s’av√®re que la conf√©rence nCrafts √† elle seule nous donne un bel aper√ßu :

DDD, BDD, TDD, code quality, functionnal programming, craftsmenship, machine learning and much more… It¬īs all there at #nCrafts

— Biarn√®s Adrien (@biarne_a) May 13, 2016

Cette ann√©e √©tait encore un excellent cr√Ľ. Dans cet article nous vous proposons un aper√ßu de ce que vous avez pu manquer (ou pas si vous avez eu la chance d’y participer) durant ces deux jours. Il pourra √©galement vous servir de grille de lecture des talks les plus int√©ressants de notre point de vue.

Agile experiments in machine learning –¬†Mathias Brandewinder http://www.gravatar.com/avatar/dfa00d231c5c42e8d4d8f990a209bf0dhttp://blog.xebia.fr/author/fgutierrezhttp://twitter.com/%40FabGutierrhttp://github.com/fagossaPar Fabian GUTIERREZ

Mathias Brandewinder nous a parl√© de son exp√©rience dans l’utilisation d’un langage typ√© (F#) pour un projet machine learning (ML)¬†en lieu et place des langages traditionnels¬†de scripting (python, R, …). L’objectif √©tait de¬†trouver la pertinence des param√®tres¬†de recherche du site¬†homedepot.com sur une p√©riode allant de janvier √† avril 2016. Les r√©sultats sont consultables en ligne.

M√™me si le ML est un sujet passionnant,¬†on se trouve habituellement¬†dans une situation o√Ļ¬†les donn√©es ne sont pas suffisantes et¬†rarement compl√®tes (pas les m√™me colonnes dans tous les √©chantillons). Le code √©crit¬†est tr√®s difficile √† maintenir et √† tester de mani√®re unitaire; ce qui donne une couverture de tests tr√®s limit√©e. Enfin, il y a rarement¬†une ex√©cution en parall√®le des mod√®les de pr√©diction.

Pour résoudre ces problèmes de manière effective, Mathias propose de :

  • S’inspirer de ce qui est d√©j√† fait¬†par la science ! C’est-√†-dire, √† partir d’une ensemble d’observations, faire des exp√©riences sur le mod√®le pour √©valuer des hypoth√®ses.
  • Suivre des pratiques utilis√©es dans l’agilit√©.
  • Utiliser un langage typ√©.
  • Utiliser un cache pour stocker les pr√©dictions d√©j√† faites.

ncraft_ML

En th√©orie, c’est le chemin √† suivre. Cependant, cette approche est toujours limit√©e par des mod√®les dont on ne connait pas a priori les features qui vont am√©liorer la pr√©diction. De plus, l’√©volution rapide inh√©rente √† ce type d’exp√©rience g√©n√®re un couplage fort dans l’impl√©mentation des diff√©rents composants.

Il a donc propos√© un mod√®le g√©n√©rique inspir√© de la programmation fonctionnelle qui peut √™tre appliqu√© √† n’importe quel projet de ML :

type Observation = {data1: String; data2: Int; AnotherData: String}
type Relevance: float
type Predictor = Observation -> Relevance
type Feature = Observation -> float
type Example = Relevance * Observation
 
type Model = Feature[]
type Learning = Model -> Example[] -> Predictor

On peut noter que :

  • Un typage fort du mod√®le d’entr√©e (classe Observation, mapp√©e la plupart du temps depuis un fichier CSV).
  • Une feature est une fonction qui va transformer d’une certaine mani√®re l’√©chantillon et va donner comme r√©sultat une repr√©sentation num√©rique.
  • Notre mod√®le est un ensemble de features.
  • La pr√©diction est l’application de mon¬†algorithme d’apprentissage.
  • L’apprentissage permet de passer d’un mod√®le vers une pr√©diction.
No estimates: how you can predict the release date of your project without estimating – Vasco Duarte http://www.gravatar.com/avatar/e85e2a7553069044ae7a05810e60edbahttp://blog.xebia.fr/author/mthurethttp://twitter.com/%40mlthuretPar Marie-Laure THURET

Cette présentation de Vasco Duarte porte sur le mouvement #NoEstimates sujet à propos duquel il a publié un livre.
Partant du principe que, dans nos sociétés occidentales, le temps est un aspect critique de nos vies, passer du temps à estimer nos backlogs est-il une chose pertinente et utile ?

Rappelons ce qui se cache derri√®re le mouvement #NoEstimates. Au lieu d’estimer chacune des stories de votre backlog pour pr√©voir ce que l’√©quipe pourra d√©livrer dans le futur, on se base uniquement sur le nombre de stories d√©velopp√©es via la v√©locit√© de l’√©quipe.

Pour que cela fonctionne il faut respecter certaines règles :

1. Les stories d’un projet doivent √™tre d√©coup√©es de mani√®re verticale : la story une fois finie doit apporter imm√©diatement de la valeur m√©tier.
2. Le temps de d√©veloppement d’une story doit √™tre relativement court : sur un sprint de deux semaines, on parle de stories dont le temps de d√©veloppement dure au maximum une journ√©e.

D’accord, mais est-ce que cela fonctionne ?

Vasco Duarte a pu nous fournir des comparaisons tir√©es de r√©els projets et les faits sont l√† : sur un projet de 50 sprints, au bout de 3 sprints on obtient 20% d’erreurs en estimant, et seulement 4% en comptant uniquement le nombre de stories. Au bout de 5 sprints, les estimations sont toujours √† 13% d’erreurs, alors que la fiabilit√© en No Estimates ne change pas.

Quoi qu’il en soit, Vasco Duarte nous invite surtout √† essayer et exp√©rimenter par nous-m√™mes afin de nous faire notre propre opinion.

Product vs Craft РJuan Delgado http://www.gravatar.com/avatar/e68d07551341bbbe95fa509a7104cc94http://blog.xebia.fr/author/slemerdyhttp://twitter.com/seblmhttp://sebastian.lemerdy.namePar Sébastian LE MERDY

Juan Delgado nous propose avec ce talk un sujet qui pourrait paraitre controversé dans une conférence dédiée au software craftsmanship : doit-on systématiquement écrire du code propre ?

√Ä travers diff√©rents exemples tir√©s de son exp√©rience, Juan nous invite √† ne pas syst√©matiquement se focaliser sur le code le plus propre et le plus test√© possible. Il pr√©conise de trouver le bon niveau d’effort √† produire maintenant (d√©livrer la fonctionnalit√©) et plus tard (maintenance) pour satisfaire son client.

Par exemple, il lui est arriv√© de d√©velopper un jeu de labyrinthe avec des effets d’optique dont l’attrait graphique est tel qu’on pourrait prendre une capture d’√©cran et l’afficher en poster sur le mur de son salon. Ainsi le focus a √©t√© clairement donn√© sur cet objectif durant le premier sprint. Il lui a sembl√© que si le jeu avait eu besoin de proposer un formulaire de connexion d√®s la premi√®re it√©ration, il pouvait clairement produire quelque chose de peu attirant graphiquement dans un premier temps. C’√©tait le compromis qu’il s’√©tait imagin√©. Or le client s’est tout de suite focalis√© sur ce d√©faut, occultant totalement l’objectif primordial de ce jeu.

On voit donc que la notion de qualité est relative au contexte. Comment alors en trouver une définition satisfaisante ? Juan propose ainsi la combinaison de deux notions :

  1. l’exactitude : mon programme ne doit pas produire de r√©sultat faux.
  2. la capacit√© √† ajouter de nouvelles fonctionnalit√©s ou d’am√©liorer l’existant de mani√®re constante √† moyen terme.

Un autre exemple de curseur diff√©rent autour de la qualit√© d’un projet informatique lui a √©t√© inspir√© d’un article :

hey #nCrafts post about the right way of building software: https://t.co/adXVMTURM4 and putting software in mars: https://t.co/29G7s5IwLX

— Juan Delgado (@wadus) May 13, 2016

  • curseur √©lev√© : VMWare avait besoin de donner des estimations fiables et un logiciel hautement qualitatif car ses clients √©taient de grosses structures habitu√©es √† des cycles pr√©dictibles.
  • curseur bas : au d√©marrage de Facebook, Marc Zuckerberg avait un avantage sur le march√© des r√©seaux sociaux car il avait de l’avance. Strat√©giquement il √©tait pr√©f√©rable d’aller tr√®s vite pour conserver cette avance.
  • curseur maximum : Mars Science Laboratory ou comment lancer une jeep scientifique sur Mars avec un ping de 10 minutes.

En conclusion : la qualit√© n’est pas intrins√®que car elle d√©pend du contexte.
Voyant que la salle n’a pas tant r√©agi que √ßa √† ses provocations sur la qualit√©, Juan a termin√© la session avec des citations de tweets (parmi lesquelles se cachent les siennes) :

  • ¬ę les d√©veloppeurs doivent r√©soudre des probl√®mes : √©crire du code pour √©crire du code √ßa n’a aucun sens ¬Ľ.
  • ¬ę les d√©veloppeurs doivent absolument √™tre align√©s avec le client ¬Ľ.
  • ¬ę c’est acceptable d’√©crire du code affreux si √ßa aide tes utilisateurs (am√©liorations de la performance, outils annexes mais utiles) ¬Ľ.
  • ¬ę parfois on n’a pas envie de passer son temps √† monter une int√©gration continue ou du d√©ploiement continue ¬Ľ.

Ces petites piques nous rappellent que ce sont nos clients qui paient nos salaires et qu’il faut donc prendre le temps n√©cessaire pour d√©livrer un produit avec la qualit√© attendue.

Beyond flux: going full cycle with functional reactive programming¬†–¬†Cl√©ment Delafargue¬† http://www.gravatar.com/avatar/3116a6125a198354e29f97a027332e41http://blog.xebia.fr/author/ponnebyhttp://twitter.com/%40poennebyhttps://github.com/poennebyPar Peter √ĖNNEBY

Dans ce talk, Cl√©ment nous a partag√© son exp√©rience et notamment sa frustration avec les biblioth√®ques de d√©veloppement d’applications web.

Il a commenc√©, comme beaucoup de gens, √† faire des sites avec du vanilla Javascript, puis du JQuery et a v√©cu l‚Äôarriv√©e des frameworks permettant de faire du ¬ę two-way data binding ¬Ľ.
Les choses se sont améliorées, mais très souvent, les frameworks deviennent compliqués à gérer.
React (avec ou sans implémentation Flux) donne un flux uni-directionnel et cela améliore vraiment la situation. Mais il faut quand même pas mal de boilerplate pour construire des applications d’un taille raisonnable.
De plus, la déclaration des actions dans les vues les rendent complexes de par le passage des fonctionnalités dans la hiérarchie des composants.

Il propose alors une alternative pour améliorer tous cela Рle Reactive Functional Programming.
Avec RxJS, le DOM devient Observable, les vues ne lancent plus des actions (IoC) et Cycle.js propose le pattern Model View Intent pour compléter la boucle et connecter le tout.

Hello #MVI #nCrafts @clementd pic.twitter.com/jhkNy7pGOz

— Peter √Ėnneby (@poenneby) May 12, 2016

Cl√©ment rajoute que l‚ÄôAPI de RxJS est tellement riche que cela peut en effrayer certains. Il ne faut pas h√©siter √† l’exp√©rimenter car c’est une biblioth√®que tr√®s puissante.
Nous allons continuer de suivre les avancements dans ce domaine en constant changement.

Interviewing domain experts: heuristics from the trenches¬†–¬†Cyrille Martraire http://www.gravatar.com/avatar/3e7310070855dc6d3d92715541b4777bhttp://blog.xebia.fr/author/cheliouhttp://twitter.com/c_heliouhttp://github.com/clementheliouPar Cl√©ment HELIOU

¬ę¬†Communication usually fails, except by accident. ¬Ľ¬†Professeur¬†Osmo Antero Wiio¬†-1978.

BDD, DDD et consorts: le m√©tier est partout et la communaut√© comprend petit √† petit que l’app√©tence au domaine soutenu est indispensable.
Oui mais, parler aux experts est difficile de par plusieurs facteurs:

  • Leur temps est g√©n√©ralement compt√©, il faut √©viter de le gaspiller.
  • Cela demande de la curiosit√© pour atteindre un niveau nous permettant d’√©changer plus efficacement (lectures, travail √† la maison).
  • L’expert m√©tier n’en n’est pas toujours un car il est parfois expert dans la complexit√© du logiciel existant (legacy) et parce que chaque personne se base sur des mod√®les mentaux tacites.

Pour nous en convaincre, Cyrille a donn√© l’exercice suivant √† la salle: d√©finir un pantalon en quelques mots.
Les d√©finitions varient forc√©ment selon les personnes et les questions qu’il nous pose par la suite nous le prouvent, aussi ¬ę stupides ¬Ľ soient-elles :

https://twitter.com/poenneby/status/730764893956214785/photo/1?ref_src=twsrc%5Etfw

Pour arriver à une communication bi-directionnelle efficace, Cyrille nous a partagé ses conseils et heuristiques.

  1. Arriver avec un aperçu du métier, un vocabulaire de base et une liste de questions pour être crédible.
  2. Ne pas négliger la prise de notes:
  1. Veiller √† ne pas perdre d’information et √† ne pas modifier les termes.
  2. Faire de l’√©coute attentive. Cyrille parle de safari de mots, √† la recherche de nouveaux termes, de synonymes, d’√©motions, d’h√©sitations.
    Il propose une l√©gende simple pour ce faire ce qui permet de ne pas interrompre la conversation tout en se donnant la possibilit√© de la relancer ensuite autour d’un nouveau mot ou synonyme.
    Les cartes de connaissances peuvent également répondre à ce besoin.
  • Ne pas h√©siter √† proposer des choses pour faire avancer la conversation (m√™me des exemples stupides, pour contrer¬†les mod√®les mentaux tacites).
    1. Retourner coder est une excellente mani√®re de trouver d’autres questions pour la prochaine interview (it√©rations).¬†Cela √©vite aussi les mauvaises surprises.
    2. Ne pas h√©siter √† faire des parall√®les avec d’anciennes exp√©riences, m√™me si elles n’ont rien √† voir.
  • Trainer √† la machine √† caf√© (sic); c’est un bel endroit pour apprendre (discussions informelles).
  • Montrer aux experts que l’on n’est pas l√† pour leur prendre leur job. Toujours faire valider, m√™me si l’on est s√Ľr de soi.

Ce talk nous a ainsi sembl√© d’une grande valeur et nous appliquons d’ores et d√©j√† certains des points ci-dessus dans notre travail quotidien.
Il nous semble essentiel pour quiconque souhaite d√©livrer des logiciels plus proches des besoins utilisateurs, du d√©veloppeur √† l’analyste fonctionnel.

Beyond patterns & principles : writing good code – Matthias Noback (@matthiasnoback) http://www.gravatar.com/avatar/97b6bcdd484a51fead09db2a904158a2http://blog.xebia.fr/author/amichaudhttp://twitter.com/AMichaud34http://github.com/antoinemichaudPar Antoine MICHAUD

Dans cette pr√©sentation, Matthias fait un tour d’horizon sur les bonnes pratiques en programmation objet et √©tablit leurs correspondances avec les principes les plus connus commes les principes SOLID :

– Un service inject√© doit ne contenir qu’une seule m√©thode publique, et ce service ne doit pas contenir d’√©tat. Cette classe Service correspond en fait √† une fonction dans le monde de la programmation fonctionnelle. On respecte ainsi les deux principes Single Responsibility Principle et de Interface Segregation Principle qui font partie des principes SOLID.¬†Dans un tel service, les effets de bords et la responsabilit√© deviendront plus explicites et les d√©pendances deviendront plus faciles √† bouchonner (mock).

– On croise parfois du code consistant √† v√©rifier l’√©tat d’un objet pour savoir si l’on a le droit de l’appeler. Une meilleure approche consiste √† refuser la cr√©ation de tout objet incoh√©rent. De cette mani√®re, on obtient des objets dont il est plus facile d’avoir un raisonnement, plus facile √† debugger et plus facile √† refactorer. Cela m√®ne au principe « tell don’t ask » qui √©vite l’effet « anemic dummy model ».

– Il faut favoriser l’immuabilit√©. Cela aide √† la distinction entre l’usage et la modification de l’√©tat. On peut ainsi passer des objets en param√®tre et les utiliser sans s’inqui√©ter des cons√©quences.

– Les objets doivent communiquer entre eux avec des messages clairs. On ne doit pas m√©langer r√©cup√©ration de r√©sultat demande d’action. Ce qui est √©galement connu sous le nom de principe CQS (Command Query Separation).

– Tout est objet, y compris votre application et votre syst√®me. Ils ont des √©tats et des effets de bords (clavier, √©cran, m√©moire, …). Les principes pr√©c√©dents s’appliquent donc √† votre application.

Et le tout en image :

ncrafts2

Mais aussi…

Comme il est difficile de r√©sumer toutes les pr√©sentations que l’on a vu dans une conf√©rence, voici un petit paragraphe pour mentionner notre int√©r√™t √† l’√©gard de certains talks desquels nous n’aurions pas eu le temps de faire un r√©sum√© mais que nous vous conseillons de regarder lorsque les vid√©os seront disponibles sur le net.

The Long Road – Sandro Mancuso¬†: C’√©tait la keynote d’ouverture de NCrafts. Comme toujours, Sandro inspire et motive son assembl√©e. Si vous vous demandez comment diriger votre carri√®re ces prochaines ann√©es, ce talk est pour vous.

Rise of the Digital Hussars – Laurent Bossavit : En 15 minutes, Laurent explique qu’il travaille dans le public depuis un an et pourquoi malgr√© un tas d’inconv√©nients, c’est une exp√©rience qu’il conseille aux autres.

The Art of Visualising Software Architecture – Simon Brown : En partant du constat qu’il est encore assez difficile de repr√©senter l’architecture logicielle, entre g√©n√©ration de mod√®le UML trop complexe et sch√©mas manuels immaintenables et incorrects, il pr√©sente un outil de sa cr√©ation : Structurizr.

If the problem was the solution – Arnaud Lemaire : Dans ce quickie, Arnaud d√©montre l’importance de la formulation du probl√®me dans sa r√©solution. Il parle avec humour de mod√®le gravitationnel, d’entropie, d’Einstein et de software design (entre autres¬†!).

Catégories: Blog Société

[Devoxx 2016] Construire facilement une application desktop gr√Ęce √† Electron !

Au cours de Devoxx, nous avons pu assister une pr√©sentation sur le framework Electron donn√©e par Thomas Brisbout. Cette solution permet de r√©aliser des applications pour desktop. Aujourd’hui, de nombreuses soci√©t√©s l’utilisent, car elle pr√©sente de nombreux avantages. La preuve nous en est apport√©e par un passage sur le site web d’Electron. Tr√®s rapidement, nous […]
Catégories: Blog Société

WWDC 2016 : Le 13 juin, suivez la keynote Apple chez Xebia avec CocoaHeads Paris

wwdc16-ogL’√©dition 2016 de la WWDC, c√©l√®bre conf√©rence des d√©veloppeurs Apple d√©marrera le 13 juin au Bill Graham Civic Auditorium √† San Francisco. Tr√®s peu de rumors ont fuit√© pour cette √©dition, qui verra s√Ľrement la publication des premi√®res b√™ta des nouvelles it√©rations des plates-formes made in Cupertino, telles que OS X, iOS, watchOS, tvOS et Xcode.

Comme chaque année, nous vous invitons dans nos locaux à Paris pour suivre l’événement et échanger avec toute la communauté CocoaHeads Paris au sujet des nouveautés techniques de l’écosystème.

L’√©v√©nement

La WWDC est l’√©v√©nement principal r√©serv√© aux d√©veloppeurs des √©cosyst√®mes Apple : 5000 participants se retrouvent chaque ann√©e √† San Francisco pour d√©couvrir les nouveaut√©s des plates-formes et √©changer avec les ing√©nieurs Apple pr√©sents sur place. Depuis quelques ann√©es, la keynote du lundi est rediffus√©e sur le Web et sur l’application WWDC officielle ; √† partir de cette ann√©e, les principales sessions journali√®res du 13 au 17 juin seront √©galement retransmises en live streaming.

Nous ne savons pas encore √† quoi nous attendre, mais nous sommes certains que Swift 3 et les frameworks de d√©veloppement seront √† l’honneur. Nous nous attendons √† des √©volutions importantes concernant la 10e it√©ration d’iOS, m√™me si ces derni√®res ne prendront s√Ľrement pas l’ampleur de la refonte visuelle op√©r√©e √† l’occasion d’iOS 7.

La soirée Xebia / CocoaHeads Paris

Pour suivre cet √©v√©nement, Xebia et CocoaHeads Paris organisent une soir√©e qui permettra de visionner la keynote en projection sur grand √©cran. Nous aurons √©galement la possibilit√© d‚Äô√©changer sur les impacts techniques concernant les nouveaut√©s du syst√®me.¬† Pendant la projection, Xebia vous offrira √†¬†boire et √† manger afin de… r√©fl√©chir plus facilement sur les annonces de la soir√©e.

Pour vous inscrire, dirigez-vous sur la page Eventbrite de la retransmission de la Keynote de la WWDC 2016.

Rendez-vous le 13 juin, à 18h45 au 156 Boulevard Haussmann au 7ème étage (à gauche sous le porche). La keynote commencera dès 19h.

FrenchKit

frenckit-icon.png

Bien-s√Ľr, nous n’oublierons pas de parler de FrenchKit, que Xebia organise en partenariat avec CocoaHeads Paris.¬†FrenchKit, c’est deux jours de conf√©rences et workshops sur les bonnes pratiques du d√©veloppement sur iOS et OSX le 23 et 24 septembre √† Paris pour rencontrer et discuter avec des d√©veloppeurs r√©put√©s et impliqu√©s dans les technologies Apple.

Les billets Blind Bird termin√©s, il ne reste plus que quelques billets Early Bird avant l’annonce des speakers qui rejoindront Marin Usalj et Jesse Squires sur sc√®ne : connectez-vous √† l’Eventbrite de la conf√©rence¬†et r√©servez vite les places restantes¬†!

Pour connaitre toutes les informations sur la conférence, abonnez-vous dès aujourd’hui au Twitter de la conférence @frenchkitconf et suivez le site à l’adresse frenchkit.fr.

Catégories: Blog Société

Le bouton IoT OCTO : retour d’expérience

La ‚Äúboutonite‚ÄĚ IoT

Non !¬†Avoir des boutons IoT n‚Äôest pas une maladie de peau, mais un sympt√īme de geekerie en Internet des objets. Les ‚Äúboutons‚ÄĚ ont pour vocation d‚Äôenvoyer un message quand on appuie dessus ! Il existe d‚Äôinnombrables offres et technologies. Chez OCTO nous avons donc d√©cid√© de faire notre bouton IoT ! Retour d‚Äôexp√©rience.

Principe du bouton

C‚Äôest l’arch√©type de l‚Äôobjet connect√© :

  • C‚Äôest un interrupteur temporaire, qui envoie un message quand l’interrupteur est enfonc√©. C‚Äôest un syst√®me √©v√©nementiel : seule la transition bouton rel√Ęch√©/bouton enfonc√© fait √©mettre un message ;
  • Il est en g√©n√©ral autonome √©lectriquement, n√©cessite peu d‚Äô√©nergie (alimentation par pile, cellule solaire…) et dispose d‚Äôune grande autonomie (au moins plusieurs mois) ;
  • Il communique sur Internet, bien ¬†souvent via une ou des passerelles, car il n‚Äôa pas toujours un stack tcp/ip int√©gr√©, mais plut√īt des protocoles √©conomes en √©nergie et puissance de calcul.

Les cas d’usage et les offres

L‚Äôid√©e est de mettre √† disposition une interface √©l√©mentaire qui √©vite de sortir son t√©l√©phone portable et d’activer une ‚Äúapp‚ÄĚ pour juste envoyer un message tr√®s simple. Les cas d‚Äôusage sont nombreux et la plupart bas√©s sur l’id√©e que l‚Äôappui sur le bouton correspond √† une demande d‚Äôaide ou de prestation. ¬†Par exemple le dash button d‚ÄôAmazon pour acheter des produits, le bouton Darty, le Domino de la Poste pour faire faire une rel√®ve de colis, le ‚ÄúThe switch‚ÄĚ de Netflix, le bt.tn

Le bouton OCTO Le cas d’usage

Nous avons décidé de concevoir un système de bouton de satisfaction client. Nous avons déroulé le cycle de conception d’un produit (matériel et système d’information) depuis l’idée du cas d’usage jusqu’à un MVP (Minimum Viable Product) industrialisable.

Notre bouton permet de soutenir la relation client par la m√©morisation d’√©v√©nements de satisfaction ou de frustration de la part de nos clients. Le cas d‚Äôusage consiste √† ce que le client appuie sur un des trois boutons :

  • Vert : Un √©v√©nement avec OCTO m‚Äôa satisfait et est digne d‚Äô√™tre soulign√©
  • Rouge : ¬†Un √©v√©nement avec OCTO m‚Äôa frustr√© et est digne d‚Äô√™tre soulign√©
  • Bleu : J‚Äôai un sujet √† discuter avec OCTO

designZeBouton

Une fois enregistrés, ces événements sont utilisés pour alimenter les échanges entre le client et OCTO.

Les contraintes

Le bouton doit respecter les contraintes d’opération suivantes :

  • Autonomie en √©nergie (6 mois sans changer les piles)
  • Respect des normes CEM et ETSI
  • Ind√©pendance avec l‚Äėinfrastructure du client qui utilise le bouton
  • Fiabilit√©
  • Co√Ľt r√©duit
Une architecture IoT LoRaWan-Amazon IoT Choix fondamentaux

Nous avons donc choisi de r√©aliser un bouton qui communique sur LoRaWan¬†afin de respecter les contraintes d‚Äôautonomie et d‚Äôind√©pendance de l‚Äôinfrastructure du client qui utilise le bouton. Choix courageux, car au moment de le faire, le d√©ploiement de LoRaWan en France √©tait seulement √©voqu√© par les op√©rateurs (Orange, Bouygues) et √©tait marginal par rapport √† SigFox. Mais l‚Äôavantage de LoRa est de pouvoir d√©ployer son r√©seau priv√© et de r√©gler des compromis de transmission entre fiabilit√© – d√©bit – charge utile et de b√©n√©ficier de transmissions descendantes de bonne qualit√©. Nous pensons que de nombreux cas d‚Äôusage LoRaWan vont √©merger dans les b√Ętiments, et ma√ģtriser son r√©seau indoor est un point important pour les projets IoT.

Architecture et technologies retenues

L‚Äôarchitecture, √©tudi√©e en collaboration avec Zerfos.Systems qui impl√©mente le bouton, s‚Äôappuie sur les mat√©riels de Multitech. Ce choix a √©t√© r√©alis√© pour le bon compromis – simplicit√© de mise en Ňďuvre – performance – co√Ľts. D‚Äôautres mat√©riels leader tels que Kerlink nous ont paru trop chers pour l‚Äôusage que nous envisagions. A noter que de nombreuses offres mat√©rielles de passerelles existent.

L’étude du cycle de vie du bouton de concert avec le système d’information a abouti à l’architecture suivante :

archiZeBouton

  • Le bouton communique en LoRaWan avec une passerelle Multitech Conduit
  • La passerelle communique sur Internet en 4G
  • L’application de collecte des √©v√©nements est r√©alis√©e sur Amazon IoT et stocke les √©v√©nements dans une base DynamoDB
  • Un web service permet de r√©cup√©rer les donn√©es et de les analyser

Chaque bouton est identifié lors de la fabrication, puis couplé au compte client lors de la phase de déploiement.

boutonocto

La¬†maquette initiale du « Bouton »

Une interface de démonstration sur AWS a été réalisée pour montrer le fonctionnement à nos clients.

tdbZeBouton

Résultat d’expérience

La bonne collaboration hard-soft a clairement acc√©l√©r√© le projet car tous les √©l√©ments (bouton, LoRaWan, SI et le cycle de vie du bouton) ont √©t√© int√©gr√©s dans la conception de l‚Äôarchitecture du syst√®me. Les contraintes mat√©rielles et de communications font partie de la ‚Äúg√©n√©tique‚ÄĚ du syst√®me.

Les technologies LoRa sont assez faciles à mettre en oeuvre pour une démonstration mais plus compliquées pour une utilisation industrielle. Des instruments d’analyse de transmission radio (analyseur de spectre, mesure des niveaux) ont été nécessaires pour réaliser des travaux de debug et de fiabilisation. 

Le d√©ploiement d‚Äôagent Amazon en multi-objet sur une passerelle Multitech se r√©v√®le √™tre une op√©ration assez compliqu√©e pour deux raisons : les particularit√©s techniques de la distribution Linux Multitech et le¬†SDK¬†Amazon non multi-objets. La constitution de la cha√ģne de d√©veloppement doit √™tre soign√©e et bien ma√ģtris√©e.

Sur le terrain, on observe une communication en intérieur de bonne qualité, mais une portée limitée à quelques centaines de mètres en extérieur (zone urbaine dense).

Conclusion

Un passage de la th√©orie de l‚ÄôIoT √† la pratique qui s‚Äôest r√©v√©l√© tr√®s concluant sur notre bouton. En associant innovation technologique et gestion de la relation client, nous travaillons √† toujours mieux satisfaire¬†ceux qui nous font confiance. Nous avons valid√© LoRa dans un cas d’usage simple et touch√© du doigt certaines de ses limites. Nos client sont ainsi mieux √©cout√©s et pionniers dans l’usage des technologies d’IoT.

 

 

Articles suggested :

  1. Quels liens entre l’Internet des Objets et la Blockchain ?
  2. Cap sur les plates-formes IoT (partie 3)
  3. Vision Internet des Objets 2020

Catégories: Blog Société

Ippon Sponsor du DataStax Day Paris 2016

Blog d’Ippon Technologies - lun, 05/23/2016 - 16:36

Les √©quipes d’Ippon vous attendent le 14 juin √† La Maison de la Chimie pour r√©pondre aux questions qui entourent vos projets Cassandra.

Venez d√©couvrir et mettre en Ňďuvre les nouvelles fonctionnalit√©s de DataStax Enterprise, la version d‚Äôentreprise d‚ÄôApache Cassandra, leader des syst√®mes de gestion de base de donn√©es distribu√©es.

M6

Inscription : https://www.eventbrite.co.uk/e/billets-datastax-day-paris-25165891860?aff=Ippon

 

Programme de la journée  :

  • 8:30 – 9:30 ¬†¬†¬† Accueil caf√©
  • 9:30 – 09:40 ¬†¬†¬† Mot de bienvenue – Steve van den Berg, Regional Vice President, Western Europe, DataStax France (FR)
  • 9:40 – 10:30 ¬†¬†¬† Introduction to Cloud Applications, Robin Schumacher, VP Products, DataStax (EN)
  • 10:30 – 11:15 ¬†¬†¬† Comment M6 personnalise l‚Äôexp√©rience utilisateur du service 6Play avec DataStax Enterprise – Olivier Mansour, Head of Backends & Engineering Video, M6Web (FR)
  • 11:15 – 11:45 ¬†¬†¬† Pause caf√© – Visite du Village Partenaires
  • 11:45 – 12:15 ¬†¬†¬† Pr√©sentation de Cassandra, Structure de donn√©es de Cassandra, Fonctions de r√©plication – ¬†Jonathan Ellis, Chief Technology Officer & Co-Founder, DataStax (FR)
  • 12:15 – 13:45 ¬†¬†¬† D√©jeuner Buffet – Visite du Village Partenaires
  • 13:45 – 14:30 ¬†¬† Atelier : Mod√©lisation avec DataStax Enterprise et Apache Cassandra – DuyHai Doan, Technical Advocate and Apache Cassandra Evangelist, DataStax (FR)
  • 14:30 – 15:15 ¬†¬†¬† Atelier : Comment indexer en temps r√©el les donn√©es de DataStax Enterprise avec Apache Solr ? – Vincent Poncet, Solutions Engineer, DataStax (FR)
  • 15:15 – 15:45 ¬†¬†¬† Pause caf√© – Visite du Village Partenaires
  • 15:45 – 16:30 ¬†¬†¬† Atelier : DataStax Enterprise Analytics avec Spark – Vincent Poncet, Solutions Engineer, DataStax (FR)
  • 16:30 – 17:15 ¬†¬†¬† DataStax Enterprise Graph – Jean Villedieu, Co-founder, Linkurious
  • 17:15 – 18:00 ¬†¬†¬† Conclusion et cocktail
Catégories: Blog Société

Best Of Web #2 : SOAT soutient cette deuxième édition de l’événement parisien 100% Web !

Cette ann√©e Best Of Web se d√©roulera les 9&10 juin 2016 ! Le 9 juin pour une journ√©e formation et le 10 juin, comme l‚Äôan pass√© pour des conf√©rences sur des sujets vari√©s de l‚Äô√©cosyst√®me web. Et l‚Äô√©v√©nement grossi avec d√©sormais 12 meetups web parisiens r√©unis pour vous proposer le meilleur de leurs talks de […]
Catégories: Blog Société

Atelier ‚Äď Plateforme 2 ‚Äď IBM Bluemix (1/3)

Apr√®s avoir secou√© le module IoT de AWS, attaquons nous aujourd’hui √† un autre Cloud public, IBM Bluemix. Bluemix propose lui aussi un module d√©di√© √† l’IoT, IoT Platform.

Nous allons donc tenter de réaliser le même sytème que précédemment. Nous passerons par un survol de la plateforme, puis nous rentrerons dans le dur du sujet : exécution de code à la demande, captation des messages en provenance de Sigfox et traitement de ces messages dans le backend IoT.

Commen√ßons par le commencement, √† savoir l’objet connect√©.

Le module IoT de la plateforme Bluemix (et ça continue, encore et encore).

C’est parti, nous allons piocher dans le catalogue Bluemix le module qui nous int√©resse :

module IoT de la plateforme Bluemix

L’ajout d’un objet connect√© au module est particuli√®rement bien document√©, nous n’allons donc pas nous attarder sur ce sujet particulier.

En revanche, nous revoici confront√©s √† un probl√®me que nous avions d√©couvert lors de l’exp√©rimentation de la plateforme AWS : les objets connect√©s de la plateforme Bluemix supportent un seul et unique protocole de mani√®re native : MQTT. Or les donn√©es stock√©es dans le backend Sigfox sont exploitables uniquement via des callbacks HTTP. Ce n’est donc pas une nouveaut√© pour nous, pas plus que cela n’est un probl√®me. De la m√™me fa√ßon que nous avions d√©velopp√© un bridge¬†pour AWS, nous allons nous atteler √† la cr√©ation du pont entre Sigfox et Bluemix. Tant pis donc pour le canal de communication ¬ę natif ¬Ľ du module IoT de Bluemix.

Exécuter du code NodeJs à la demande

Depuis peu, IBM propose un nouveau service, OpenWhisk. Il s’agit d’un service d’ex√©cution de code √† la demande, qui ressemble furieusement au service AWS Lambda que nous avions utilis√©.

L’installation de la CLI OpenWhisk est d√©taill√©e ici.

Malheureusement, ce service, en b√™ta, n’est disponible que sur la plaque am√©ricaine. Mais comme nous sommes dans une d√©marche exploratoire, il serait dommage de ne pas exp√©rimenter une brique qui colle parfaitement avec nos besoins. Nous ne vous ferons pas l’insulte du HelloWorld qui est disponible ici.

Au del√† du HelloWorld, notre OpenWhisk va n√©cessiter d’utiliser a minima un module externe, √† savoir le module d√©di√© √† la communication avec la plateforme IoT,

const IotfDevice = require("ibmiotf").IotfDevice;

OpenWhisk accepte des containers, ou bien un fichier unique .js. Nous allons donc devoir inliner nos d√©pendances et packager notre application. En cherchant un peu sur le web, on trouve facilement un exemple utilisant WebPack (ouais, cool, celui l√† je ne l’avais pas sur mon CV…).

Pour la version courte, voici les lignes de commande pour (bien) démarrer le projet :

npm init
npm install --save-dev webpack babel-core babel-loader \
    babel-preset-es2015 json-loader
npm install --save ibmiotf
npm install -g webpack

Et là, manque de bol, cela ne suffira pas pour fonctionner instantanément.

npm run build
> sigfox-bluemix@1.0.0 build /Users/pablolopez/xebia/dev/projects/sigfox-bluemix
> webpack --config webpack.config.js --progress --colors
Hash: 1e9176458703f75e54c3
Version: webpack 1.12.15
Time: 6817ms
    Asset    Size  Chunks             Chunk Names
bundle.js  145 kB       0  [emitted]  main
   [0] multi main 28 bytes {0} [built]
    + 75 hidden modules
WARNING in ./~/ibmiotf/~/axios/~/es6-promise/dist/es6-promise.js
Module not found: Error: Cannot resolve module 'vertx' in /Users/pablolopez/xebia/dev/projects/sigfox-bluemix/node_modules/ibmiotf/node_modules/axios/node_modules/es6-promise/dist
 @ ./~/ibmiotf/~/axios/~/es6-promise/dist/es6-promise.js 137:20-30
ERROR in ./~/ibmiotf/~/mqtt/mqtt.js
Module parse failed: /Users/pablolopez/xebia/dev/projects/sigfox-bluemix/node_modules/ibmiotf/node_modules/mqtt/mqtt.js Line 1: Unexpected token ILLEGAL
You may need an appropriate loader to handle this file type.
| #!/usr/bin/env node
| 'use strict';
| /*
 @ ./~/ibmiotf/dist/clients/BaseClient.js 3:4-91

C’est dommage √ßa sonnait plut√īt bien comme mani√®re de faire. Ha, on me dit dans l’oreillette ¬ę Webpack n‚Äôest pas fait pour √ßa √† la base, certains l‚Äôont un peu tweak√© mais √ßa m‚Äô√©tonne pas que tu tombes sur ce genre de probl√®mes ¬Ľ.

 Tant pis pour le JS, nous allons tenter de nous rabattre sur Docker.

Exécuter du code NodeJs à la demande, en utilisant Docker (même joueur joue encore).

Deuxi√®me solution offerte pas OpenWhisk, packager notre application sous forme de conteneur. La documentation n’est pas forc√©ment √©vidente √† trouver, mais avec un peu de pers√©v√©rance, on y arrive. Un squelette d’application Docker est disponible, via la commande¬†wsk sdk install docker.

Ceux qui connaissent Docker ne seront pas trop perdus. On retrouve un DockerFile, et un répertoire server, qui contiendra notre application Node.

Adaptons donc le Dockerfile à notre besoin :

FROM node
# ...
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Copy app
COPY server/package.json /usr/src/app/
# Install dependencies
RUN npm install
COPY server/* /usr/src/app/
COPY server/src/* /usr/src/app/src/
EXPOSE 8080
CMD ["/bin/bash", "-c", "node ./app.js"]

Dans un premier temps, inutile de modifier le fichier server.js, qui fait ce qu’on attend de lui. Nous allons nous attaquer au coeur du syst√®me, le fichier src/service.js. La partie qui nous concerne se trouve dans le corps de la fonction¬†runCode.¬†Nous allons remplacer le code C par un bloc de NodeJs.

var config = {
    "org" : "<org>",
    "id" : "<device id>",
    "type" : "<device type>",
    "auth-method" : "token",
    "auth-token" : "<device token>"
};
 
this.runCode = function runCode(req, res) {
        // Unmodified
  var meta = (req.body || {}).meta;
        var value = (req.body || {}).value;
        var payload = value.payload; // we expect this to be a string
        if (typeof payload != 'string')
            payload = JSON.stringify(payload);
        
  // IoT bridge starts here
        var IotfDevice = require("ibmiotf").IotfDevice;
        var device = new IotfDevice(config);
        
  device.on("connect", function () {
      console.log("On connect")

      var dataToPush = {"temperature":17};
      var msg = '{"d" : '+ JSON.stringify(dataToPush) + '}';
      //publishing event using the default quality of service
      device.publish("status","json", msg);

      device.disconnect();

      var result = { 'result' : { 'msg' : 'Message pushed : ' + JSON.stringify(dataToPush, null, 2) + ' to ' + JSON.stringify(device,  null, 2) } };
      res.status(200).json(result);
  });
 
        device.connect();
    }

Dans le but de tester notre bridge, nous avons d√©cid√© d’envoyer une valeur statique. Testons maintenant notre conteneur. Vous aurez besoin pour cela d’un compte sur le DockerHub.

docker login -u <docker hub login> -p <docker hub password>
./buildAndPush.sh <docker hub login>/bluemix-sigfox-bridge
wsk action create <or update> --docker bluemixSigfoxBridge <docker hub login>/bluemix-sigfox-bridge
wsk action invoke --blocking --result bluemixSigfoxBridge

En plus d’obtenir un succ√®s dans votre console, vous devriez voir apparaitre dans le tableau de bord d’IBM IoT la premi√®re valeur que vous avez pouss√©e pour votre objet :¬†

code-NodeJs-avec-Docker

Notre conteneur, d√©ploy√© dans OpenWhisk, est donc fonctionnel. Nous allons maintenant l’adapter pour recevoir les donn√©es en provenance de Sigfox.

Exposer le conteneur aux callbacks.

Dans un premier temps, modifions légèrement le code pour récupérer les paramètres de la requête HTTP. Le changement est mineur :

device.on("connect", function () {
    var msg = '{"d" : '+ JSON.stringify(value) + '}';

Mettons à jour notre OpenWhisk :

./buildAndPush.sh <docker hub login>/bluemix-sigfox-bridge
wsk action update --docker bluemixSigfoxBridge <docker hub login>/bluemix-sigfox-bridge

Nous allons maintenant avancer d’un cran dans l’utilisation d’OpenWhisk, en actionnant notre action avec Postman. En premier lieu, nous allons r√©cup√©rer nos identifiants pour l’authentification basique requise par l’API REST.

cat ~/.wskprops
NAMESPACE=xebia_dev-us
AUTH=xxx:yyy

Ensuite, il suffit d’invoquer un POST sur notre action en utilisant l’URL https://openwhisk.ng.bluemix.net/api/v1/namespaces/<NAMESPACE>/actions/bluemixSigfoxBridge, avec dans la BasicAuth les valeurs xxx en tant que user et yyy en tant que password. Dans le body, nous allons utiliser un JSON √©quivalent √† celui que Sigfox nous poussera :

conteneur-callbacks

La r√©ponse HTTP nous renvoie un num√©ro d’activation. Nous pouvons utiliser cet identifiant pour obtenir les traces de notre ex√©cution :

$ wsk activation logs 223009cfbe1d4873b411a1bd93dde16a
2016-04-13T16:54:10.108005764Z stdout: Starting service
2016-04-13T16:54:14.066298008Z stdout: Message pushed : {
2016-04-13T16:54:14.06635685Z  stdout: "idEvent": "af8f677f-2d30-4d5a-a54e-a7355d79669f",
2016-04-13T16:54:14.066383211Z stdout: "luminance": "1",
2016-04-13T16:54:14.066400409Z stdout: "temperature": "25.5",
2016-04-13T16:54:14.066412734Z stdout: "humidity": "40",
2016-04-13T16:54:14.066423672Z stdout: "ack": true,
2016-04-13T16:54:14.066439583Z stdout: "time": 1454520570,
2016-04-13T16:54:14.066451139Z stdout: "device": "1C69C"
2016-04-13T16:54:14.066466347Z stdout: } to {
...
2016-04-13T16:54:14.066877827Z stdout: }

Autre solution pour obtenir les traces d’activation en live, la commande wsk activation poll¬†qui r√©cup√®re de mani√®re quasi synchrone les logs d’ex√©cution de vos actions.

Si tout s’est correctement pass√©, vous devriez maintenant avoir un statut plus complet dans le tableau de bord de votre objet :

conteneur-callbacks2

Il ne reste plus qu’√† renseigner correctement le backend Sigfox pour compl√©ter la premi√®re √©tape de notre d√©couverte de Bluemix. N’oubliez pas d’ajouter le header Autorization, qui correspond √† la BasicAuth (vous pouvez le r√©cup√©rer directement depuis Postman).

conteneur-callbacks2-sigfox

Voilà pour cette première étape, les données de notre objet connecté remontent correctement dans le module IoT de Bluemix. Reste à les exploiter. Mais ce sera pour la semaine prochaine.

Catégories: Blog Société

Une API est une UI

Denis Dollfus' Blog - lun, 05/23/2016 - 00:28

Le titre peut sembler bizarre tant le terme "UI" ‚ÄstUser Interface ‚Ästest associ√© aux interfaces graphiques. Pourtant une API est bien une interface utilisateur : les d√©veloppeurs sont des utilisateurs (un peu sp√©ciaux) qui interagissent avec des interfaces (un peu sp√©ciales), typiquement un fichier de texte √©dit√© dans un environnement optimis√© pour cet usage. Les d√©veloppeurs jugent une¬†API, pratique ou calamiteuse, bien pens√©e ou tortueuse, tout comme nous jugeons¬†la qualit√©, l'ergonomie, le c√īt√© "√©vident" d'une interface graphique.

Une API est une UI, et ça n'est pas du détail. Bien au contraire, c'est un point critique à intégrer à toute stratégie de "platformisation" d'un business.

Investir dans la qualité des interfaces Car-Ergonomics
Une autre sorte d'UI.

Les avantages d'interfaces graphiques (GUI) de qualité sont bien compris. Les clients-utilisateurs sont satisfaits et fidélisés, l'image de la marque est renforcée, et au final un bon site Web ou une App intuitive deviennent des avantages compétitifs. C'est pourquoi les éditeurs prennent soin d'investir des ressources en amont de la conception du logiciel. C'est le domaine des Web et App designers, experts touche-à-tout à la croisée de l'ergonomie, du look & feel et de la technique. Le nombre de sociétés spécialisées et de livres de référence donne une idée de l'activité autour de cet aspect crucial du software.

Donc pas de doute, les GUI sont conçues avec soin. Dans le cas contraire, les utilisateurs vont voir la concurrence.

Ce soin est encore plus crucial pour les APIs, pour deux raisons. D'abord, elles sont beaucoup moins flexibles que les GUIs, les erreurs ne pardonnent pas. Une interface graphique peut toujours √™tre modifi√©e,¬†les utilisateurs peuvent s'y adapter. Certes, il peut y avoir quelques grincements de dents si les modifications perturbent trop l'usage habituel d'une App ou d'un site Web¬†‚Äď mais ils peuvent s'y adapter. Pour une API, les d√©veloppeurs "clients" peuvent eux aussi s'adapter. Mais le code d√©j√† livr√©, fortement coupl√© √† une version pr√©c√©dente, va¬†lui¬†simplement planter. A la diff√©rence d'une GUI, quand une API est livr√©e, c'est pour toujours.

C'est¬†le sujet de la r√©tro-compatibilit√©, qui du coup devient parfois le seul moteur de la conception d'API. Malheureusement les APIs con√ßues avec cet unique objectif sont parmi les plus complexes et les moins intuitives¬†‚Äď c'est le mythe de l'API tellement puissante, flexible et g√©n√©rique qu'elle ne demandera jamais de mise √† jour... sans doute la pire des APIs du point de vue des d√©veloppeurs, et un sujet qui m√©riterait un article √† lui tout seul.

Bichonner les développeurs

Comme pour une GUI, l'exp√©rience utilisateur (la user experience des anglo-saxons) devrait toujours √™tre le centre de la conception d'une API. Je suis convaincu qu'une API agr√©able, facile √† comprendre et √† utiliser est un avantage comp√©titif sur le long terme, √† l'heure de la comp√©tition f√©roce dans le domaine des plateformes, o√Ļ l'on cr√©e des services par assemblage d'autres services d√©finis¬†par leurs interfaces de programmation.

Les d√©veloppeurs et d√©cideurs techniques, dans un monde "d√©vor√© par le software", sont habilit√©s √† choisir ou pr√©coniser : ils d√©cident, directement ou indirectement, maintenant ou un peu plus tard dans leur carri√®re, quelle API ou plateforme consommer, notamment en fonction de la facilit√© avec laquelle ils peuvent¬†appr√©hender¬†une API, mettre en place un prototype et faire une d√©mo, √©videment avec des d√©lais serr√©s ‚Äď autre raison de soigner la conception des APIs.

En pratique, ce qui marche pour le design d'une GUI doit s'appliquer à une API, toutes deux interfaces homme-machine, la deuxième plus exigeante que la première. Par exemple : avoir une équipe dédiée à la conception indépendamment du codage, s'attacher à identifier les cas d'utilisation visés, de préférence en ignorant les détails du système technique existant, et réunir de vrais feedbacks clients/développeurs lors d'une phase beta.

 

Catégories: Blog Individuel

is Kanban Method an Agile Method ?

A very intersting discussion on Twitter the 09/05/2016 with David J Anderson, founder of the Kanban Method.

pierre_fauvel:@lki_dja perhaps stupid but frequent question : is Kanban Method an Agile Method ? I'd say there are common parts and different parts
|lki_dja:@pierre_fauvel hence, #kanban is "the alternative path to agility"!
||pierre_fauvel:@lki_dja What is the position of Kanban about the agile manifesto ?
|||lki_dja:@pierre_fauvel before you charge people for professional advice about #kanban perhaps you should attend some training? KMP & KCP classes
||||pierre_fauvel:@lki_dja good point ;-) at the time being the question is about the choice of the method
|||||lki_dja:@pierre_fauvel #kanban vs #agile method is a false choice. It's capability to evolve your own vs adopt defined/prescribed process
||||||pierre_fauvel:@lki_dja big industrial companies like predefined processes. At least in France
|||||||lki_dja:@pierre_fauvel yes, industrial mindset. Because they like it, doesn't mean it will work.Professional services/knowledge work needs new ideas
||||||||pierre_fauvel:@lki_dja agreed. But to sell it, surfing on the agile wave can help. Thus deguising Kanban in agile clothes.
|||||||||lki_dja:@pierre_fauvel yes. that is a valid approach used by many coaches/consultants
|||lki_dja:@pierre_fauvel I don't understand the question? Can you rephrase?
||||pierre_fauvel:@lki_dja as a Kanban referent, would you sign the agile manifesto ? Do you share agile values and principles described in it ?
|||||lki_dja:@pierre_fauvel see my Agile 2008 conference Mainstage video for an answer to this question
|||||lki_dja:@pierre_fauvel I don't think you quite understand, I was there before we called it #agile. I was also at the 10 Year Anniversary in Snowbird
||||||pierre_fauvel:@lki_dja let me reformulate. You were part of something. Part of it became agile methodologies. You continued a different part, Kanban. ?
|||||||lki_dja:@pierre_fauvel "an alternative path to agility" a method that let's you evolve your own uniquely tailored processes specific to your context
||||||||pierre_fauvel:@lki_dja if i have 100 teams in a company i have 100 contexts ?
|||||||||lki_dja:@pierre_fauvel 100 teams could be 1 context collaborating together or 100 contexts or anything in between. ~10-20 maybe typical
|||||||||lki_dja:@pierre_fauvel depends. Do the teams collaborate on same customer service delivery and workflow? Context is a business context
||||||||||pierre_fauvel:@lki_dja lets consider for the discussion that they don't. They adress different, separate business needs.
|||||||||||lki_dja:@pierre_fauvel you should consider reading my #kanban & Lessons in #agile management books, taking @leankanbanu training. These will help
||||||||||||pierre_fauvel:@lki_dja I've read the kanban book (with interest). I should start the other one ;-) do you plan a third ? The first was clear & synthetic
|||||||||||||lki_dja:@pierre_fauvel I plan several more. I have several partially complete. Dealing with your industrial context is a topic I need to address
|||||||||||lki_dja:@pierre_fauvel then you have 100 contexts. You could have 100 unique process definitions. Each will evolve on its own
||||||||||||pierre_fauvel:@lki_dja our quality controllers won't like that. 100 different ways to control !
|||||||||||||lki_dja:@pierre_fauvel learn to control with fitness criteria metrics not through process compliance
||||||||||||||pierre_fauvel:@lki_dja thats a transformation !
|||||||||||||||lki_dja:@pierre_fauvel I'm sympathetic to your situation. I've seen it many times before. I must address with new guidance. Thanks for inspiration
||||||||||||||||pierre_fauvel:@lki_dja thx for the time you took for this discussion. Would you allow me to relate it in my blog ?
|||||||||||||lki_dja:@pierre_fauvel try @ChrisAch's #kanban Kickstart Guide. Consider taking @leankanbanu KCP class & visiting our Retreat in Barcelona in July
|||||||||||||lki_dja:@pierre_fauvel as a crutch the work of @ChrisAch will help you. He also works in a big industrial context
|||||||||||||lki_dja:@pierre_fauvel you need to get them out of the industrial mindset. There is no economy of scale in professional services
||||||||||||||pierre_fauvel:@lki_dja +1
|||||||lki_dja:@pierre_fauvel "an alternative path to agility". An approach that gives you the benefit of outcomes without the pain of change/adoption
|||||||lki_dja:@pierre_fauvel by 2003, I recognized that resistance to adoption of #agile methods hindered scaling. I looked for an alternative
||||||||pierre_fauvel:@lki_dja so you adopted an evolutive framework to ease adoption ?
|||||||||lki_dja:@pierre_fauvel I adopted an evolutionary approach because it gets you to the desired business outcome much faster with lower risk
||pierre_fauvel:@lki_dja my customer is doing an "agile transformation" however i would advise Kanban in some cases (run) and agile in other(build).
|||lki_dja:@pierre_fauvel i don't understand what "(run)" or "(build)" means in this context. #kanban is the antithesis of #agile transformation
||||pierre_fauvel:@lki_dja build a new application (from scratch) vs run an application ( fix bugs and add evolutions )
|||||lki_dja:@pierre_fauvel why would you give that advice? because #agile methods are easier to adopt? Do you need optionality in your "build" process?
||||||pierre_fauvel:@lki_dja i think i would need optionality
|||||||lki_dja:@pierre_fauvel then a #kanban system gives you an advantage. Have you read my Tyranny of Ever Decreasing Timebox blog post?

Catégories: Blog Individuel

Introducing the Valiantys ShipIt!

Le blog de Valiantys - ven, 05/20/2016 - 11:30

  Happy birthday to us! Last month marked ten years since Valiantys was created, and it’s certainly been a rollercoaster journey. Since 2006¬†we’ve amassed 16 nationalities within our team, opened a total of five global offices¬†(and counting)¬†and developed over a whopping 200 Atlassian add-ons. So after spending some time thinking about how to mark the ...

The post Introducing the Valiantys ShipIt! appeared first on Valiantys Blog - Atlassian Expert.

Catégories: Blog Société

Retour sur Devoxx 2016 : WildFly Swarm

Le blog des experts du groupe Infotel - ven, 05/20/2016 - 11:04
Cette ann√©e Devoxx France s’est tenu pendant 3 jours du 20 au 22 avril au Palais des Congr√®s de Paris. Infotel a permis √† de nombreux collaborateurs de participer √† cette √©ventement. Fr√©d√©ric JOSEPH nous fait un retour sur WildFly … Lire la suite →
Catégories: Blog Société

[PODOJO] Mise en avant d’un produit

Agile Nantes - ven, 05/20/2016 - 10:20
Apr√®s le lean Startup et¬†l’impact mapping, nous avons d√©sormais une id√©e de plus en plus compl√®te de notre besoin. Mais seulement voil√†, ce que nous avons en t√™te, il va falloir le partager : expliquer √† quels besoins nous r√©pondons et par quelles solutions. Mais avant tout il va falloir convaincre ¬†et montrer que notre [...]
Catégories: Association

Visual Studio Team Services : Compiler vos applications Android avec VSTS

Microsoft VSTSVous √™tes accrocs √† Team Foundation Server¬†ou sa version Cloud¬†« VSTS – Visual Studio Team Services » et vous avez maintenant une application Android √† d√©velopper ? Microsoft r√©pond pr√©sent et vous propose dans la derni√®re mouture de VSTS (anciennement Visual Studio Online – VSO) une cha√ģne d’int√©gration continue compl√®te pour Android.

Etape par étape, voyons donc ensemble comment industrialiser le développement Android avec VSTS.

Visual Studio Team Services

VSTS vous permet gratuitement de pouvoir g√©rer votre¬†de code source avec Git ou Team Foundation, et cela avec 5 contributeurs (tr√®s pratique pour les petits projets). Par ailleurs, VSTS vous permet aussi de g√©rer enti√®rement le projet, gr√Ęce au Dashboard, Backlog, outil de ticketing & reporting, etc. Dans ce billet, nous ne parlerons que de la partie industrialisation de la compilation.

Pour commencer, il faut vous rendre sur le site de VSTS afin de pouvoir activer votre évaluation gratuite.

La cha√ģne d’int√©gration continue

Aujourd’hui, l’utilisation d’une usine d’int√©gration continue que ce soit sur un Cloudbees, VSTS, Jenkins interne, nous para√ģt incontournable. En effet, il est important √†¬†chaque commit de v√©rifier si le build et notamment les tests unitaires ne soient pas cass√©s.
Dans le cadre d’un d√©veloppement mobile, un autre int√©r√™t¬†est de pouvoir¬†livrer √† tout moment et de mani√®re automatis√©e une version testable de l’application¬†(et ce genre de chose est extr√™mement appr√©ci√©e par les testeurs et¬†les utilisateurs).

Essayons maintenant de créer notre premier projet de build avec VSTS.

La création du projet

Lorsque vous √™tes connect√©s √† VSTS, vous avez la possibilit√© de cr√©er un nouveau « Team Projet », soit depuis le dashboard, soit depuis le « Control Panel »

Create_Project

Nous devons renseigner le nom du projet, sa description, le process template, mais aussi le contr√īleur de code source. Chose int√©ressante, nous pouvons choisir Team Foundation, mais l’int√©gration avec un Android Studio n’est pas forc√©ment simple, en revanche si nous d√©roulons la liste on s’aper√ßoit que VSTS nous propose d’h√©berger un d√©p√īt¬†Git. Nous avons donc opt√© pour un Repository Git.

Sur votre poste (un Windows ou un Mac), clonez votre d√©p√īt¬†Git, cr√©ez votre projet Android.

Android_Project

Dans le cadre de l’article, j’ai opt√© pour un simple « Hello World ».

La build definition

Une fois notre projet cr√©√©, nous allons pouvoir nous attaquer √† la partie processus de compilation (build definition).¬†Pour cela, rendons-nous sur le portail de notre projet, dans l’onglet « Build ».
Et cr√©ez une nouvelle « Build definition ».

Create_BuildDefinition

Ici¬†vous avez la possibilit√© de choisir parmi plusieurs mod√®les¬†pr√™ts √† l’emploi. Mais nous remarquons que le¬†template Android n’est pas pr√©sent.
Nous allons devoir utiliser un template vide que nous compléterons par la suite.

VSTS vous demande les informations concernant le contr√īleur de code source √† utiliser :

Create_BuildDefinition_01

Dans le cadre d’une cha√ģne d’int√©gration continue, nous avons la possibilit√© √† cette √©tape de cocher la case « Continous integration : build each check-in ».

Les build tasks

Apr√®s avoir cr√©√© notre « Build D√©finition », nous allons nous int√©resser √† la cr√©ation d’une task de build (t√Ęche¬†de compilation).

C’est √† ce moment que cela devient int√©ressant. En effet, nous voyons que VSTS propose √©norm√©ment de tasks qui vont nous faciliter la vie que ce soit pour le build, ou encore le test.

Create_BuildDefinition_AddTask

Nous allons choisir une task « Android Build ».

 

Param√®trage d’une task « Android Build »

Android_Build_Def

Ici nous devons renseigner l’emplacement de notre graddle.bat, l’emplacement du projet, et √©ventuellement les arguments √† passer √† Gradle lors de la compilation.

Android_Build_Def_Graddle

Autre chose int√©ressante, notamment pour l’ex√©cution de tests unitaires, VSTS propose d’instancier¬†un √©mulateur Android.

Android_Task_Emulator

Au moment o√Ļ j’√©cris l’article, cette fonctionnalit√©¬†n’est pas encore stable. Pour d√©marrer un √©mulateur, il ne faut pas mettre le nom de l’API dans « AVD Target SDK » mais l’ID du Target SDK qui se trouve dans VSTS. Pour conna√ģtre l’ID, vous devez¬†ajouter une « Commande Line Task »:

VSTS_Build_CommandTask

Apr√®s l’ex√©cution du build, vous¬†aurez la liste des Targets avec leur ID respectif.

******************************************************************************
Starting task: Run C:\Program Files (x86)\Android\android-sdk\tools\android.bat
******************************************************************************

Executing the following commandline. (workingFolder = C:\a\1\s)
"C:\Program Files (x86)\Android\android-sdk\tools\android.bat" list target
Available Android targets:
----------
id: 1 or "android-19"
Name: Android 4.4.2
Type: Platform
API level: 19
Revision: 4
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : default/armeabi-v7a, default/x86
----------
id: 2 or "android-21"
Name: Android 5.0.1
Type: Platform
API level: 21
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : no ABIs.
----------
id: 3 or "android-22"
Name: Android 5.1.1
Type: Platform
API level: 22
Revision: 2
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : no ABIs.
[...]

Une fois que vous avez correctement paramétré vos étapes de build, vous pourrez lancer la compilation :

Run_Build_Without_Emulator

Déploiement Hockey App

Lors d’un d√©veloppement d’une application mobile, il est souvent n√©cessaire de d√©ployer l’application sur un store priv√©.
L’√©tape de buid HockeyApp n’est pas pr√©sente par d√©faut, il faut aller cherche le plug-in dans le Marketplace Visual Studio. La bonne nouvelle est que le plug-in est gratuit.

Le plug-in HockeyApp est disponible directement à cette adresse : https://marketplace.visualstudio.com/items/ms.hockeyapp

Notre plug-in est d√©sormais s√©lectionnable dans notre t√Ęche de build.

Hockey_App_Add_Task

Nous pouvons l’ajouter et le configurer :

Hockey_App_Configure_Task

  • HockeyApp API Token : token que vous pouvez g√©n√©rer depuis votre console Hockey-App
  • App ID : Cet ID se trouve sur la home page de l’application
  • Binary File Path : l’emplacement de votre apk (par ex: {SomeFolder}\app\build\outputs\apk\app-debug.apk
  • Symbols File Path : L’emplacement du fichier mappings.txt (si toutefois celui est g√©n√©r√©). Ce champ est optionnel
  • Publish : Permettre aux utilisateurs de t√©l√©charger l’application
  • Mandatory : Mise √† jour obligatoire pour les users
  • Notify Users : Notifie les utilisateurs que la nouvelle version est disponible

Vous pouvez ensuite sauvegarder la t√Ęche (pensez bien √† la mettre √† la toute fin du projet de build).
Si tout se passe bien, vous devriez voir appara√ģtre votre application sur¬†le portail HockeyApp.

Notre avis

L’outil est assez jeune, de ce fait il est encore un peu limit√©.
Si vous avez des Tests Unitaires √† ex√©cuter sur un √©mulateur Android, cela va devenir assez vite compliqu√© et co√Ľteux.¬†L’option de d√©marrer un √©mulateur, pour le moment ne fonctionne pas de mani√®re imm√©diate comme sur Cloudbees. Le temps que cela soit corrig√©, vous allez devoir provisionner une VM et y installer¬†un √©mulateur Android, et faire tourner une VM sur Azure H/24 est assez on√©reux.

En revanche, si vous n’avez pas besoin d’√©mulateur, vous pouvez mettre votre projet sans soucis sur VSTS. Cependant, nous¬†vous conseillons d’abord de d√©couvrir l’outil via de petits projets, ne commencez¬†pas par migrer un projet complexe avec de nombreuses d√©pendances. En cas de probl√®me il faudra se tourner vers le support Microsoft ou les diff√©rents forums d’entraide.

C√īt√© prix, l’outil est gratuit jusqu’√† 5 utilisateurs, ce qui peut vous permettre de vous faire rapidement une id√©e. La fiche tarifaire¬†propose des prix¬†mensuels par palier aux nombres d’utilisateurs.VSTS Prix

Conclusion

Visual Studio Team Services vous permet donc de cr√©er votre cha√ģne d’int√©gration continue assez facilement avec des fonctionnalit√©s similaires¬†√† ce que l’on¬†retrouve par exemple sur Jenkins ou TFS (on-premises). Il est m√™me possible de faire tourner un SonarQube (analyse qualim√©trique du code source) depuis¬†votre cha√ģne d’int√©gration.
De plus, cet outil vous permet de g√©rer enti√®rement le cycle de vie de votre projet (Application Lifecycle Management): de la sp√©cification (backlog) jusqu’au¬†d√©ploiement (Release Management).
Cependant, de part sa jeunesse quelques fonctionnalit√©s sont perfectibles (comme le lancement des tests dans l’√©mulateur Android)
L’avantage de la gratuit√© jusqu’√† 5 utilisateurs vous permettra de tester le produit et de voir s’il peut r√©pondre √† vos besoins.

Alors, à vos builds !

Articles suggested :

  1. Le point sur Xamarin
  2. Envoyez des notifications push à vos applications Android avec C2DM
  3. Droidcon Londres 2011

Catégories: Blog Société

[Session Mensuelle] La commedia dell’ Agile

Agile Nantes - jeu, 05/19/2016 - 22:28
Pour cette session, Agile Nantes vous propose une approche th√©√Ętrale de l’agilit√© ; ) La session Le premier principe du manifeste agile r√©v√®le que l’√©quipe est le v√©ritable th√©√Ętre des op√©rations : l√† o√Ļ tout se joue. Mais il n’est pas toujours √©vident de rep√©rer, dans l’interpr√©tation collective, ce qui cr√©e des tragi-com√©dies… Lors cette [...]
Catégories: Association

Partagez la connaissance

Partagez BlogsdeDeveloppeurs.com sur les réseaux sociaux