JavaRush /Blog Java /Random-FR /Une journée dans la vie d'un développeur Java. Partie 1
alex8894
Niveau 34
Санкт-Петербург

Une journée dans la vie d'un développeur Java. Partie 1

Publié dans le groupe Random-FR
Salutations, chers collègues ! Après la publication de « 20+ Years Later », certains lecteurs ont demandé une suite à l'histoire. De quoi d’autre pourrais-je parler ? Il semble que j'ai entièrement couvert le sujet de la transformation d'un « enikey barbu » en développeur Java. Il sera possible de tirer certaines conclusions au plus tôt après un an de travail. Et puis j’ai décidé de décrire simplement comment se déroule ma journée de travail type. Sous la coupe "Une journée dans la vie d'un développeur Java". Quand j'étais jeune, j'adorais dormir. Quand j'étais enikey, il m'arrivait de dormir jusqu'à midi et d'arriver au travail à trois heures, voire trois heures et demie. Chaque fois, j’ai répondu aux demandes périodiques de la direction de « venir comme tout le monde », c’est-à-dire à 9 heures du matin, de la même manière à chaque fois : on dit que je dois travailler sur des ordinateurs quand je ne dérange personne. Ça a roulé. Mais avec l'âge, apparemment, quelque chose a changé dans le corps, et maintenant je suis plus une « alouette » qu'un « oiseau de nuit ». C'est pourquoi maintenant je viens travailler en premier (ou l'un des premiers). Aujourd'hui, je suis le premier, et j'ai une demi-heure ou une heure de silence jusqu'à ce que d'autres, moins « lève-tôt », me rattrapent. Il est temps de planifier aujourd'hui. Je développe sous Linux Mint. J'aime le bouton Démarrer, modeste et élégant, pas comme ces tuiles. Le gestionnaire de bureau Cinnamon n'est pas surchargé d'effets visuels, mais en termes de finition, il est légèrement inférieur à MacOS, qui est bien sûr la norme en la matière. C'est facile à comparer, il y a un Mac sur la table à côté, un UX designer travaille derrière. Je n'ai également presque rien à redire sur le système d'exploitation lui-même : il fonctionne rapidement et est très stable, je ne l'ai redémarré que trois fois pendant cette période - lorsque j'ai éteint l'ordinateur pendant les longues vacances. En fait, il se charge également presque instantanément, même l’écran de démarrage n’a pas le temps d’apparaître, car tous les ordinateurs des développeurs sont équipés de disques SSD. Tout d'abord, j'ouvre le client de messagerie Thunderbird, des lettres y arrivent avec des informations sur les modifications apportées aux pages qui m'intéressent dans le wiki (il y a des paramètres et des spécifications), mais l'essentiel, ce sont les notifications du tracker. Quelle chose intéressante nous est arrivée ? Oh, ils sont revenus d'un test d'une fonctionnalité que j'ai terminé hier, on dirait qu'ils ont trouvé un bug. Eh bien, oui, ça l'est. Je dois le réparer le plus rapidement possible, peut-être aurai-je le temps avant l'arrivée du testeur et il examinera immédiatement les corrections avant de se lancer dans une « construction inachevée ». C'est la première chose pour aujourd'hui. Il s’agit donc de ma « construction inachevée », que j’ai écrite tout au long du dernier sprint. Il semble que cette fois, il ait résisté avec succès à tous les cercles de l'enfer.étapes de test et aujourd'hui, il faudra probablement le fusionner dans la branche principale du projet. Mais cela viendra plus tard, après le déjeuner. Même aujourd'hui, nous devrons travailler en DevOps et mettre à jour le stand de la branche dans laquelle le développement est actuellement en cours, nous devons montrer de nouvelles fonctionnalités. "Un grand pouvoir implique de grandes responsabilités", la commande sudo affiche un avertissement avant d'accorder les privilèges root. Dans ma traduction un peu vague, cette phrase ressemble à « plus vous pouvez en faire, plus vous devrez en faire ». Il n’est donc pas surprenant que moi, qui porte le « cachet d’administrateur », je me retrouve souvent confronté à des tâches aussi « limites ». Eh bien, commençons. Hier, je travaillais sur une autre fonctionnalité, et maintenant je dois retourner sur la branche où se trouve le bug. Les utilisateurs de Windows aiment généralement toutes sortes de shells graphiques et utilisent Turtle (TortoiseGit), mais pour moi, c'est plus simple et plus familier via la ligne de commande. En général, la ligne de commande sous Linux est un petit chef-d'œuvre, incroyablement réfléchi et puissant, notamment en combinaison avec Midnight Commander. Nous avons changé, maintenant nous devons reconstruire le projet. Je tape la commande gradle clean ass. Je ne sais pas si cette commande était initialement prévue par les auteurs de Gradle ou si elle a été créée par hasard, mais elle nettoie et reconstruit simplement le projet (cul est l'abréviation de assembler, et non ce qui vient à l'esprit en premier). Sur Javarush, gradle n'est mentionné que brièvement, comme « et autres systèmes de construction ». Oui, Gradle n'a aucun avantage par rapport à Maven pour assembler des projets éducatifs. La plupart des tutoriels et procédures sur Internet utilisent également Maven. L'émergence et la popularité croissante du Gradle sont probablement dues à l'augmentation rapide de la complexité de la construction de projets modernes. Le projet dans lequel je suis impliqué se compose de plusieurs dizaines de composants, où le backend est écrit en Java, le frontend en Javascript et les tests en Python. À propos, de nos jours, l'assemblage d'un projet Javascript est un processus distinct et complètement compliqué, qui a même un nom - Web Workflow, et l'arborescence des dépendances y est presque aussi tentaculaire qu'en Java. Eh bien, au moins, vous n'avez pas besoin d'assembler des composants Python, enfin, presque pas besoin... Après l'assemblage et le lancement (ce qui n'est pas non plus trivial), vous devez créer et initialiser avec des données de test un environnement entier avec un environnement relationnel. et une base de données NoSql, une file d'attente de messages et un cache en mémoire. Ensuite, tout cela doit être réassemblé et exécuté sur le serveur CI, puis déployé à l'aide d'ansible. Parallèlement, le développement s'effectue principalement sous Windows, et les serveurs de « combat », de démonstration, de test et autres pré-prod sont, bien entendu, sous Linux. Je n'imagine pas vraiment comment il est possible d'implémenter de telles choses dans Maven, mais plutôt bien dans Gradle. Le fait est que le fichier de construction Gradle est écrit en Groovy. C'est un langage très amusant, on dit que c'est un croisement entre Java et Ruby, mais je ne connais pas Ruby, mais je connais un peu Javascript, et de nombreuses constructions qui en découlent fonctionnent également. Les créateurs de Gradle ont implémenté une telle API que dans les cas simples, le fichier de construction semble assez déclaratif (et, en passant, à mon avis, il est encore plus facile à lire que le pom.xml de Maven), mais si vous avez besoin de quelque chose de plus complexe, tout ce caractère déclaratif est abandonné, des variables, des fonctions, des classes apparaissent - en un mot, toutes les fonctionnalités de Groovy, qui, d'ailleurs, peuvent être compilées et exécutées sur la même JVM que le code Java. L'assembly lui-même, comme je l'ai déjà mentionné, est multiplateforme, mais il interagit avec l'environnement, il doit donc également être vérifié sous Windows. Pour ce faire, Windows est installé sur une machine virtuelle. KVM progresse à pas de géant, et si le système invité est configuré correctement, la virtualisation est presque invisible. Oui, Spice prend désormais en charge deux moniteurs, les résolutions d'écran sont ajustées automatiquement et les pilotes de périphériques paravirtualisés n'entraînent pratiquement aucune perte de performances. Je me retrouve parfois à penser que je ne ressens pas beaucoup de différence entre les deux plateformes. Pourtant, Java est un outil étonnant qui a rapproché deux mondes complètement différents et parfois même hostiles : le monde des logiciels propriétaires, cracks, keygens et séries,incarné par Windows et le monde des systèmes ouverts Linux. Voilà, le projet est assemblé, nous le lançons (bien sûr, également via gradle) et y jetons un œil. Eh bien oui, honte à ma barbe grise, je n'ai pas mis en œuvre une des exigences de la production, la voici écrite noir sur blanc sur le wiki. Lors de mon emploi précédent, j'ai été régulièrement confronté à cette situation et j'ai toujours été perplexe quant à la façon dont le développeur aurait pu manquer un paragraphe entier de la spécification. Oui, facilement ! J'y ai réfléchi, je me suis concentré sur un autre problème - et il y a eu un bug. Ce n'est qu'ici, grâce à plusieurs étapes de tests, qu'elle sera attrapée, mais à l'endroit précédent - enfin, quoi qu'il arrive. Heureusement, les travaux ici ne dureront pas longtemps. Je lance Idea Ultimate, qui est d'ailleurs l'un des rares produits payants utilisés en développement. En principe, on peut se débrouiller avec la Community Edition, mais on s'habitue vite aux bonnes choses, par exemple l'intégration avec Spring. Vous avez également besoin de quelques terminaux pour les journaux, d'un navigateur pour le frontend et d'un wiki, d'un autre terminal avec une ligne de commande, tout bouge, clignote... En général, l'image sur les écrans de deux moniteurs commence à prendre un aspect effrayant apparence, comme celle montrée dans les films à petit budget, illustrant le travail acharné d'un hacker. Mais ce sont encore des choses mineures, mais je me souviens quand j'ai dû créer et configurer un cluster de basculement - sept fenêtres de terminal, autre chose dans le coin de l'écran, dans toutes les fenêtres - quelques chiffres et images de graphiques ascii... Mais Je m'éloigne un peu du travail et le temps passe. ... Ouf, eh bien, il semble que j'ai fait tout ce dont j'avais besoin et, semble-t-il, je n'ai rien cassé de ce que j'avais fait plus tôt. J'ajoute un commentaire à la fonctionnalité et envoie le fil de discussion pour test. J'essaie d'écrire plus en détail ce que j'ai fait ou modifié exactement pour simplifier le travail du testeur. Dans mon emploi précédent, de telles explications me manquaient vraiment lorsque je devais vérifier les améliorations reçues des développeurs. Pendant ce temps, la matinée s'est transformée en jour, les gens se sont progressivement retirés. Bientôt, il y aura un stand up meeting, ou à notre avis, un stand-up. En fait, la journée de travail devrait commencer par cela, et pour la plupart des « oiseaux de nuit », c'est presque le cas. Se lever agit comme une limite pour arriver au travail le plus tard possible ; être en retard est fortement déconseillé. Eh bien, pour moi, c'est comme une pause. Alors, levons-nous tous. Lors d'un stand-up, comme d'habitude, les développeurs racontent ce qu'ils ont fait hier et ce qu'ils comptent faire aujourd'hui, les testeurs nous disent ce qu'ils ont testé et avec quels résultats, et les patrons, c'est clair, ce qu'ils comptent faire ensuite, quels problèmes sont survenus et à quoi il faut prêter une attention particulière. Notre équipe est géographiquement répartie et son effectif complet ne peut être vu qu'en stand-up (à la télévision, bien sûr), et aussi, peut-être, lors d'un événement d'entreprise général quelques fois par an. En stand-up, j'ai souvent l'impression que cela a été inventé pour empêcher les développeurs de se détendre. Quand chaque jour vous avez besoin de montrer des progrès dans votre travail, et non pas dans un rapport papier que seul votre patron lira, mais devant vos collègues, bon gré mal gré vous essaierez d'en faire plus, avoir quelque chose à dire. Il existe, bien sûr, des « projets de construction à long terme », sur lesquels vous répétez plusieurs jours de suite « hier, j'ai fait cela, et aujourd'hui je continuerai à le faire », mais même dans eux, certaines petites tâches urgentes sont constamment coincé dedans. Bref, du vrai Un développeur cowboy a toujours quelque chose à dire à ses collègues. Lors du stand-up, on m'a demandé de mettre à jour rapidement mon stand, alors maintenant je vais le faire. Lorsque la branche principale du projet est publiée, la mise à jour est effectuée par les administrateurs, mais nous devons maintenant publier une fonctionnalité qui n'est pas encore terminée, et en même temps, certains problèmes surgiront inévitablement que les administrateurs ne pourront pas résoudre. Le stand est situé dans un data center, l'accès n'est possible que via ssh, il n'y a bien sûr pas de shell graphique là-bas - donc seulement la ligne de commande, uniquement du hardcore ! La mise à jour elle-même est automatisée et s'est déroulée sans problème, mais après la mise à jour, l'un des composants ne démarre pas. Je regarde les logs avec la commande less ; d'ailleurs, elle a une fonction très pratique : si vous appuyez sur Shift-F, elle affichera en permanence le contenu actuel du fichier, ce qui est parfait pour les logs. Et qu'est-ce que c'est... chose étrange ? Plein écran de points d'interrogation séparés par des virgules. Deuxième écran, troisième, dixième... Combien y en a-t-il ? Oh, c'est fini, ça s'est avéré être une sacrée trace de pile. Quelqu'un a écrit une requête SQL avec l'opérateur IN pour sélectionner les enregistrements souhaités dans une liste et a créé un paramètre pour chaque élément de la liste. Tout a fonctionné jusqu'à ce que la liste contienne plus de 32 767 éléments, après quoi le serveur SQL a finalement perdu patience. Vous devrez rédiger un rapport de bug à ce sujet, mais cela n'a rien à voir avec le problème d'un composant qui ne fonctionne pas. Regardons plus loin. Maintenant, il est clair que la migration de la structure de la base de données vers la nouvelle version n'a pas eu lieu, il semble que l'auteur de la fonctionnalité ait changé quelque chose lors de la migration, et ici, sur le stand, il y avait sa version précédente. Vous devrez annuler les modifications de structure manuellement, via l'utilitaire de console du serveur SQL. Comment puis-je écrire une commande en DML pour supprimer un champ ? indice? les tables? On dirait que c'est ça. J'ai redémarré le composant, la migration s'est bien passée... tout va bien. C'est l'heure d'aller déjeuner, d'ailleurs il fait beau aujourd'hui. "La boule jaune vif suspendue dans le ciel, immobile et si effrayante pour les habitants de la ville, s'est avérée être le Soleil." Presque le premier jour ensoleillé de l'année. Je ne veux même pas quitter la rue, mais je dois le faire - le moment de la fusion approche. À suivre
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION