af83.com

Innovation


Banner-innovation

L’innovation est dans l’ADN d’af83 : nous expérimentons en permanence de nouvelles solutions pour déterminer les plus performantes.

Notre veille R&D se concentre sur les technologies et les pratiques de rupture, avec une orientation particulière vers l’Open Source. Une fois matures, ces outils sont intégrés à notre offre et à nos projets, nous permettant de nous concentrer sur la prochaine innovation – pour tirer parti des outils et technologies les plus performants.

Nous combinons cette expertise à notre approche de design centrée utilisateur pour créer des expériences et services mémorables. Nous l'intégrons à tous nos projets, et sur l'ensemble de leur cycle de vie – de la définition de la stratégie à la conception des interfaces utilisateur.

Notre méthodologie UX

Notre démarche de design d'expérience utilisateur s'appuie sur le design thinking : Quatre phases (découverte, définition, idéation, itération) font alterner périodes de recherche et d’imagination et périodes de sélection, de prototypage et de test.

  • La phase de découverte vise à connaître et comprendre les utilisateurs pour identifier les opportunités (problèmes à résoudre) et définir la stratégie.
  • La phase de définition consiste ensuite à déterminer le périmètre du projet à partir des éléments de la phase de découverte, en définissant le système ou le service qui constitue la valeur ajoutée du dispositif, et l’échelle des priorités des autres fonctionnalités.
  • Plus on a de solutions possibles à un problème, plus grandes sont les chances d’avoir la meilleure. La phase d’idéation vise donc à en générer le plus possibles, sous forme d’ébauches, de croquis ou de récits, selon un mode collaboratif
  • Enfin, la phase d’itération est une phase de prototypage qui permet de tester la ou les solutions sélectionnées pour arriver à la version finale.

+ Nos outils UX

Nos outils et livrables UX sont entre autres :

Observation in situ

L'observation in situ permet de documenter les comportements et les actions réelles et de venir compléter les information recueillies sur le mode du déclaratif.

 

 

Tri de Cartes

Tri de Cartes

Appréhender les modèles de pensée et d’organisation de l’information des utilisateurs, afin de leur proposer un rubriquage et des schémas d’arborescence intuitifs.

 

 

Persona

Persona

Un persona est une description archétypale d’un utilisateur qui sert de guide tout au long du process. Synthèse de la recherche, il se présente sous la forme d’une fiche qui incarne un utilisateur englobant les caractéristiques d’un segment.

 

 

Business Model Canvas

Business Model Canvas

Le Business Model Canvas (BMC) permet de représenter de façon synthétique et visuelle les modifications que va apporter la création du dispositif au sein de l’organisation et la nouvelle création de valeur.

 

 

Alignment Diagram

Diagramme d'alignement

Synthèse des informations collectées, un diagramme d’alignement synthétise les comportements, actions, pensées et sentiments de l’utilisateur, en regard de l’offre existante. Cette classe de documents permet de mettre au jour les manques et les opportunités et sert de base à la phase de définition qui fixe le périmètre du projet.

 

 

Tests RITE

La méthode "Rapid Iterative Testing and Evaluation" (RITE) consiste à réaliser des tests d'usage sur prototype de l'interface, et à modifier le design dès lors que des points pertinents sont observés, et ce sur plusieurs itérations successives.

 

Tests UtilisateursTests Utilisateurs

Les tests utilisateurs sont établis sur la base de scénarios d’usage. Une session réunit entre 6 et 10 participants (recrutés selon les profils des segments). Les tests donnent lieu à un document de reporting et de recommandations sur tous les aspects du dispositif, pour apporter d’ultimes corrections.

 

Wireframes

Wireframes

Les wireframes sont les schémas filaires des écrans. D’abord représentés sous forme de crayonnés (basse définition), ils s’affinent jusqu’à présenter le contenu des pages et la position de chaque élément (haute fidélité). Ils permettent de visualiser l’organisation des écrans et sont testés et corrigés, avant de servir de base à la création graphique.

 

Taskflows

Taskflows

Les taskflows (ou flow charts) modélisent l’interaction d’un utilisateur avec le dispositif. Elaborés pendant la phase d’idéation, ils illustrent la façon dont va fonctionner le dispositif.

 

 

Arborescence

Arborescence

L’arborescence formalise la façon dont le dispositif est structuré et l’information organisée. Elle est établie à partir du résultat des séances de tri de cartes et préfigure en partie les systèmes de navigation.

 

Technologies de pointe

Nos développeurs sont polyglottes. À chaque projet nous choisissons un  ensemble cohérent de technologies et d'outils pour assurer la réussite du projet, réduire les coûts et les délais de mise sur le marché et  permettre une scalabilité extrême. Nous avons cependant des technologies de prédilection, et dans lesquelles nous avons développé une grande expertise.

+ Back

RubyRuby

Ruby est notre langage de prédilection. Dynamique et expressif tout en étant très concis, il permet de créer des applications et des bibliothèques faciles à maintenir et à faire évoluer dans la durée. Imprégné des bonnes pratiques actuelles, il facilite le travail en équipe sur des projets importants. Quand il faut faire du « Quick & Clean », il n'a pas son pareil.

Notre connaissance de son environnement est très pointue (que cela soit pour du web avec Rails et Sinatra, des API temps-réel avec Goliath ou encore des Workers avec Celluloid). Surtout, nous savons que les performances d'un système résultent de son architecture - et Ruby facilite la création d’architectures simples cohérentes et très performantes.

 

Ruby On RailsRuby on Rails

Rails est probablement le framework web Open Source le plus productif sur le marché. Il nous permet de livrer rapidement des applications qui peuvent être très complexes. Son écosystème est extrêmement riche et nous aimons l'attachement de celui-ci aux pratiques modernes de développement piloté par la qualité. Notre expérience avec Rails remonte à 2007, avant même qu'il n'atteigne la version 1.0.

 

 

Logo GoGo

Si le C est parfois requis pour des raisons de performance, celui-ci n'est pas un langage productif, tout particulièrement quand il faut traiter certains problèmes complexes de concurrence. Go nous permet de trouver un équilibre entre performance et productivité du développement sur ces classes de problèmes. Bien que récent, ce langage développé et soutenu fortement par Google propose des garanties importantes quant à son évolution dans la durée.

 

Node.JSNode.JS

Nous avons adopté Node.js pour des projets internes dès sa sortie en 2009 et pour des projets en production depuis 2011. Ce moteur de traitement asynchrone d'entrées/sorties orienté événements est conçu pour développer des applications capables de monter fortement en charge. De nos jours il dispose d'un très large écosystème et d'une forte adoption. Il est particulièrement bien adapté à certaines problématiques qu'on appelle « IO Bound » (comme les proxies ou les API frontales).

+ Front

HTML5 - CSS3HTML5 et CSS3

Nous sommes de grands supporteurs des standards du web et nous suivons de près les dernières versions de HTML et CSS. Vidéo, animations, belles polices dans le navigateur tout en restant accessible et fonctionnel sur le desktop, comme sur mobiles et tablettes. C'est le présent.

Nous savons choisir les éléments qui sont déjà supportés, comme préparer l'avenir des fonctions qui sont attendues. Nous avons ainsi réussi à créer des applications « full web » pour des projets d'envergure, ou sur lesquels la quasi totalité des applications dans le domaine sont des clients lourds.

 

 

JavaScript

Ces dernières années ont vu la renaissance de JavaScript comme un langage de programmation générique. Nous faisons du développement structuré en JavaScript depuis de nombreuses années. Nous l'utilisons évidemment du côté client, mais nous l'utilisons également côté serveur (comme serveur d'applications avec Node.js ou pour l'expression des requêtes en base de données avec CouchDB et MongoDB). Et pour garantir la qualité de notre code JavaScript, nous utilisons de nombreux outils comme Grunt, pour automatiser un certain nombre de tâches, ou Bower pour gérer les dépendances

 

Logo BackboneBackbone.js & Redux

Le niveau de complexité des applications vivant dans le navigateur a fortement augmenté ces dernières années. Il est donc nécessaire de traiter le JavaScript côté navigateur comme une application. Backbone et Redux sont nos frameworks JavaScript favoris. Ils permettent de bien structurer le code, tout en offrant de très bonnes performances. De plus, ils facilitent largement le développement des applications qui doivent pouvoir fonctionner en mode déconnecté.

 

d3.js

d3 est une superbe bibliothèque de visualisation, manipulation et représentation de données. Quand il faut générer des graphes dans le navigateur, c'est notre choix par défaut.

Frameworks CSS, SASS et Bootstrap

Nous pensons que le CSS c'est du code. Il doit donc être structuré et de qualité, pour être évolutif. Nous en utilisons plusieurs frameworks mais surtout les préprocesseurs CSS de type SASS pour éliminer la répétition du code. Nous utilisons également souvent Bootstrap, un framework CSS/JavaScript de chez twitter, pour démarrer rapidement des projets ou proposer un chartage « par défaut » des pages d'administration.

+ Architecture

Asynchrone

Nous avons développé une grande expérience dans la construction d'architectures asynchrones scalables sur des projets à fort trafic. Nous utilisons souvent des message queues comme Resque, Sidekiq, RabbitQM et 0MQ, ainsi que des frameworks asynchrones comme Node.JS, Goliath ou Celluloid. Nous connaissons les problématiques particulières en termes de test, de débogage, de gestion d'erreurs et plus généralement, de fiabilité qui naissent de ces technologies.

 

Redis - MongoDBNoSQL

NoSQL est un nom générique pour l'ensemble de bases de données non-relationnelles. Il s'agit soit des bases de données généralistes permettant une montée en charge des performances et une flexibilité accrues, soit des bases de données qui ciblent des cas d'usage très particuliers.

Nous utilisons surtout trois solutions sur de nombreux projets, Redis, ElasticSearch et MongoDB, mais nous avons travaillé avec beaucoup d'autres solutions comme Neo4J pour les problématiques de graphes, mais aussi CouchDB ou Sphinx. Nous ne sommes pas des idéologues : quand un projet le requiert, nous utilisons toujours des bases de données relationnelles comme MySQL ou PostgreSQL, que nous maîtrisons sur des déploiements importants depuis de nombreuses années.

Work