Quand j'étais petit, mon héros dans james bond goldeneyes, aussi étonnant que cela puisse paraître, était Boris.
Boris était un programmeur au service des méchants, le stéréotype du geek (et il meurt congelé à la fin), il me passionnait car je me disais : c'est dingue, grâce à ses connaissances, et non pas grâce à son costard ni à son coup de pied retourné, il arrive à mettre des bâtons dans les roues de James Bond, et même les méchants se reposent sur Boris! Peut-être qu'au final avons nous aussi plus de chance de devenir un Boris qu'un James Bond... bref j'aimerais bien devenir Boris, à la différence près que je ne travaillerai pas sous la contrainte du revolver du méchant. Je travaillerai car mon boulot est fun !
Flanant sur StackOverflow un jour de printemps ensoleillé je suis tombé sur ce lien :
Why a career in computer programming sucks ?.
Il ne voit visiblement pas Boris comme moi, peut être n'a-t'il pas revu James Bond GoldenEyes pendant son cours de science informatique... Insultes ! Je ne peux même pas exprimer ma rage car les commentaires sont fermés.
Pour tout étudiants hésitant à se lancer dans la voie du développement, je vais essayer de répondre à vos interrogations.
"Après 10 ans passé à coder devant mon ordinateur pourrais-je être fier de moi ? être un avocat, un manager, un médecin, un scientifique, un chef d'entreprise est tout de même plus glorieux !"
C'est la question que se pose beaucoup de lycéens, particulièrement car les métiers cités sont très valorisés en France.
La réussite professionnelle n'est pas un événement, vous êtes en réussite qu'à partir du moment où vous passez chaque minutes de votre vie à vous dire : "J'aime ce que je fais, et en plus je suis payé pour ! Et dire qu'il existe encore des personnes qui passent 60% de leur vie dans un bureau à attendre que chaque minutes passent pour rentrer chez eux !". L'orientation vers une carrière n'est pas une histoire de logique, mais une histoire de coeur.
"Les programmeurs sont des "techniciens", on en trouve en Inde, je vaux plus que ça !"
Commençons à changer le terme de
"programmeur" en "développeur".
La différence entre les deux est que l'un est plus spécialisé que l'autre, cependant ça ne veut absolument pas dire qu'un développeur ne doit pas être bon voir excellent en programmation !
Pour reprendre mon lien, voici les compétences que doivent avoir les développeurs en plus :
-Faire les specifications
-Gérer les configurations (build automatique, serveur d'intégration, code coverage etc...)
-Revue de code
-Tests
-Tests unitaires
-Documentation
-Résoudre les problèmes difficiles des clients
Hélas, les cours ne nous apprennent qu'à devenir programmeur (qui est difficile en soit), on ne nous apprend qu'à coder ! Le développement c'est plus que ça.
Première chose à savoir dans le développement : Vous êtes responsable de votre réussite, aucune certification, aucun nom d'école, aucun titre, ne fera votre réussite, vous devez apprendre par vous même comment devenir développeur et apprendre beaucoup de choses essentielles que l'on ne vous apprend pas à l'école.
Et vous devez aimer ça.
Lisez, Lisez, Lisez, et devenez un expert en quelque chose avant de pouvoir vous dire généraliste. Ne lisez pas n'importe quoi, cherchez sur internet
les meilleurs livres.
Dans le développement il y a beaucoup de chemin à emprunter où vous pouvez vous démarquer des autres, ça peut être dans une plateforme comme le java ou le .net (avec les framework associés, EJB,WCF,WPF,EJB,Hibernate,les design patterns), ça peut être dans la programmation de bas niveau (débugger windows à coups de Windbg, connaitre les tuyauterie de
windows ou linux sur le développement du noyau).
Vous pouvez aussi vous démarquer sur un domaine particulier comme la BI ou les jeux videos.
Seulement après, vous pourrez pensez à vous généraliser (ce qui devient de moins en moins difficile au fur et à mesure que l'on apprend).
Cependant vous apprendrez toute votre vie, et si le développement est fait pour vous ce n'est pas une contrainte mais un avantage ! Je dirais même qu'une entreprise qui n'utilise pas les nouvelles technologies et qui ne nous demande pas d'être à jour est ennuyeuse.
Peu de métiers nous permettent d'apprendre tout les jours, et contrairement à ce que dit
cette essai, les connaissances temporaire représente à peine 10 à 20% de ce que vous apprenez.
Vos connaissances de développement seront souvent couplé à d'autre domaine d'expertise. Si vous faites un moteur physique, vous devez apprendre la physique, et la maîtriser parfaitement, si vous faites un logiciel de traitement d'image, si vous faites des logiciels comptables, partout il faudra que vous appreniez le métier de la personne à qui vous voulez rendre la vie meilleur. Et c'est notre boulot ! Rendre la vie meilleur aux personnes qui utiliseront notre logiciel, comment peut on réussir à le faire si l'on n'apprend pas le métier de vos clients ?
Autre compétence fondamentale du développeur : savoir communiquer, j'apprends à communiquer à travers ce blog, et mon rôle de formateur.
"Pourquoi devoir communiquer ? un programmeur est un geek devant un pc sans relation avec le monde extérieur !"... Peut être le programmeur ,et encore j'ai un doute, mais le développeur doit savoir communiquer car il est en contacte avec beaucoup d'acteurs.
En tant que développeur, nous devons nous montrer diplomate (ou pas) avec le client pour savoir ce qu'il veut et pour apprendre son jargon, son métier.
Nous devons aussi parler à notre
une équipe, il faut savoir ne pas vexer ses camarades et apprécier tout le monde. C'est un atout essentiel si vous voulez que votre vie de tout les jours soit radieuse (et peut être pas forcément qu'en développement).
Rien de pire qu'une équipe qui ne s'entend pas car dans ces cas là le seul remède est d'aller voir ailleurs.
L'auteur de l'essai, stipule qu'il n'existe aucune différence entre un programmeur de 60 ans d'expérience et un autre de 5 ans d'expérience. Oui c'est le cas pour le programmeur
mort... un programmeur
Elvis ou Einstein avec 5 ans d'expérience sera même jusqu'a
10x plus productif que le mort et cela quelque soit l'age.
"The working conditions suck" je vous direz que cette affirmation n'est pas totalement fausse, c'est le cas quand on travaille chez
EA Games par exemple.
Une chose à faire si vous tombez sur un entreprise pourri : fuir.
Quand vous êtes bon, et vous le deviendrez si vous aimez votre métier, vous trouverez TOUJOURS un autre boulot.
Allez voir
mon autre post pour savoir pourquoi en général les éditeurs logiciels ont de meilleurs conditions de travail que les autres entreprise (banques, SSII,...).
Si vous n'aimez pas votre travail, vous ne serez pas compétent, et par conséquent si vous avez pu arriver dans cette entreprise, d'autre personnes qui n'aiment pas leur métier sont aussi présentes et travailleront avec vous. Le seul moyen de travailler dans une bonne boîte et d'être libre c'est de devenir bon, car une bonne entreprise ne prend que des personnes qui sont compétentes et aiment ce qu'elles font. (Ou du moins elles essayent)
Les mauvais ont alors tendance à se regrouper au sein d'une même entreprise, comme le font les bons (cf
Peopleware).
Apparemment c'est ce qui s'est passé pour l'auteur de cet essai.
La plus belle des virtues du développement c'est le pouvoir de construire ses idées en lignes de code. Vous ne vous imaginez pas le nombre de chose que l'on peut accomplir, toutes les idées nous passant par la tête faisable par un ordinateur, nous pouvons le réaliser.
Au fur et à mesure que l'on développe on commence à se rendre compte que nous ne sommes plus limité à cause d'un language ou d'un framework, nous devenons limité par notre capacité à cerner clairement ce que l'on veut faire, et à SIMPLIFIER les choses.
Le bon développeur est la personne qui recherche à faire toujours plus simple, et c'est pour cela que nous devons continuer à apprendre ! Nous ne sommes limité que par notre abilité à simplifier un problème, et c'est seulement en acceptant
les faiblesses de notre cerveau que l'on apprendra tout les jours de nouvelles choses, "je suis trop bête pour réfléchir voyons ce qu'à fait quelqu'un de plus intelligent que moi". C'est pour cela que nous n'avons pas peur d'apprendre la physique quand nous créons un moteur physique, c'est pour cela que nous n'avons pas peur d'apprendre la comptabilité quand nous développons un logiciel de gestion. L'apprentissage n'est rien de plus qu'un ensemble modèles à assimiler qui guide notre pensée vers des solutions plus simple (beaucoup de personnes très talentueuses et intelligentes ont probablement résolues votre problème d'une façon beaucoup plus élégante que vous ne l'auriez fait).
Apprendre toute sa vie n'est pas une contrainte mais une opportunité.