6 qualités indispensables pour devenir programmeur Ce guide est issu du site we

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 1 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. La capacité de diviser un problème en sous-parties 2 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- La capacité d’expliquer clairement aux autres 3 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 La capacité d’expliquer clairement aux autres 4 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… La capacité de prendre du recul 5 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). La capacité de résoudre des problèmes 6 • 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… La capacité de chercher et persévérer 7 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 » La capacité de chercher et persévérer 8 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 La capacité de chercher et persévérer 9 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. La capacité d’être polyvalent 10 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 uploads/Industriel/ 3-6-qualites-indispensables-pour-devenir-programmeur 1 .pdf

  • 23
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager