Bilan 2017

Posté le 27 décembre 2017 - A Propos - Par Grafikart - Proposer une correction

L'année 2017 touche à sa fin et je vous propose de faire un petit bilan des technologies vues cette années.

JavaScript (FrontEnd)

Cette année le JavaScript côté front-end s'est stabilisé avec un consensus autour du VirtualDom et de Webpack. Les navigateurs supportent de mieux en mieux l'ES2015 et il peut être envisageable d'utiliser cette nouvelle syntaxe si on ne cible que les navigateur modernes (un bundler reste toutefois nécessaire pour combiner nos fichiers JavaScript en un seul).

Côté framework, je reste un grand fan de VueJS mais j'ai décidé de me former un peu sur ReactJS suite à ma découverte de Preact.

  • VueJS reste mon choix de prédilection pour sa simplicité de mise en place.
  • React est intéréssant par son écriture simple (on n'utilise pas un objet avec des clefs arbitraires comme avec VueJS) et sa logique fonctionnelle, mais l'ajout d'une couche d'abstraction peu rendre les choses complexes si on ne travaille qu'avec du DOM (Synthetic Event par exemple, Animations difficiles à mettre en place par rapport à VueJS, poid assez important de la librairie).
  • Preact est une alternative à React qui ne cible que le DOM. Son poid très réduit permet de l'utiliser comme base pour un module sans forcément rajouter 20ko ou 30ko de dépendances. En revanche, j'ai rencontré pas mal de problème pour créer un système d'animation aussi simple à utiliser qu'avec VueJS, et mon code finit souvent par être plus long qu'avec VueJS. Je réserve, pour l'instant, l'utilisation de Preact pour des cas simples.
  • Je n'ai pas encore pris le temps d'explorer Angular qui me semble trop complet par rapport à mes besoins. Je préfère composer mon application à partir de plusieurs petites librairies en fonction de mes besoins, mais je n'exclue pas de lui donner une nouvelle chance un jour.
  • J'ai définitivement coupé le cordon avec jQuery que j'essaie de ne pas inclure dans mes projets. En revanche, je pense que même si c'est une librairie que certains aiment détester, elle reste indispensable pour des projets qui nécessitent une compatibilité IE8- (certains clients ont encore un parc informatique sur Windows XP avec IE6). Je pense continuer à "traduire" les anciens tutoriels pour les refaire en "vanilla".

Côté Bundler, Webpack reste pour moi indispensable. Ce n'est pas forcément le plus simple à configurer (c'est d'ailleurs pour cela que les Frameworks front-end proposent des outils pour créer des configurations "clef en main", et que j'ai du faire une formation sur le sujet) mais c'est le plus complet à mon goût. La pluspart des alternatives (Rollup, Brunch, Fuse Box, Parcel) cherchent à simplifier la configuration mais finissent souvent par devenir plus complexe à utiliser dans des cas spécifiques (hot reload, gestion de syntaxes alternatives...).

Suite à pas mal de demandes, j'ai aussi essayé de comprendre le fonctionnement du WebRTC. La mise en place du protocole n'est pas forcément complexe, en revanche la mise en pratique s'avère plus problématique. La communication peer to peer est difficile à mettre en place à cause des configurations réseaux des utilisateurs (pare feu, box internet...). Au final, je n'ai pas utilisé le WebRTC pour un projet client, en revanche il est intéréssant d'avoir une expertise technique sur le sujet.

Enfin, niveau syntaxe j'ai complètement adopté le TypeScript qui permet d'éviter de nombreuses erreurs en amont. En revanche, certaines librairies ne sont pas forcément adaptées et l'utilisation de cette syntaxe peut poser quelques problèmes (VueX par exemple).

NodeJS

Ceux qui me connaissent le savent, je ne suis pas forcément un grand fan du JavaScript, surtout pour des gros projets (je n'arrive pas à m'organiser correctement avec). Aussi, mon utilisation se limite à l'utilisation de socket.io pour mettre en place des interactions supplémentaires. Ceci dit, de plus en plus de clients ont des projets qui nécessite l'utilisation des websockets et NodeJS est un choix intéréssant pour gérer un serveur de websocket simple à mettre en place. Il peut facilement être couplé à une application écrite avec PHP ou autre.

PHP

PHP reste le langage backend avec lequel je travaille le plus souvent (à la fois pour les tutoriels et pour le freelance).

Apprentissage de Symfony

J'ai décidé de me mettre un peu plus sérieusement à Symfony pour être capable de prendre des projets basés sur ce framework mais aussi pour lutter contre mes a priori. C'est un framework assez simple à prendre en main mais qui s'avère assez complexe pour des cas spécifiques (qui sont souvent peu ou pas documentés). Une grande partie des problèmes se concentrent pour moi autour de l'ORM (qui génère des requêtes par forcément optimales et qui est documenté de manière assez spécial) et du FormBuilder (qui est un véritable enfer à utiliser pour des formulaires complexes).

Laravel, toujours mon préféré

Laravel reste tout de même mon framework de prédilection. L'inclusion d'outils avancés comme les files d'attentes, ou le système de broadcasting Echo, permet de créer un projet complet rapidement. Pour une fois le framework n'a pas subit de changements majeurs en terme d'organisation du coup apprendre les nouveautés se fait assez facilement pour le moment.

Le PSR, "framework agnostic"

Au delà de l'utilisation de frameworks, il est aussi important de savoir s'en détacher. Les nouvelles recommandations du PSR sont adoptées rapidements et des frameworks plus simples peuvent être utilisés comme base (Slim Framework ou Zend Expressive) en laissant plus de contrôle sur les différents blocs à adopter. Aussi, j'essaie au maximum maintenant de créer des classes qui dépendent de ces interfaces afin de pouvoir les réutiliser d'un framework à l'autre. Pour aller dans ce sens j'ai aussi publié une formation complète pour découvrir comment on peut justement utiliser ces interfaces pour créer un projet complet en n'utilisant pas de "gros" frameworks

Wordpress

Même si Wordpress n'a pas été très représenté en terme de tutoriel cette année, il reste au coeur de mes missions freelance. Même si c'est un CMS qui est connu pour son code plutôt "procédural", je travaille mon code de la même manière qu'avec mes autres projets PHP. J'utilise en général Wordplate, composer et mes classes génériques. La pluspart du temps le projet consiste à créer un thème correspondant à une maquette fournie donc je peux organiser mon code comme je le souhaite avec un minimum de plugins tiers. Je voulais tester cette nouvelle façon de faire et je pense la partager avec vous au cours de l'année prochaine.

Ruby

Je ne fais pas forcément beaucoup de vidéos sur Ruby et Rails car elles ne sont pas aussi populaires que les autres, mais Ruby reste mon langage favoris et Rails mon framework Web préféré. J'ai eu la chance de pouvoir utiliser Rails pour 3 projets cette année et de découvrir de nouvelles gems. En revanche je ne suis pas sûr de continuer à faire beaucoup de vidéos sur le framework pour le moment.

Elixir

En fin d'année dernière, j'avais commencé à découvrir et à apprendre Elixir. Je ne l'ai pas encore utilisé pour des projets pro, mais j'ai pu le mettre en place pour certains projets persos. Je ne suis pas encore sûr de réellement l'adopté car, même si sa gestion de la concurrence est intéréssante, le manque de librairies / maturité le rend difficilement utilisable comme langage principal.

Linux

Après avoir sauté le pas pour passer à Linux l'année dernière, j'ai continué à l'utiliser cette année. J'ai pas mal exploré en terme d'environnement de bureau avec Xfce, Deepin et gnome pour finalement adopter i3wm.

Et vous ?

Au final, ça a été une année plutôt calme en terme de découverte de nouvelles technologies / langages. Et vous ? Qu'est ce que vous avez découvert cette année ?