<!-- title: Mon bilan 2016 -->
<!-- category: Humeur -->
<!-- tag: planet -->

C'est le moment du bilan personnel de l'année écoulée. <!-- more -->Si je regarde mon compte
GitHub, je vois peu de code cette année et
[Mail2Diaspora](https://github.com/kianby/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](http://sametmax.com) : 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.
