Table des matières
Ouvrir table des matières
Comment résoudre un problème en programmation
Quelle est la chose la plus importante dans la programmation ? Quelle est la chose que les recruteurs regardent en premier lieu chez un candidat développeur ? Ou encore quel est le meilleur outil du développeur ? Vous l’aurez deviné par le titre de cet article, c’est sa capacité à résoudre un problème.
Là où les langages de programmation ne sont que des outils, votre faculté à prendre une main un problème donné et apporter une solution adaptée est la chose que vous devez acquérir et entraîner en priorité.
Et je vais vous explique comment faire dans les lignes qui suivent.
S’imprégner du problème tout en étant très curieux
Si je fais ce métier, c’est parce que je suis de nature curieuse et que je déteste faire toujours la même chose. J’ai besoin de nouveauté.
De ce fait, quoi de mieux que d’étudier de nouvelles problématiques ?
Systématiquement lorsque mes clients m’exposent leurs problèmes je me pose 2 questions pour mieux les comprendre : comment ? Et pourquoi ?
Pour le « comment », je m’intéresse d’abord en premier lieu à leur métier et à leur façon de fonctionner. Je découvre et j’apprends ce qu’ils font dans leurs activités.
En général, on pose beaucoup de questions, car c’est quelque chose de tout nouveau et que je ne connais pas. J’apprends leur métier.
Pour le « pourquoi », je challenge tout simplement leur problématique avec leur façon de fonctionner, ce qui me permet d’avoir une bonne interaction avec mon interlocuteur et de soulever de nouvelles problématiques.
Grâce à cette immersion, leurs problématiques me paraissent beaucoup plus claires et naturellement des solutions commencent à fleurir.
Ce que je fais également pour être sûr d’avoir bien compris la problématique, je reformule plus simplement et dans un autre vocabulaire la problématique à mon interlocuteur pour valider que nous parlons bien tous les deux de la même chose.
Décrire la solution
Des idées et des solutions commencent à immerger naturellement. Mais ce qui est important, c’est décrire vos idées sur papier.
Décrire textuellement ou dessiner un schéma suivant vos préférences ou vos affinités ou tout simplement en fonction de la problématique.
L’important est d’externaliser votre solution de votre cerveau pour y voir plus clair et mettre à plat votre trame de travail.
C’est un exercice que je vous conseille de faire à chaque problématique, car cela vous oblige à réfléchir plus profondément à votre solution.
Ne soyez pas frustré si vous n’avez pas la réponse complète à votre problématique, car elle est comme un puzzle.
Vous aurez tout le temps de la compléter plus tard pendant la réalisation de votre travail par exemple, car inconsciemment votre cerveau continue de travailler pour vous?
Il n’est pas rare de trouver réponse à ce que l’on cherche au moment où l’on est en plein dedans.
Réalisation du travail
Il est temps de programmer votre solution et le mieux est de prendre un à un chacun des points en plusieurs petites tâches afin de rendre plus simple votre réalisation.
Bien entendu, vous serez confrontés à certains moments à des choses qui ne fonctionnent pas comme vous le voudrez.
Soit vous vous approchez de la vérité et il ne vous reste plus qu’à débugger pour voir où cela coince et surmonter votre problème.
Soit vous vous en éloignez et le conseil que je peux vous donner est de prendre du recul sur votre problème, voire de repartir de zéro concernant le point sur lequel vous bloquez. N’ayez pas peur de le faire !
Si vous n’y arrivez toujours pas alors une petite recherche sur Google ou sur le site Stackoverflow pour vous dépanner votre petite problématique.
L’expérience et l’entraînement vous forgera
Apprendre à résoudre un problème est un travail de tous les jours. Des fois, vous réussirez, des fois, vous échouerez.
Vous ne pourrez jamais réussir du premier coup à tous les coups même avec une solide expérience.
Mais ce qui est sûr, c’est qu’avec de la pratique vous allez vous forger votre expérience et résoudre un problème deviendra plus facile et plus rapide.
Un bon exemple de cas réel pour mieux visualiser
Trêve de bla bla, le meilleur moyen de bien comprendre est de vous donner un cas concret que j’ai vécu récemment.
J’ai un client qui est dans le métier des animations pour enfants. Il aimerait pour ses animations terminées que ses clients lui retournent un feedback afin de pouvoir s’améliorer. Pour donner envie à ses clients de lui rendre un feedback, il a imaginé un questionnaire de satisfaction avec à la clé une carte cadeau d’une valeur de 15 € dans les magasins du groupe.
Et comme on lui a déjà réalisé plusieurs solutions et connaissant son métier, je n’ai pas eu trop de mal de m’immerger.
Nous lui avons mis en place une API qui permet de dialoguer entre différentes applications SaaS gérant la globalité de son activité.
Au passage, nous centralisons dans une base de données les informations créées dans chacun des SaaS.
S’imprégner du problème tout en étant très curieux
Voilà ce dont que j’ai compris de la problématique :
Il a besoin d’automatiser l’envoi du questionnaire de satisfaction à ses clients, la réception des réponses et l’envoi de la carte cadeau.
Dans la continuité d’utiliser des applications SaaS, nous avons choisi TypeForm qui permet de générer des jolis questionnaires. Il bénéficie également d’un système de webhooks couplé d’une API.
Décrire la solution
Voici comment je vois la solution :
- Création d’un cron qui s’exécutera tous les jours à 11h sauf le samedi et le dimanche pour vérifier par rapport à la date d’exécution les animations réalisées il y au moins 12h pour leur envoyer par e-mail un lien unique d’enquête de satisfaction (pour cela, on enverra l’identifiant unique de l’animation stocké dans notre base de données)
- Il se peut que le client n’a pas d’e-mail renseigné. Tant qu’il n’y en a pas, on retentera l’envoi de l’e-mail pendant 3 semaines.
- Définition de ce qu’est une animation réalisée : c’est une animation qui est attachée à au moins une offre qui sont en statut « won », qui ne sont pas en Typologie séjour, où au moins un animateur est affecté, qui n’ont pas encore reçu de lien TypeForm du questionnaire de satisfaction et qui ne sont pas annulées
- Une fois que le formulaire TypeForm est soumis, un webhook est envoyé à l’API pour être traité. L’objectID de l’animation est récupéré via les champs hidden du TypeForm. On vérifie qu’on a pas déjà répondu et que l’animation existe en base de données. On stocke les questions et pour chaque leur réponse sur l’animation.
- Création d’un autre cron qui s’exécutera toutes les minutes pour vérifier que des animations avec le questionnaire de satisfaction rempli, mais qui n’ont pas encore reçu de carte cadeau pour le leur envoyer
- On ajoute ensuite une activité de type démarche en date de la réponse du questionnaire avec le contenu des questions-réponses dans le logiciel SaaS PipeDrive
- L’activité sera en statut ouverte pour laisser le soin au commercial de recontacter le client ou de la clôturer
A partir de là, la trame de travail est en place. Bien entendu certains imprévus ou d’autres problématiques se manifesteront et ne peuvent pas être anticipés. La solution s’affinera et se complétera de détails au fur et à mesure de l’avancée.
J’espère que cela vous aidera dans la résolution de vos problèmes présents ou futurs. N’hésitez pas à me poser vos questions ou me faire part de votre façon de faire si vous le souhaitez.