đ„ 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.
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.

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 :)