0% ont trouvé ce document utile (0 vote)
209 vues13 pages

Comment Penser Comme Un Programmeur

Cet article explique comment penser comme un programmeur pour résoudre des problèmes de manière efficace. Il présente un cadre en quatre étapes : comprendre le problème, planifier une solution, diviser le problème en sous-problèmes, et chercher des solutions en cas de blocage. La pratique régulière est essentielle pour améliorer cette compétence de résolution de problèmes.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
209 vues13 pages

Comment Penser Comme Un Programmeur

Cet article explique comment penser comme un programmeur pour résoudre des problèmes de manière efficace. Il présente un cadre en quatre étapes : comprendre le problème, planifier une solution, diviser le problème en sous-problèmes, et chercher des solutions en cas de blocage. La pratique régulière est essentielle pour améliorer cette compétence de résolution de problèmes.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Comment penser comme un

programmeur ? Leçon pour


pour résoudre des problèmes
Si vous vous intéressez à la programmation, vous avez peut-être déjà
lu cette citation :

“Tout le monde dans ce pays devrait apprendre


à programmer un ordinateur, parce que cela
vous apprend à réfléchir” — Steve Jobs

Vous vous demandez sans doute ce que cela signifie exactement que
de penser comme un programmeur. Et surtout comment on s’y
prend ?

Il s’agit surtout d’une façon plus efficace pour résoudre un


problème.

Dans cet article, mon but est de vous enseigner cette technique. A la
fin, vous connaîtrez les étapes à suivre pour être meilleur dans la
résolution de problème.

Pourquoi est-ce important ?

La résolution de problèmes est une méta-compétence.


Nous avons tous des problèmes. Grands et petits. Comment nous les
gérons est parfois…plutôt aléatoire.

A moins d’avoir un système, voici sans doute comment vous


“résolvez” des problèmes (c’est ainsi que je m’y prenais quand j’ai
commencé à coder) :

1. Essayer une solution

2. Si cela ne marche pas, essayer une autre solution

3. Si cela ne marche pas, répéter l’étape 2 jusqu’à ce que vous ayez de


la chance

Alors oui, des fois vous avez de la chance. Mais c’est la pire façon de
résoudre des problèmes ! Et c’est une grande, une très grande perte
de temps.

Le meilleur moyen de résoudre un problème implique :

1. D’avoir un cadre

2. De le mettre en pratique

“Presque tous les employeurs regardent en


premier lieu la capacité à résoudre des
problèmes.
Cette capacité est d’ailleurs plus recherchée que
la maîtrise d’un langage de programmation, la
capacité à déboguer ou même la conception de
systèmes.

Démontrer une capacité de pensée logique ou la


capacité à décomposer un gros problème
complexe est tout autant précieux (si ce n’est
pas plus) que d’avoir les compétences
techniques de base que requiert un travail.”
Hacker Rank (2018 Developer Skills Report)

Avoir un cadre

Pour trouver le bon cadre, j’ai suivi le conseil que Tim Ferriss donne
dans son livre “Les 4 heures du Chef”.

Cela m’a conduit à interviewer deux personnes impressionnantes : C.


Jordan Ball (1er ou 2ème contributeur sur plus de 65 000 membres
de Coderbyte) et V. Anton Spraul (auteur du livre “Pensez comme un
programmeur : une introduction à la résolution créative de
problème”).

Je leur ai posé les mêmes questions et devinez quoi ? Leurs réponses


sont presque similaires.

Bientôt, vous aussi vous les connaitrez.


Note : cela ne veut pas dire qu’ils font tout de la même façon. Tout le
monde est différent. Vous serez différent. Mais si vous débutez avec
des principes dont nous sommes tous d’accord qu’ils sont bons, vous
irez bien plus loin et plus rapidement.

“La plus grande erreur que j’observe chez les


jeunes programmeurs est de se focaliser sur la
syntaxe plutôt que d’apprendre comment
résoudre des problèmes” — [Link] Spraul

Donc, que devez-vous faire lorsque vous souhaitez résoudre un


problème ?

Voici les étapes :

1. Comprendre

Savoir exactement ce qui est demandé. La plupart des problèmes


ardus le sont parce qu’on ne les comprend pas (raison pour laquelle
il s’agit de la première étape).

Comment savoir si vous comprenez un problème ? Quand vous


arrivez à l’expliquer en termes simples.

Il a du vous arriver d’être bloqué sur un problème, de commencer à


l’expliquer et de vous rendre instantanément compte des trous dans
votre logique, chose que vous n’aviez pas vu au début.
La plupart des programmeurs connaissent ce sentiment.

C’est pourquoi vous devriez mettre sur écrit votre problème, dessiner
un diagramme ou en parler à quelqu’un (ou l’expliquer à une
chose…certaines personnes utilisent la méthode du canard en
plastique).

“Si vous n’arrivez pas à expliquer quelque chose


avec des termes simples, c’est que vous ne le
comprenez pas” — Richard Feynman

2. Le plan

Ne commencez pas à résoudre un problème sans plan (et ce même si


vous pensez pouvoir vous débrouiller). Planifiez votre solution !

Rien ne pourra vous aider si vous n’écrivez pas les étapes à suivre.

En programmation, cela signifie qu’il ne faut pas coder sans


réfléchir. Donnez à votre cerveau le temps d’analyser le problème et
de prendre en compte toutes les informations.

Pour avoir un bon plan, répondez à cette question :

“Sachant qu’en entrée j’ai X, quelles sont les étapes nécessaires pour
avoir un résultat Y à la fin ?”
Note : les programmeurs ont un excellent outil pour les aider à ce
sujet…les commentaires !

3. Diviser

Soyez attentif. C’est l’étape la plus importante de toute.

N’essayez pas de résoudre un seul gros problème. Vous vous y


casseriez les dents.

A la place, découper le en une multitube de petits problèmes. Ces


petits problèmes sont bien plus simples à résoudre.

Ensuite, résolvez ces petits problèmes les uns après les autres.
Commencez par le plus simple. Quand on dit simple, c’est ceux dont
vous connaissez déjà la solution (ou qui s’en approche).

Simple implique également que ce petit problème ne dépendant pas


de la résolution d’autres problèmes.

Lorsque vous avez résolu tous ces petits problèmes, il vous suffit de
tout assembler.

En assemblant toutes les solutions aux petits problèmes, vous


arriverez à la solution au problème initial. Félicitations !

Cette technique est la pierre de voûte de la la résolution de


problèmes. Souvenez-vous en et relisez si nécessaire les étapes à
suivre.
“Si je pouvais apprendre à tous les débutants en
programmation une capacité sur la résolution de
problème, cela serait celle de la ‘réduction du
problème technique’.

Par exemple, supposons que vous soyez un


débutant et que l’on vous demande d’écrire un
programme qui trouve parmi 10 nombres, le
troisième plus grand. Cela peut être un exercice
qui semble difficile au premier abord pour un
débutant et ce même si cela nécessite des
connaissances basiques sur la syntaxe.

Si vous êtes coincé, vous devriez essayer de


simplifier le problème. Par exemple en
commençant par trouver le nombre le plus élevé.
Ou en trouvant le nombre le plus élevé parmi
trois, voir entre deux nombres.

Réduisez le problème jusqu’au niveau où vous


êtes en capacité de trouver une solution et de
l’écrire. Ensuite élargir légèrement le problème et
réécrire la solution pour y répondre, et continuez
jusqu’à ce que vous ayez atteint le point où vous
avez commencé.” — V. Anton Spraul

4. Coincé ?

Et là, vous êtes sans doute assis en train de penser “Hey


Richard…C’est bien gentil tout ça, mais que se passe-t-il si je suis
coincé et que je n’arrive pas à résoudre ces sous-problèmes ?”

Premièrement, prenez une grande respiration. Deuxièmement, c’est


une question pertinente.

Ne vous inquietez pas, cela arrive à tout le monde !

La différence, c’est que les bons programmeurs (ceux qui sont bons à
la résolution de problèmes) sont plus curieux qu’irrités par les bugs
et erreurs qui peuvent survenir.

En fait, voilà trois choses à essayer dans ce type de situation :

• Déboguer : allez étape par étape au travers de votre solution


pour essayer de trouver là où vous vous êtes trompé. C’est
ce que les programmeurs appellent le débogage.

“L’art du débogage consiste à comprendre


exactement ce que vous dites à votre
programme plutôt que ce que vous pensez lui
avoir dit de faire” — Andrew Singer

• Réévaluer : prenez du recul. Regardez le problème d’un


autre point de vue. Est ce qu’une autre approche serait plus
pertinente ?

“Parfois nous sommes tellement perdus dans les


détails d’un problème que nous négligeons les
principes généraux qui pourraient apporter une
solution d’ensemble. […]

L’exemple classique est l’addition d’une longue


liste de nombre, 1 + 2 + 3… + n, alors que
l’utilisation de la formule de Gauss résout
simplement et rapidement par n(n+1)/2, ce qui
évite le fait de faire une longue addition.” — C
Jordan Ball

Note : Une autre façon de réévaluer est de tout recommencer depuis


le début. En repartant de zéro, on aborde le problème avec des yeux
neufs. Je suis sérieux. Vous sériez étonné par l’efficacité de cette
méthode.
• Cherchez : à mon vieux Google. Oui, vous lisez bien.
Qu’importe le problème que vous avez, quelqu’un l’a déjà
sans doute résolu. Trouvez cette personne / solution. Faites
cela même si vous avez résolu le problème ! Vous pouvez
apprendre beaucoup des solutions des autres.

Attention : ne recherchez pas de solution au gros problème.


Seulement des solutions aux petits problèmes. Pourquoi ? Parce qu’à
moins d’être vraiment coincé, vous n’apprendrez rien. Si vous
n’apprenez rien, vous perdez votre temps.

La pratique

N’espérez pas devenir bon après une semaine. Si vous voulez devenir
bon à la résolution de problèmes, résolvez beaucoup de problèmes !

La pratique, la pratique, la pratique. Ce n’est qu’une question de


temps avant que vous vous rendiez compte que “ce problème peut
facilement être résolu avec <insérez le concept ici>.”

Comment pratiquer ? Ce n’est pas le choix qui manque !

Les échecs, les puzzles, les problèmes de maths, le sudoku, le Go, le


Monopoly, les jeux vidéos…

En fait, un modèle récurent chez les personnes qui réussissent est


leurs habitudes concernant la résolution de mini problèmes. Par
exemple, Peter Thiel joue aux échecs alors qu’Elon Musk joue au
jeux vidéos.
“ Byron Reeves a dit ‘Si vous souhaitez savoir à
quoi va ressembler le leadership d’entreprise
dans trois à cinq ans, regardez ce qui se passe
actuellement dans les jeux en ligne.’

Retour au présent. Elon [Musk], Reid [Hoffman],


Mark Zuckerberg et tant d’autres disent que les
jeux ont été essentiels à leurs succès et à la
construction de leurs compagnies respectives.”
— Mary Meeker (2017 internet trends report)

Est ce que cela signifie que vous ne devriez jouer qu’à des jeux vidéo
? Pas du tout.

Mais quel est le principe d’un jeu vidéo ? Et oui, il s’agit de résoudre
des problèmes !

Donc, vous devriez trouver une activité vous permettant de


pratiquer. Quelque chose vous permettant de résoudre le maximum
de petites problèmes (et si possible, quelque chose qui vous procure
de la joie).

Par exemple, j’adore les challenges de code. Tous les jours, j’essaye
de résoudre au moins un challenge (en général sur Coderbyte).
Comme je le disais, tous les problèmes partage des modèles
identiques.

Conclusion

C’est fini les amis !

Maintenant, vous savez ce que c’est que de “penser comme un


programmeur”.

Vous savez aussi que la capacité de résoudre des problèmes est une
formidable capacité à cultiver.

Et si ce n’etait pas suffisant, vous savez désormais comment


pratiquer et renforcer cette capacité.

Plutôt cool, non ?

J’espère que vous tomberez sur de nombreux problèmes. Oui vous


m’avez bien lu. Au moins vous saurez comment les résoudre. Et vous
découvrirez qu’avec le temps, vous vous améliorerez.

“Juste au moment où vous pensez avoir franchi


un obstacle, un nouveau apparaît. Mais c’est ce
qui rend la vie intéressante. […]

La vie est un processus consistant à trouver des


solutions aux obstacles, les uns après les autres.
A chaque fois, vous apprendrez quelque chose.

A chaque fois, vous développerez votre force,


votre sagesse et votre perspective.

A chaque fois, les difficultés tomberont. Jusqu’à


ce que tout ce qu’il reste se résume à vous : la
meilleure version de vous.” — Ryan Holiday (The
Obstacle is the Way)

Maintenant, allez résoudre des problèmes !

Source : [Link]
solving-d1d8bf1de7d2

Vous aimerez peut-être aussi