đŸ”„ Voici comment rĂ©soudre n'importe quel problĂšme (en 9 tips).

J'ai eu beaucoup de demande d'apprenants (d'étudiants) qui me posait la question "Mais comment on fait pour aborder un problÚme complexe au boulot ?" surtout en programmation, alors voilà la réponse structurée et pratique.

đŸ”„ Voici comment rĂ©soudre n'importe quel problĂšme (en 9 tips).

Souvent on peut manquer de confiance et trouver insurmontable certains problÚmes que l'on nous pose en développement. Alors ici on va s'attarder à utiliser des méthodes pour résoudre efficacement ces problÚmes.

Parce que OUI il existe des méthodes pour booster le cerveau, du moins l'utiliser plus efficacement.

Pour nous en tout cas, ca fonctionne bien, on a réussi à faire des choses incroyables (IA, Machine learning, Traitement du langage naturel) sans avoir fait les études pour alors croyez en vous y'a pas de raison !

1 - đŸ§± Poser le problĂšme

Parfois on ne pense mĂȘme pas Ă  sortir le problĂšme de son cerveau / de ses pensĂ©es.

Poser le problÚme textuellement, avec une phrase en langage naturelle représentant une action et une finalité.

Exemple : J’ai besoin de crĂ©er quelque chose qui va permettre de rĂ©cupĂ©rer une donnĂ©e puis de la filtrer pour pouvoir crĂ©er plusieurs Ă©lĂ©ments d’interface pour les afficher.

La reformulation est souvent vecteur de solution, en exprimant le problĂšme vous aller vous rendre compte de certaines choses sans mĂȘme y rĂ©flĂ©chir et HOP la solution s’offre Ă  vous.

2 - 🙌 Parler en à d’autres

Le dĂ©veloppement, c’est social.

Ce n’est pas un symbole de faiblesse de communiquer votre problĂšme, les meilleurs dans leur domaines sont des personnes capable de vulgariser, de matĂ©rialiser leur pensĂ©es.

C’est de l’entraünement.

Alors faites en sorte de formuler votre problĂšme Ă  quelqu’un le plus souvent possible pour aiguiser cette compĂ©tence et par la suite ĂȘtre bien plus rapide en rĂ©solution de problĂšme.

đŸȘ„ Souvent en expliquant votre problĂšme Ă  quelqu'un vous aller trouver la solution, c'est magique.

3 - ✍ Faire un schĂ©ma

Poser la réflexion sous forme de dessin ou de schéma est souvent bénéfique pour prendre du recul. Cela évite se sentir submerger par la complexité du problÚme.

Utilisez un simple papier / crayon pour faire un dessin, une représentation mentale du problÚme et le démystifier.

Mon schéma est moche, mais il me permet de poser mes idées
En sortant le problĂšme de votre tĂȘte, vous utilisez le papier / le schĂ©ma comme une mĂ©moire tampon. Vous allez libĂ©rer du temps de cerveau pour rĂ©soudre le problĂšme.

Utilisez les modÚles UML pour modéliser votre problÚme dans un deuxiÚme temps, mais aussi pour pouvoir en parler à vos collÚgues, clients et collaborateurs sur un projet. C'est déjà plus pro.

Pour des schĂ©mas plus Ă©voluĂ©s et amenĂ©s Ă  ĂȘtre partagĂ©s Ă  distance par une Ă©quipe, notre solution favorite reste Whimsical. Il existe aussi Draw.io qui fait bien son travail mais l’expĂ©rience est moins fluide.

4 - ☕ Faites une pause

Prendre l’air, boire un cafĂ© en discutant avec vos collĂšgues, pensez Ă  autre chose c’est une technique ninja secrĂšte.

C’est vraiment pas facile de se faire violence pour sortir de sa concentration, je sais, mais c’est salvateur.

Combien de fois des solutions me sont venues Ă  l'esprit en prenant l’air, je ne compte mĂȘme plus, c’est quasiment Ă  tous les coups.

Vous laisser le temps de digérer le problÚme, me demandez pas comment ça marche en terme neurologique, mais ca fonctionne.

5 - 💡 Votre problĂšme est probablement dĂ©jĂ  rĂ©solu

Je ne sais pas pourquoi mais je vois trĂšs peu de dĂ©veloppeurs faire appel Ă  l’intelligence collective pour rĂ©soudre un problĂšme. Je parle pas de StackOverflow, mais de travailler la thĂ©orie derriĂšre la programmation, la mĂ©ta-cognition.

Je parle des « patrons de conception » et des bonnes pratiques de développement en général qui vont carrément résoudre vos problÚmes sans trop sourciller.

Donc une fois le problĂšme posĂ© essayez de regarder si il n’y a pas un Design Pattern qui fait dĂ©jĂ  le boulot pour vous, c’est lĂ  que votre cerveau de dĂ©veloppeur doit ĂȘtre aiguisĂ©.

Votre valeur ajoutée est de savoir repérer des modÚles de problÚmes pour justement trouver les patron de solutions bien connues, robustes et stables afin de résoudre un problÚme.

6 - 🚙 DĂ©composer le problĂšme en petites Ă©tapes accessibles

Pour passer du schĂ©ma au code, le mieux est de transformer votre schĂ©ma en petites Ă©tapes de dĂ©veloppement. Les Ă©tapes doivent ĂȘtre trĂšs simple.

J’aime bien l’analogie de la conduite de nuit. Vos phares n’éclairent que 40 ou 50 mĂštres devant vous, mais cela suffit pour aller Ă  votre destination, aussi loin soit-elle. On dĂ©mystifie par petites zones accessibles pour retirer l’obscuritĂ© d’un problĂšme plus complexe.

7 - đŸ„ž Ne pas avoir peur de faire moche

C’est un syndrome du dĂ©veloppeur dĂ©butant, oui c’est bien de faire propre, mais il y a un temps pour tout. Il faut savoir prioriser !

On commence par Ă©crire les signatures de fonctions / de mĂ©thode, les structure de classe « large », et on Ă©vite d’appliquer des bonnes pratiques de programmation directement.

Comme pour tout dans la vie, c’est une question de raffinage. Laisser aller sa rĂ©flexion sans limite, mĂȘme si le code s’avĂšre exĂ©crable au dĂ©but.

Je me remĂ©more le principe KISS (Keep It Simple Stupid) quand je sens que je pars trop loin dans la propretĂ© alors que mon programme ne fait toujours pas ce qu’il est censĂ© faire.

Si on cherche Ă  faire beau directement, on va s’infliger beaucoup de contraintes, de complexitĂ© et donc de charge mentale. L’objectif est d’abord de trouver une solution Ă  notre problĂšme. Une fois celui ci maitrisĂ© on pourra s’attarder Ă  rendre la solution Ă©lĂ©gante.

Pas de pression : Il faut résoudre le problÚme comme la solution vous viens, puis on travaillera plus tard à rendre cela propre et optimale.

8 - đŸ‘©â€đŸ’» Ecrire en commentaire les Ă©tapes dans la fonction

Une technique qui m’aide pas mal est d’écrire dans le corps de la fonction ou de mon fichier les Ă©tapes de la mise en place de la solution.

///This function should resolve my problem 
///I need to gather data from this super API -> https://api.io/
///And display results to DataView 
func resolveProblem() { 
	
    //1. Connect to network
    	
    //2. Make API Call to /products 
    
    //3. Transform JSON to Swift object -> Use Adapter pattern here
    
    //4. Publish changes to views -> Use Observer pattern here 
}

En anglais Ă©videmment comme ça les skills d’anglais sont aussi travaillĂ©s đŸ‡ș🇾🇬🇧

9 - âšĄïž Le refactoring

Une fois notre problĂšme rĂ©solu et maitrisĂ©, c’est comme en mathĂ©matique, on peut factoriser notre solution.

Pour rendre la solution plus Ă©lĂ©gante, et pas forcĂ©ment plus courte Ă  Ă©crire, mais plus « naturelle » Ă  comprendre et utiliser par d’autres dĂ©veloppeurs.

On pourrait faire comme ceci

func createQueryFrom(elements: [String]) : Query {}

func search(query: Query) : [Result] {}

var query = createQuery(elements: [‘a’,’b’,’c’])
var results = search(query: query)

Ou alors modifier les fonctions pour donner ce genre de comportement

extension Query {
    func searchFromQuery() : [Result] {}
}

var results = createQueryFrom([‘a’,’b’,’c’])
                                .searchFromQuery()

On est plus dans le naturel et dans la facilité d'utilisation, il suffit de chaßner les éléments pour créer et rechercher.

En faisant du refactoring aprùs coup, on peut aussi convenir d’une meilleure solution.

Donc tout benef.

⭐ Bonus

  • 🚰 Buvez de l’eau, le cerveau fonctionne mieux hydratĂ©. Con mais vrai.
  • 🛠 Faites des exercices par vous mĂȘme de votre cotĂ©, pour entraĂźner votre talent en rĂ©solution de problĂšme.
  • 🧠 Écoutez vous ! Si vous sentez que vous ĂȘtes trop sollicitĂ© (charge mentale intenable) alors arrĂȘtez vous. Pause.
  • 📖 Lisez des bouquins : HeadFirst in Design Pattern est un excellent livre par exemple.

Soutenez notre travail ❀

đŸ”„ Suivez nous sur Instagram, Facebook, LinkedIn ou abonnez-vous Ă  notre newsletter en devenant membre de notre blog :)