Nous sommes développeurs… d’expérience utilisateur

Nos technologies sont  solides, surprenantes  et terriblement  efficaces  mais nous les développons pour qu’elles soient au service d’un processus de création et de réalisation à destination d’usagers réels, en environnement réel. Vous les verrez donc rarement au premier plan des discussions durant nos projets.

Nous sélectionnons dans chaque projet le meilleur ensemble technologique pour les objectifs et l’environnement d’utilisation visés afin de fournir aux utilisateurs finaux un  résultat performant, séduisant et efficace. 

Nos trois atouts entre technologies et design :

 FACILITER LA CRÉATIVITÉ 

Donner enfin un vrai pouvoir d’expression aux créatifs lors du prototypage logiciel

Nos technologies parlent un langage compatible avec celui des designers d’interaction, des designers graphiques, des UX designers et des ergonomes. Imaginer des solutions basées sur ces technologies ne requiert pas de compétences en informatique. Chacun peut s’appuyer sur ses savoir-faire et outils habituels et nous faisons ensuite le lien vers le prototypage logiciel, sans ambiguité ni dénaturation par rapport à ce qui a été imaginé.

Nos technologies offrent des facilités pour traiter les « patterns » et « composants » habituels mais elles prennent vraiment toute leur mesure lorsqu’il s’agit d’imaginer des solutions interactives sur mesure nécessaires à la résolution des défis qui nous sont soumis. Nous parvenons à cela sans augmentation significative de la quantité de code informatique à écrire, contrairement à ce qu’impose la plupart des environnements industriels modernes, dans lesquels tracer un simple rectangle ou une ligne pointillée peut être un véritable défi.

Nous avons particulièrement soigné l’intégration logicielle de la production graphique vectorielle venant des outils habituels des designers. Si bien que nous n’avons pas de code logiciel spécifique à écrire pour que ce graphisme s’affiche. Nous traitons les ressources graphiques comme des sites web le font avec leurs ressources, telles du texte ou des images. Nos logiciels sont littéralement habillés par le graphisme… et peuvent changer d’habits sans mise à jour logicielle, ni recompilation, évitant toute réappropriation fastidieuse du graphisme par des développeurs.

Nous avons atteint cette même flexibilité pour les animations visuelles, les interactions et les comportements des objets numériques que nous réalisons. Nous parlons d’ailleurs d’objets numériques plutôt que de composants logiciels puisque ces entités sont la résultante d’un travail qui est plus proche de celui de designers d’objets que de développeurs logiciels, au même titre que le seraient des objets physiques faisant partie de notre quotidien.

 EXPÉRIMENTER CONTINUELLEMENT 

Permettre de vraies boucles de création et d’évaluation pendant le prototypage logiciel, au-delà des processus de développement agile

Nous sommes parfaitement compatibles avec les processus agiles mis en œuvre dans les équipes de développement logiciel avec lesquelles nous collaborons. Simplement, ces processus s’avèrent encore trop contraignants pour nos équipes pluridisciplinaires qui ont la volonté d’évaluer et d’ajuster continuellement les résultats au cours du processus de production. Nous les avons donc étendus.

Et nos technologies se placent aussi dans cette philosophie: pourquoi, dès que le code logiciel entre en jeu, faudrait-il à tout prix structurer l’expérience utilisateur uniquement en termes de spécifications, ou même de « features » ou de « stories » ? Pourquoi figer ou perturber le travail de création et de mise au point de l’expérience utilisateur ? Avec nos technologies, il est facile de poursuivre ce travail de création en s’appuyant sur la dynamique et le concret d’un prototype, avec la même légèreté que lors des phases de maquettage papier. Lors des phases de développement logiciel, toute l’équipe reste lucide, souple et focalisée sur le résultat pour l’utilisateur final.

Et si des besoins liés à des expérimentations en situation opérationnelles apparaissent, nos technologies permettent d’instrumenter les objets numériques réalisés pour rendre compte de leur utilisation et servir de base solide à une exploitation scientifique par des expérimentateurs. 

 SE FOCALISER SUR L’UX ET NON SUR LE CODE 

Donner de la souplesse et des facilités aux développeurs logiciels sur la réalisation d’environnements interactifs riches et hétérogènes

Evidemment, nous n’oublions pas les développeurs qui ont à gérer l’intégration du système interactif dans son environnement. Nous n’oublions pas non plus les besoins légitimes et stratégiques liés à l’industrialisation.

Nos technologies permettent d’exploiter facilement tous types de périphériques interactifs mais aussi tous types de modalités d’interaction combinées (graphique, vocal, gestes, etc.). Nos réalisations ne sont pas limitées à un seul écran ni à un seul utilisateur. Elles peuvent consister en des environnements interactifs répartis, collaboratifs et multimodaux. Nous rendons simples et évolutives la communication et la coordination entre les éléments d’un système interactif.

Les développeurs utilisant nos technologies s’appuient sur leurs habitudes et leurs outils: nous intégrons finement nos technologies à chaque framework industriel sur lequel elles reposent. Les développeurs peuvent donc utiliser leurs environnements habituels tels que Apple Xcode, Microsoft Visual Studio, Eclipse, Qt Creator, etc. Et les développeurs peuvent mélanger à volonté les composants logiciels natifs de leur framework industriel avec les objets numériques sur mesure créés avec nos technologies. Nous avons sélectionné ces frameworks (Apple Cocoa, Qt 5, Microsoft WPF, etc.) pour les garanties qu’ils apportent en termes d’intégration avec des systèmes industriels existants mais aussi pour les performances graphiques et logicielles élevées auxquels ils donnent accès.

Enfin, modifier ou remplacer des parties d’un objet numérique n’aura pas d’impact sur le reste de l’objet. Ceci garantit une réutilisation très importante du code logiciel et une pérennité des systèmes interactifs qui peuvent évoluer au fil du temps, que ce soit en phases actives de prototypage ou lors d’évolutions ultérieures. Les objets numériques peuvent même être recombinés ou s’échanger des éléments entre eux.

Notre stratégie technologique :

Les environnements interactifs les + adaptés, un minimum de code

En contexte de prototypage, deux objectifs sont importants :

# Réaliser, évaluer et ajuster les solutions au problème posé, dans des cycles itératifs les plus rapides possibles
# S’assurer que les solutions imaginées sont réalisables dans l’environnement visé et en particulier que le système sous-jacent saura s’interfacer avec la couche interactive que nous lui adjoignons

La rapidité des cycles itératifs dépend de la capacité à se concentrer sur le développement de l’expérience utilisateur plutôt que sur celui du code. Pour y parvenir, nous nous appuyons sur un noyau logiciel qui nous permet de faire fonctionner le même code logiciel sur téléphone, sur tablette, sur grands écrans tactiles et sur machines de bureau classique, ceci en interaction avec des systèmes de capteurs ou d’interacteurs tangibles et physiques.

Nous proposons également toutes sortes d’outils et de bibliothèques logicielles pour nous interfacer, même en contexte de prototypage, avec un système réel, en minimisant de façon radicale les impacts logiciels sur ce dernier. Comme cela, nous nous basons toujours sur des données et des temps de réaction réalistes dans la mise au point de nos solutions. Et il nous arrive fréquemment, au travers de nos prototypes, d’aider à la mise au point du système en détectant des incohérences, des problèmes de performances, etc. Notre approche est donc également gagnante pour le développement industriel lui-même.

Du prototype à l’industrialisation

Nos intégrations avec les frameworks industriels (Apple Cocoa, Qt5, etc.) offrent les propriétés suivantes :

# Possibilité de mélanger des briques logicielles standards disponibles nativement sur les frameworks industriels et des briques logicielles à forte valeur ajoutée s’appuyant sur nos technologies (gestion du multitouch, communication entre applications, animations complexes, comportements interactifs, gestion et transformation des flux de données, etc.)
# Utilisation au travers de différents langages de programmation (XML, C, C++, Objective-C, Java, Perl, Python)
# Interchangeabilité des moteurs de rendu graphique pour toujours s’appuyer sur les plus performants par rapport au type d’application considéré
# Support d’un large ensemble de systèmes d’exploitations (Windows, OSX/IOS, Linux, etc.) et de périphériques (PC classique, tablettes, téléphones, etc.)

Ces propriétés nous permettent de passer rapidement et sereinement de premiers prototypes très expérimentaux à des prototypes complètement fonctionnels et intégrés, voire au logiciel industriel finalisé.