Vous êtes sur la page 1sur 15

6 qualités indispensables pour

devenir programmeur

Ce guide est issu du site web Le Blog Du Hacker


https://www.leblogduhacker.fr
©Michel Kartner
Table des matières
Introduction ........................................................................ 1
1 La capacité de diviser un problème en sous-parties ... 2
2 La capacité d’expliquer clairement aux autres ............ 3
3 La capacité de prendre du recul .................................. 5
4 La capacité de résoudre des problèmes ....................... 6
5 La capacité de chercher et persévérer ......................... 7
6 La capacité d’être polyvalent ..................................... 10
Ce qui vous attend .............................................................. 11
Introduction

Introduction
Bonjour, je m’appelle Michel et j’administre le site web Le
Blog Du Hacker à travers lequel j’enseigne le hacking
éthique, autrement dit « apprendre l’attaque pour se
défendre ». Bien souvent le domaine du hacking croise celui
de la programmation. Par exemple, l’étude du code
source d’un site ou d’un programme permet de détecter des
vulnérabilités dans celui-ci, et de les corriger. Par le présent
guide, je me focaliserai donc sur la programmation qui est
un domaine très utile en hacking, mais qui peut aussi s’en
détacher.

Quoi qu’il en soit, la programmation demande beaucoup de


compétences, et celles-ci ne sont pas toujours techniques. Il
n’est pas uniquement question de savoir écrire du code.

Le but de ce guide est donc de fournir 6 qualités


indispensables à tout bon programmeur. La liste n’est
évidemment pas exhaustive, et celle-ci sera peut-être à
adapter à la situation de chacun. Mais ce sont de qualités
communément reconnues et que de nombreux
programmeurs partagent.

Les voici donc, bonne lecture.


1
La capacité de diviser un problème en sous-parties

1 La capacité de diviser un problème


en sous-parties
Programmer, c’est demander à l’ordinateur de résoudre un
problème donné, avec des paramètres et un résultat attendu.
Il ne s’agit pas forcément de résoudre un problème au sens
mathématique du terme, mais de mettre au point une idée
ou fonctionnalité de façon stable, fonctionnelle et réfléchie.

L’ordinateur reçoit des instructions et les exécute. C’est déjà


un bon point, mais on ne peut pas lui en demander plus.

Nous, de notre côté, nous partons d’un « problème », par


exemple « on veut trier une liste de nombres de façon
efficace ».

On a donc une étape intermédiaire et essentielle à mettre en


place : définir le problème, choisir comment le représenter
et surtout comment parvenir à la solution.

C’est à ce moment que l’étape de résolution du problème


intervient, et c’est le moment où l’on cherche un algorithme
(c’est-à-dire les étapes à réaliser pour résoudre le problème,
comme une recette de gâteau à créer).

Les étapes en question peuvent être plus ou moins


compliquées et faire partie d’un ou plusieurs sous-
2
La capacité d’expliquer clairement aux autres

algorithme. Le fait de savoir découper le problème pour


arriver au but final est donc quelque chose d’indispensable.

2 La capacité d’expliquer clairement


aux autres
Bien qu’étant devant un écran pour taper du code, la
programmation est une activité qui demande des
interactions sociales. Et cela que ce soit pour demander
de l’aide aux autres, ou en recevoir de leur part.

« Ce qui se conçoit bien s’énonce clairement »

Tout le monde n’a pas votre écran sous ses yeux, et ne


comprend pas d’emblée la logique de votre code ou le but
de votre programme. Pour cela il est fondamental de bien
expliquer le contexte, le but recherché ainsi que les
tentatives déjà essayées.

Mais ce n’est pas tout, la capacité d’expliquer est également


une preuve de compréhension de ce que nous sommes en
train de faire, autrement dit de notre propre code.
L’anecdote peut être spécifique et faire sourire, mais il m’est
souvent arrivé de copier et coller littéralement une question
que l’on m’a posée sur Google, puis de copier et coller
3
La capacité d’expliquer clairement aux autres

littéralement le résultat du premier site retourné. La


paresse n’est jamais bien perçue pour autrui. Si vous
demandez aux autres de résoudre vos problèmes sans avoir
compris votre code ou sans avoir envie de le comprendre ou
de l’expliquer, c’est que le domaine n’est probablement pas
fait pour vous.

De façon générale, le fait de ne pas savoir expliquer un


morceau de code à soi-même est quelque chose qui peut
amener à des erreurs diverses : crash du programme,
blocages divers, vulnérabilités, problèmes de performances,
etc…

4
La capacité de prendre du recul

3 La capacité de prendre du recul


Nous avions vu qu’il est important de bien savoir découper
un problème en sous parties pour le comprendre et
produire des résultats attendus. Mais l’inverse est aussi
essentiel : savoir prendre du recul et observer le
programme dans sa globalité.

Observer ne suffit pas, il faut surtout comprendre. Car il


est facile de se perdre dans du code pendant des heures ou
journées entières, alors que ce que l’on cherche à faire peut
au final se retrouver inutile, ou à modifier.

Cela demande une compréhension générale du but à


atteindre ainsi que de bien cerner le but de chaque partie,
mais aussi ses interactions avec les autres parties.

Parmi les erreurs courantes à noter concernant le manque


de vision globale, on peut noter :

• La répétition d’une fonctionnalité/d’un code dans


des parties supposées être complémentaires.

• La mauvaise utilisation d’un composant ou d’une


bibliothèque de code (de façon à créer des erreurs ou
de façon non standard/non prévue initialement).

5
La capacité de résoudre des problèmes

• La difficulté à gérer le programme par l’utilisateur


final.

• etc..

4 La capacité de résoudre des


problèmes
Au-delà du fait de savoir diviser un problème en sous-
parties et d’avoir une vision générale sur le programme, le
programmeur doit être logique et avoir l’esprit créatif.

Les bugs sont redoutés, mais inévitables, et il vaut mieux se


préparer à faire face à des problèmes « insurmontables ».

Parfois, la solution ne nous vient pas, il convient donc soit


de demander de l’aide, soit de trouver une solution
alternative.

L’idée n’est pas d’éviter les erreurs mais bien de les


comprendre et d’en prendre note pour la suite.

Enfin, c’est donc naturellement l’expérience qui permet de


trouver et de corriger plus facilement des bugs,
malheureusement pour cela il n’y a pas de secrets…

6
La capacité de chercher et persévérer

5 La capacité de chercher et
persévérer
Je pense que c’est l’un des points les plus importants. Il
s’agit d’apprendre à chercher et à trouver de l’information.
On ne naît pas programmeur, et personne ne prend une
page blanche pour commencer à tout programmer à la main
de A à Z.

Beaucoup de solutions sont à portée de main, encore faut-il


savoir les chercher. Cela passe par la compréhension
évidente du problème, mais aussi à sa formulation.

La façon la plus typique de chercher une solution est


d’exposer le problème dans un moteur de recherche.

Pour vous donner un exemple simple et efficace, un


programmeur ne tapera jamais dans Google :

« comment faire un algorithme de tri le plus rapide et


efficace en langage C pour Windows »

Mais il tapera plutôt :

« best sorting algorithms examples »

7
La capacité de chercher et persévérer

Cela montre plusieurs choses :

• Le programmeur ne perd pas de temps à écrire des


phrases entières, car justement il connait les bons
mots clés.

• Le programmeur cherche souvent en anglais, car il


sait qu’il y a beaucoup plus de résultats dans cette
langue.

• Le programmeur n’a pas peur de chercher des


résultats dans un autre langage de
programmation car il sait adapter le code, ou
l’algorithme lui suffit.

L’exemple n’est pas forcément parfait, le programmeur


peut très bien avoir une idée plus précise de ce qu’il cherche,
par exemple un bubblesort (tri à bulles), et il peut
également se servir des outils à sa disposition pour cibler
les résultats très précisément :

"bubblesort.c"

Le fait de taper cela dans Google montre une bonne


compréhension du problème, une bonne aisance avec
divers outils et une capacité à utiliser les opérateurs de
recherche avancée de façon à trouver directement un
8
La capacité de chercher et persévérer

résultat tout fait (par opposition à la recherche précédente


où il va plutôt chercher l’algorithme à implémenter ensuite).

De plus, bien des problèmes et des erreurs vous attendent,


comme nous venons d’en parler. Et cela demande une
certaine persévérance. Ne pas abandonner et prendre
son temps de trouver des solutions sont des qualités
fondamentales pour les programmeurs.

Alors forcément cela vient avec l’expérience, comme


énormément de choses, mais pour accélérer vos recherches
et donc votre apprentissage il convient de prendre du recul,
de rester souple et de voir le problème dans le sens
inverse : de la solution vers le problème.

9
La capacité d’être polyvalent

6 La capacité d’être polyvalent


Ce point étend le point précédent. Il s’agit d’acquérir et
d’utiliser de nombreuses compétences annexes. Parmi
elles, l’anglais, du moins certaines bases de façon à
chercher et à comprendre plus facilement du code.

On notera également des connaissances sur le système


d’exploitation et/ou de l’architecture d’un site Internet, en
fonction du but recherché.

On peut placer dans la polyvalence le fait de connaître


d’autres langages de programmation. Il n’y a pas de règles
unanimes sur le fait d’apprendre plusieurs langages de
programmation ou non. Tout dépend de chacun. Une chose
est sûre, plus vous connaîtrez de langages, plus vous serez
en mesure de créer des applications poussées et de faire
interagir des briques logicielles utilisant des technologies
différentes.

Comme vous vous en doutez, les connaissances annexes


dépendent du but recherché, du système utilisé et de
plusieurs autres paramètres propres à chacun.

De façon générale, le programmeur sait bien communiquer,


bien gérer son temps et rester discipliné.
10
Ce qui vous attend

Ce qui vous attend


Comme dit au début de ce guide, la liste des capacités
requises peut s’étendre davantage. On pourrait citer le fait
de savoir juger le temps nécessaire à la résolution d’une
tâche, le fait de savoir utiliser des outils alternatifs, le fait
de croire en soi, le fait d’aimer simplement ce que l’on
fait…

Maintenant, je conçois parfaitement que si vous êtes


débutant(e), cela effraye facilement et peut rebuter
certaines personnes. Rassurez-vous, personne n’arrive
vraiment au summum de la connaissance, personne
n’arrive vraiment à tout connaître sur un langage de
programmation ni à tout programmer d’une traite sans
erreur.

La programmation demande du temps et de la


concentration, tous les soucis que vous pouvez ressentir au
début sont normaux et bien des personnes sont passées par
là.

Cela doit au contraire vous passionner, vous donner envie


de commencer dès aujourd’hui et d’affronter vos premières
erreurs.

11
Ce qui vous attend

En vous souhaitant une excellente continuation dans le


domaine, et en vous redirigeant vers les articles suivants en
ligne pour continuer votre apprentissage :

https://www.leblogduhacker.fr/5-etapes-pour-debuter-
en-programmation/

https://www.leblogduhacker.fr/par-quel-langage-de-
programmation-vous-devez-commencer/

https://www.leblogduhacker.fr/10-astuces-pour-devenir-
meilleur-en-programmation/

Michel.

12

Vous aimerez peut-être aussi