Et ben voilà, ça fait presque 3 ans que je travaille en tant que programmeur professionnel. Je programme depuis maintenant plus de 10 ans, apprenant par moi-même la majeure partie de ce que je sais aujourd'hui. Je n'ai vraiment aucune idée de ce que je ferais si ce n'est ça.
Ce que j'ai réalisé avec le temps, et c'est notamment vrai quand on passe pro, est qu'il ne faut jamais arrêter d'apprendre sinon vous êtes "mort". C'est pour ça que je fais de si nombreux projets secondaires et que je lis beaucoup de code un peu partout sur le web.
Garder la flamme
En ce qui me concerne, le code et une science et la science est la connaissance. Il doit être précise, vérifiable, explicable et prévisible. Mais il doit également être novateur pour être intéressant, parce que si vous passez la journée à fabriquer des roues, ce n'est pas de la science, c'est une usine... Toujours réaliser la même tâche est ennuyeux. Travailler sur un projet sur une période trop étendue l'est aussi. Vous manquez de motivation, de créativité et continuez à faire les choses comme elles étaient. En tant que professionnel, changer de projet n'est pas chose aisée. Dans une entreprise, le temps c'est de l'argent, si c'est vous l'expert et qu'en 15 minutes vous faites ce qu'un autre fera en 30, eh bien, vous ne changerez probablement pas de projet. En travaillant sur le sujet vous avez fait de vous-même l'expert du sujet, un manuel interactif quoi. Ça fait du bien de savoir les choses et de partager vos connaissances avec les autres. Mais la satisfaction n'est pas le même que celle que vous obtenez en faisant quelque chose de génial à partir de zéro.
Au cours de cette dernière année j'ai été dans ce genre de situation. Je suis sur un projet à forte valeur ajoutée et ambitieux depuis quelque temps, et il n'y a plus de réels challenges à résoudre. Même si le projet est génial, passer trop de temps dessus tue l'amour. La flamme a faibli, je devais faire quelque chose. L'énergie que j'ai trouvée pour raviver la flamme est plutôt simple en réalité. Avant de passer pro je n'avais pas ce genre de problème en travaillant sur mes projets, tranquillement, seul ou avec des amis. J'ai donc repris les bonnes habitudes en réalisant les choses qui me manquaient en dehors du travail, ce qui signifie aussi passer un temps considérable a travailler à la maison. Je fais beaucoup de projets annexes, beaucoup dans des technologies que je n'utilise pas en tant que professionnel. Il me suffit de prendre une idée, une technologie que je veut découvrir ou dans laquelle je souhaite me perfectionner et c'est partie. Pas de contrainte de temps, pas de pression, juste le fun, la découverte et la passion. Par exemple, avec Ninpp, je voulais juste faire un petit système de présentation qui fonctionne dans un navigateur. Je l'ai fait en CSS3, je me suis éclaté et en plus j'ai appris un paquet de trucs. Ensuite j'y ai ajouté une dose de composant web HTML5, toujours aussi cool et formateur. Ensuite j'ai voulu enregistrer l'audio et la vidéo de l'orateur avec sa webcam et me suis débrouillé pour pouvoir le rejouer ensuite et le publier en ligne... Sur ce projet, j'ai vraiment pris mon pied, créé quelque chose de sympa qui me sert régulièrement et j'ai appris ou perfectionné mes compétences en : CSS3, composant web HTML5, les médias HTML5, node.js serveur et ffmpeg pour la conversion de vidéos.
En faisant quelque chose de difficile et ce que j'aime le plus, j'ai réussi à booster ma motivation. J'ai commencé à me sentir plus utile au travail en proposant de nouvelles solutions techniques, en aidant les autres et en apportant un nouveau regard sur les projets.
Lecture de code
Tout comme certaines personnes lisent des livres, je lis du code. Je sais que c'est plus étrange pour les moldu mais j'aime ça. Internet est rempli de super contenus avec des sites comme Github, Sourceforge et bien d'autres. Le langage de programmation importe peu, c'est la logique et la manière de le réaliser qui est importante. De cette manière j’apprends de nouvelles manière de gérer et résoudre des problèmes. J’étudie de nouvelles technologies, je tords mon esprit et au final ça améliore mon bagage de compétences.
Récemment j'ai lu le code source de jQuery. Ça demande pas mal de temps et de concentration, mais c'est bien écrit et de fait facile à lire. J'y ai beaucoup appris au sujet de JavaScript et de la compatibilité de navigateurs. Mais ne vous inquiétez pas de ma santé mentale, je lis aussi des livres. J'ai récemment terminé The art of intrusion et Nulle part où se cacher. Je suis actuellement en train de lire You Don't Know JS, une suite de livres qui reprennent les comportements spécifique de JavaScript.
La logique est le commencement de la sagesse, pas la fin Leonnard Nimoy RIP
Les prochaines étapes
J'ai aussi découvert, qu'en France, vous ne pouvez pas faire évoluer infiniment votre carrière en tant que codeur. Il y a un moment où vous devrez vous arrêter de coder pour continuer à évoluer, d'être un chef d'équipe, faire la relation client ou autres. C'est un peu comme dire à un forgeron "Eh ben, tu es super doué pour fabriquer des haches, on aimerait bien que tu deviennes notre nouveau comptable"... Pour le moment en tout cas, je préfère fabriquer la roue plutôt que de la vendre. Voici un Commit Strip récent qui résume relativement bien la situation :
Je suis maintenant sûr que si vous souhaitez évoluer d'une manière particulière, n'attendez pas que cela se produise. Ça n'arrivera pas, et vous serez au même poste pour toujours. Changer les choses, allez-y et vous obtiendrez le résultat que vous recherchez.
Je ne veux pas être un programmeur de formulaire pour le reste de ma vie. Je ne aime pas les remplir, alors pourquoi voudrais-je en créer? Un formulaire sera toujours un formulaire et la plupart du temps, il résultera en un fichier Excel. Même si je utilise une technologie impressionnante pour le faire, à la fin, il va encore être si peu gratifiant... Je préfère faire du beau code, il n'a pas à être long. Un code long est difficile à déboguer, à apprendre et à comprendre, le code plus court est pour moi beaucoup mieux. Bien entendu il n'a pas besoin d’être si court (Tertis en un tweet) mais vous voyez où je veut en venir.
function(a,b,c,d,e){return d+=c,
e=a|b<<d,d<0|a&b<<d&&(a=e=
parseInt((a|b<<c).toString(d=32)
.replace(/v/,""),d),b=new Date%2?1:3),
[a,b,d,e]}
Conclusion
Fondamentalement, j'aime essayer des choses, des choses incertaines, ambitieuses qui sonnent comme folles dans ma tête comme elles le font à haute voix, parce que essayer quelque chose de nouveau, c'est tout simplement le meilleur moyen de faire la prochaine grande chose.
# En utilisant la voix de l'introduction de StarTrek dans les années 60
Code: The final frontier,
These is the voyage of the human, David
Its 3 year mission
To explore strange new languages,
To seek out new patterns and new technologies,
To boldly go where no man has gone before.