La notion de commits atomiques est souvent méconnue des développeurs. Mais qu'est-ce qu'un commit atomique et pourquoi l'utiliser ?
Docker est devenu un outil incontournable pour tous les développeurs ou les administrateurs d’infrastructure, mais celui-ci peut paraître complexe au premier abord. On se retrouve donc aujourd’hui pour tenter de clarifier tout ça avec ce premier article de cette série consacré à Docker où l’on va découvrir les bases.
J’ai décidé de partager avec vous mes pires (ou meilleures anecdotes suivant le point de vue) en tant que développeur, histoire de rigoler un petit peu.
Force à toi pour le coup du boîtier GPS ! Tu as été vraiment patient et plein de ressources 👍
Malheureusement, le coup de la "fausse" démo qui doit être livré sous peu, tous les développeurs y ont droit un jour... 😔
Rust a été élu, pour la cinquième année consécutive, le langage de programmation le plus apprécié par les développeurs selon le sondage annuel de StackOverflow. Il y a un véritable engouement autour de celui-ci, qui fait que de plus en plus d’entreprises s’y intéressent et n’hésitent pas à migrer leurs solutions vers celui-ci.
Je ne suis pas forcément fan des entretiens techniques dans lesquels on pose des questions d'algorithmiques surtout lorsque celles-ci n'ont aucun rapport avec le poste en question. Malheureusement, c'est une réalité, de plus en plus d'entreprises font passer ce genre d'entretiens aux candidats et ce n'est plus exclusivement réservé aux FAANG. J'ai donc décidé pour cette année de commencer une série d'articles concernant les questions d'algorithmiques les plus fréquemment posées en entretien. C'est également une bonne occasion de (re)découvrir les bases de notre métier qu'est l'algorithmique et la résolution de problème. Pour ce premier article, j'ai décidé de commencer avec les listes chaînées qui sont l’une des structures de données linéaires les moins maîtrisées par les candidats contrairement aux tableaux.
De là en découle une complexité en temps et ou mémoire.
Cela permet de prévoir et prendre les bonnes décisions quand la volumétrie et/ou le nombre d'utilisateurs augmente.
Et quand ca déborde sur une architecture simple malgré les bonnes optimisations, on repense une archi plus complexe qui puisse répondre aux nouvelles contraintes.
C'est donc la base à maitriser pour aller plus loin.
EDIT: le temps que j'écrive, d'autres réponses ont popé ^^ Je répondais exactement à la même phrase que Benoît "il vaudrait mieux faire gagner du temps à tout le monde et poser des questions pertinentes pour le poste"
Je partage votre point de vue. Je n'ai rien contre poser une question d'algorithmie, de complexité... si la question sert à un échange. Ce qui me gène plus c'est refuser des candidats sur le seul principe d'échouer à répondre à ces questions.
Bon pour la liste chaînée ayant été formé sur le C je suis biaisé et considère que ça fait parti du minimum culturel pour un dev. Mais mettons que ce ne soit pas le cas. Refuser un candidat parce qu’il ne réussi pas à implémenté une liste chaînée parce qu’il ne sait pas ce que c'est et n'en a jamais vu de telle implémentation c'est dommage. Discuter avec lui, l'aiguiller sur une piste et ce rendre compte qu'en reformulant le problème il arrive à implémenter une solution par liste chaînée, c'est mieux.
Après ça dépend de l'objectif de l'entretien aussi. Si on veut des gens très pointus sur tout ça fait un bon filtre.
Deuxième article de cette série consacrée à l’analyse des performances des applications Node.js. Nous allons nous attaquer cette fois-ci à l’analyse de la mémoire.
Lorsque l’on utilise Git, surtout quand on est débutant, on ne sait pas toujours comment nommer correctement ses branches ou ses messages de commits. Pourtant il est primordial pour s’y retrouver dans un projet, de respecter une convention de nommage.
@Marc Bouvier C'est exactement cette convention ! Effectivement elle est de plus en plus suivie car pas mal d'outils se basent sur celle-ci pour automatiser la génération des changelogs ou le versionning (en se basant sur semver.org/lang/fr/)
Les gains sont :
- l'obligation de travailler propre (il faut penser au copain)
- obligation de faire de petit commit
- incitation forte au feature flag
- Jamais de gros diff, jamais de branch qui se meurent ou qui durent des jours et des jours voir plus (sympa à merger ...)
On peut très bien savoir faire cela avec des branches, mais alors elles n'ont plus d’intérêt (si on merge toutes les heures, autant faire dans develop).
A chaque onboarding, le nouvel arrivant est dérangé mais très vite il adore (et on utilise les tags!) c'est queque chose qu'il faut pratiquer pour véritablement en comprendre l'avantage (comme le TDD sur ce point)