C'est le moment du bilan personnel de l'année écoulée. Si je regarde mon compte GitHub, je vois peu de code cette année et Mail2Diaspora est mon seul nouveau projet. Si je jette un œil au blog, j'ai réussi à réduire ma production en deçà d'un billet mensuel. Pourtant je n'ai pas diminué mon temps passé sur l'informatique au sens large. Alors il est vrai que je suis beaucoup plus régulier sur Diaspora, ce qui explique en partie la baisse du nombre de billets. Il est plus simple de partager un lien technique avec un commentaire rapide (mais pertinent hein) que d'élaborer un long article après une expérimentation plus poussée. Ma consommation de jeux vidéos a diminué elle-aussi et je ne me suis pas encore jeté à corps perdu dans le bricolage ou la cuisine. Finalement, en repassant l'année au ralenti, j'ai passé énormément de temps à apprendre et me perfectionner dans mon métier de programmeur, dont je ne parle pas souvent. Apprendre, c'est une pratique que j'exerce régulièrement depuis une dizaine d'années suite à un licenciement où j'avais réalisé être un peu largué techniquement : la faute à la routine d'un poste et la fainéantise. Depuis cette époque je me tiens informé : langages, méthodes, conception tout ce qui touche à mon métier. Je lis beaucoup : de la documentation, des retours d'expérience d'experts, et j'expérimente un peu.
J'ai beaucoup joué avec Javascript l'année dernière et la moitié de ce que j'ai appris est déjà has-been. Mais ce n'est pas grave ; ça n'a pas été inutile car cela me servira pour aborder d'autres outils et d'autres Frameworks. J'avais aussi suivi une formation sur la programmation fonctionnelle en Scala avec l'organisme de cours en ligne Coursera. Il est possible que je ne fasse plus jamais de Scala mais l'éclairage sur la programmation fonctionnelle est transposable, il ouvre l'esprit sur d'autres façons de penser et de coder.
Et il ne s'agit pas que de langages et de frameworks. On n'est pas largué parce qu'on ne connaît pas un langage. Si un recruteur voit les choses de cette manière c'est qu'il a une vision limitée du potentiel de la personne, juste réduite à des mots clefs dans un CV. Pour voir plus loin, il faut qu'il connaisse le métier, pose les bonnes questions et surtout comprenne les réponses. Ce n'est pas un tâcle, mais on voit une catégorie de recruteurs sortis tout droit d'écoles de commerce qui ne connaissent absolument rien au métier et dont le seul talent est finalement de faire correspondre des mots-clés dans des annonces avec des mots-clés dans des profils. Quel gâchis pour eux et quelle frustation pour les candidats qu'ils approchent...
Au delà des technos, rester en phase avec le métier de développeur c'est s'intéresser à tous les aspects, réfléchir verticalement, ne pas rester cantonné au code et aux langages : s'intéresser à l'agilité, à la qualité du code : un vaste sujet qui va des tests unitaires à l'intégration et au déploiement continus et qui amène à aborder des outils comme Jenkins, Docker, Sonar. Et puis il y a les bonnes pratiques, mon dada en prenant de l'âge. Faire n'est plus suffisant, réaliser selon l'état de l'art dans le domaine est beaucoup plus gratifiant. Ces bonnes pratiques sont présentes dans tous les domaines. Ce sont les design patterns en programmation, la compréhension des concepts et de la philosophie derrière une techno pour l'utiliser dans le bon cadre et en tirer la quintessence. Ne pas utiliser la programmation orienté objet en JAVA ou utiliser Ansible comme un bête installeur via SSH, c'est dommage et c'est passer à côté de la puissance qu'on aurait pu en tirer.
Quand on a étiré ses connaissances dans plusieurs domaines avec cet état d'esprit on atteint la satisfaction de l'artisan qui sait choisir l'outil le plus approprié pour chaque tâche, on peut prétendre faire de l'architecture logicielle : être capable de choisir le bon langage et le bon paradigme de programmation pour un projet, les bons frameworks, et mettre en place les outils nécessaires à une production de qualité. Le seul hic c'est le temps. Il y a tellement de sujets et cela prend déjà tant de temps pour se maintenir dans son cœur de métier, qu'il faut obligatoirement sélectionner. Dans mon cas, le cœur c'est d'abord le développement avec des solides compétences en JAVA et PYTHON, deux écosystèmes qui évoluent en permanence. En parallèle ce sont les méthodes et outils transverses, valables pour tout langage : tests, intégration, méthodes agiles. Et comme j'ai une fibre système, de par ma formation initiale, que j'ai bien fait évoluer depuis 6 ans, je me maintiens sur les outils de déploiement, la virtualisation et les conteneurs.
Pour en revenir à l'année écoulée, j'ai mis le paquet sur le langage PYTHON que je pratique pourtant depuis 15 ans et sur lequel j'ai décidé de grimper en compétence. Remise à niveau sur l'aspect fonctionnel du langage, découverte de nouvelles librairies. J'ai aussi appliqué un conseil lu chez Sam : la lecture de bon code écrit par d'autres. Et c'est ainsi que j'ai disséqué le code de quelques librairies standard de PYTHON, notamment les collections. Et c'est un très bon conseil, on en tire des façons de faire, des conceptions élégantes et cela démystifie le côté un peu magique de certaines librairies en regardant sous le capot. C'est un effort que je vais continuer en 2017.
Bonnes fêtes de fin d'année à tous.
Bonne fête de fin d'année à toi aussi et longue vie au monde du libre!