De la complexité du travail du développeur

On va faire simple, on a commencé 2016 avec de la bonne rage:

Chacun a ses arguments contre le front. Est-ce véridique ? Justifié ? Je laisse chacun se faire son propre avis. Avoir une diversité d’opinions est bien ce dont on a besoin dans la vie, non ?

Je suis développeur. Je fais beaucoup plus de front actuellement, mais ça ne m’empêche pas de faire du back. Et non, ce n’est pas la justification du gars raciste qui a des amis de couleur :-). Ça m’amène à regarder, essayer, développer, adopter, rejeter une technologie suivant mes “propres” besoins. Il y a rarement (jamais) une seule et unique façon de faire quelque chose, spécialement dans notre métier et celui qui vous dira le contraire est ou un inculte ou un menteur.

Il faut le dire, le front c’est dur mais pas pour les raisons souvent énoncées. On a trop longtemps considéré cette partie du dev comme pauvre, simpliste. Mais du jour au lendemain avec le web 2.0, les smartphones, on s’est rendu compte qu’il ne fallait pas seulement mettre à jour du contenu dynamiquement mais laisser l’utilisateur interagir avec la page web, devenant ainsi un outil à part entière. Ainsi le simple “intégrateur” (désolé mais je n’aime pas du tout ce titre), se retrouve à développer une logique métier complexe qui se veut:

  • mise à jour instantanément
  • disponible hors-ligne
  • adaptable à toutes les résolutions d’écran
  • prenant en compte des dispositifs de contrôle différents de la souris comme le doigt, le stylet, la manette, la voix
  • modifiable par des fonctionnalités exploitables suivant le pays, le type de connexion, l’appareil utilisé, les permissions accordées par l’utilisateur
  • communicable entre pairs sans passer par un serveur tiers

C’est un changement de paradigme de développement radical. C’est même plusieurs compétences qui sont demandées: UI, UX, gestion de données, stratégie de cache, parallélisme de traitement, architecture et j’en passe.

Mais ne croyez pas que seulement le front y est confronté !

  • Le devops avec Docker, Ansible, Mesosphere, Kubernetes, Deis
  • La base de données avec MongoDB, OrientDB, CouchDB, Couchbase, Cassandra, Titan, ArangoDB, RocksDB, InfluxDB
  • Le mobile avec Titanium, NativeScript, React Native, Phonegap, Xamarin, Swift, Corona

Et chacun avec sa pléthore d’outils d’analyse statique du code, de build, de déploiement, de tests. Putain c’est chiant.

Est-ce que c’est à cause de la course aux stars sur GitHub ? La décision politique d’une entreprise de ne pas utiliser un outil d’une boîte concurrente ? Un usage trop spécifique qui ne trouve pas la technologie adaptée ? Un environnement qui a des limites non prises en compte par les projets existants ? Le combat éternel entre les frameworks et les librairies qui s’occupent seulement d’un domaine donné ? C’est un peu de tout.

Le développeur ne regarde que trop rarement les sources d’un projet avant de l’utiliser. Oui, je parle de toi qui partages à envie les news de du dernier framework à la mode. Est-ce que tu as analysé son architecture et compris les commentaires sur les pull requests sur GitHub? Hipster du code, va!

Toi, développeur radin, qui n’as jamais contribué ou aidé un projet, comment peux-tu attendre du créateur qu’il fixe un bug au taquet ou qu’il accepte ta colère insultante sans broncher?

Et toi, utilisateur avancé d’une technologie, est-ce que tu as regardé derrière pour voir si tu as des confrères dépassés par ta course à l’expertise? J’ai lu et entendu beaucoup de bien sur Rust, le langage créé par Mozilla mais je ne sais toujours pas par où commencer. Même chose pour Vert.x.

Mais je ne saurais vous blâmer aussi facilement. Il y a une chose qu’on oublie trop facilement, c’est que ce travail de veille, de contribution est fait sur notre temps libre. Est-ce que votre entreprise, qui utilise gratuitement une technologie qui a nécessité des milliers d’heures de réalisation, a-t-elle rétribué d’une manière ou d’une autre ce projet? Ah maintenant, on parle moins. C’est fou comme certains managers s’attendent que les développeurs soient prêts à l’emploi sur toutes les plateformes possibles sans formation préalable. “C’est votre passion”, disent-ils. Est-ce que cela veut dire que nous devons investir personnellement de notre temps et argent pour votre seul et unique bénéfice? Je pose la question…

Il y a beaucoup de problèmes au sein de notre communauté. On trolle beaucoup (trop ?) et ça engendre des réactions (peut être trop) vives. Il y a des problématiques qu’on aborde trop rarement comme:

  • le manque de femmes dans notre métier
  • le manque de développeurs venant de pays en voie de développement
  • l’incompétence des politiques qui régulent le domaine des technologies
  • le financement de l’opensource (oui je parle de toi, le fan inconsidéré de linux qui écrit Micro$oft mais n’est pas foutu de payer l’équivalent d’un kebab aux projets que tu soutiens)

Le monde du développeur reste encore pour moi un monde magique dans lequel je m’épanouis. Je l’avoue, je n’ai jamais encore fait de pull-request sur un gros projet mais je me suis plu à faire des présentations ainsi que des workshops afin d’aider les débutants à aborder une technologie. À chacun sa manière d’apporter une pierre à l’édifice.

Allez je vous laisse, je vais voir si NPM 3 met toujours trois plombes pour télécharger les dépendances.