L'ingéniosité est la capacité à trouver des solutions à des problèmes, complexes ou non, uniquement à partir de connaissances et de ressources déjà existantes. Elle implique l'utilisation de l'imagination mais aussi des connaissances techniques approfondies pour concevoir des idées innovantes, pratiques et réalisables. L'ingéniosité consiste souvent à détourner les règles et principes d'un domaine pour créer quelque chose ou surmonter un obstacle de manière optimale, sans forcément viser une découverte majeure.
Le fait de ne pas viser de grandes découvertes distingue souvent l'ingéniosité de l'innovation. L'innovation vise la création de nouveautés potentiellement révolutionnaires, tandis que l'ingéniosité mise sur l'utilisation intelligente de ressources existantes pour résoudre des problèmes ou créer des solutions efficaces. Elle s'applique à la conception de produits, à la résolution de problèmes techniques, à la gestion de projets ou à la vie quotidienne.
L'informatique regorge d'exemples ingénieux. Dans Super Mario Bros., les développeurs ont réutilisé des textures en modifiant la couleur et l'orientation pour créer de nouvelles ressources sans augmenter la taille finale du jeu. Git illustre aussi l'ingéniosité, en ne stockant que les différences entre les versions pour économiser de l'espace. Enfin, Bitcoin est sans doute l'une des démonstrations les plus marquantes de ces dernières décennies. Sans découvertes cryptographiques révolutionnaires, il a combiné des concepts existants pour proposer une monnaie numérique décentralisée.
Ces exemples illustrent bien ma vision de l'ingéniosité. L'ingéniosité, c'est la capacité à résoudre des problèmes, complexes ou non, à partir de ressources existantes. Elle est essentielle pour faire progresser la technologie et résoudre les défis du monde numérique.
Là où j'ai le mieux démontré mon ingéniosité, c'est dans la création de FlorAccess, une API d'authentification sans mot de passe développée pour centraliser l'authentification et simplifier l'expérience utilisateur. Pour FlorAccess, je n'ai rien inventé, j'ai combiné des technologies existantes, comme les JSON Web Tokens (JWT) pour les sessions et l'utilisation d'un code à usage unique (OTP) pour l'authentification.
Je trouvais l'authentification par mot de passe trop contraignante et j'ai identifié un point faible. la sécurité dépend du maillon le plus faible. Même un mot de passe très long peut être contourné via la réinitialisation, qui est souvent le maillon le plus vulnérable.
Ma réflexion a été la suivante. Si le mot de passe peut être contourné, pourquoi ne pas s'en passer et utiliser un mécanisme de connexion par OTP envoyé par email ? En envoyant un code à usage unique à l'adresse de l'utilisateur, on s'assure que seul le détenteur de cet email peut se connecter. En associant cela à des JWT pour gérer les sessions, on obtient un système à la fois simple et sécurisé sans stocker d'informations sensibles côté serveur.
Après cela, je me suis intéressé à la faille suivante : l'erreur humaine. Les utilisateurs peuvent être trompés par des emails malveillants semblant légitimes. Comment réduire ce risque ?
Ma deuxième solution consiste à inclure dans l'email une information vérifiable par l'utilisateur (et non un simple lien). L'utilisateur peut ensuite vérifier cette information depuis le site officiel (accessible, par exemple, via ses favoris) pour s'assurer de l'authenticité du message. Ainsi, même si un attaquant falsifie un email, il ne pourra pas reproduire l'information vérifiable depuis le site légitime. L'objectif est d'offrir à l'utilisateur un moyen concret de se protéger contre le phishing.
Je vais donc ajouté un token dans chaque email, généré à partir d'informations de l'utilisateur et de diverses autres données, incluant un secret partagé côté serveur. L'utilisateur peut vérifier l'authenticité de ce token en le saisissant sur une page dédiée de l'application. Si le token est valide, l'email est légitime. La génération du token est suffisamment robuste pour empêcher sa falsification, et le secret partagé ainsi que le chiffrement garantit que seul le serveur peut produire des tokens valides.
Si l'email de l'utilisateur est compromis, d'autres solutions existent : applications d'authentification (Google Authenticator) ou clés de sécurité physiques. Ces options sont plus sécurisées mais souvent plus complexes à déployer pour l'utilisateur, ce qui va à l'encontre de l'objectif de simplicité recherché avec FlorAccess.
J'ai toujours aimé trouver des solutions ingénieuses : dès l'enfance, je cherchais des astuces pour calculer plus rapidement ou simplifier des exercices. Une fois qu'un concept est maîtrisé, j'ai l'habitude de le décomposer en sous-systèmes et d'utiliser ces éléments pour résoudre des problèmes plus complexes. C'est l'une de mes forces.
En informatique, même une personne très compétente peut se heurter à un plafond technique. L'ingéniosité permet souvent de contourner ces barrières et de continuer à progresser malgré les obstacles.
Pour développer l'ingéniosité, deux choses sont clés : acquérir des connaissances techniques approfondies dans le domaine visé, et remettre en question les limites apparentes. Interroger les raisons d'une contrainte permet souvent d'identifier des pistes pour la contourner.
Attention, il existe quand même des limites réelles à la technologie actuelle. L'idée n'est pas de croire que tout est possible, mais de tester les limites, d'en comprendre les causes et d'envisager des solutions dans ce cadre. Le tout est de ne pas prendre pour acquis les limites qu'on nous présente, mais de les remettre en question pour voir si elles sont vraiment infranchissables ou si des solutions ingénieuses peuvent les contourner.
Cette compétence est au coeur de mon projet professionnel. À chaque problème, je me demande d'où il vient, s'il est récurrent et si des solutions satisfaisantes existent déjà. Selon les réponses, je décide d'utiliser une solution existante ou de concevoir moi-même une solution ingénieuse.
Tous mes projets reposent sur ce principe. FlorAccess est né d'un besoin d'authentification centralisée et simple. Econoris est né du constat qu'il n'existait pas d'outil simple permettant d'estimer ses dépenses à l'avance. Flollylist est né pour résoudre un problème personnel : garder une trace utilisable des idées de cadeaux.
En résumé, mes projets naissent souvent d'un problème concret. L'ingéniosité me permet de proposer des solutions pragmatiques et adaptées, et c'est en partie cette approche qui motive mon envie de créer une entreprise de développement logiciel.