lundi 14 janvier 2013
Architecte
J'ai récemment assisté à une formation d'architecture sur le framework maison. J'étais super enthousiaste. À vrai dire, je ne savais pas trop ce que c'était qu'un architecte logiciel et comment il pouvait occuper ses journées.
Alors, un archi c'est quoi ?
Et bien, c'est une personne qui va concevoir une solution pour répondre à un besoin de son client. Cette solution peut être technique, inscrite dans le SI de l'entreprise avec une description allant jusqu'au niveau serveurs, versions de logiciels à utiliser, etc. Un architecte peut aussi être orienté métier : les solutions ne sont en effet pas systématiquement techniques (même si elles sont techniquement systémiques !).
Par exemple, imaginons que l'objectif d'une entreprise est d'accroitre sa présence à l'international. Elle peut pour cela revoir son portail Internet mais aussi ouvrir des points de vente dans des pays clés. Tout dépend de la culture, des valeurs et des principes de l'entreprise. Tous ces éléments constituent le contexte d'étude de l'architecte.
C'est la partie qui m'a le plus intéressé : l'importance du contexte. Il est nécessaire de connaître l'entreprise cliente en profondeur pour modeler la façon dont on va répondre à sa demande. Toutes les étapes par lesquelles passe l'architecte au cours de sa démarche doivent être développées en fonction de cette analyse contextuelle.
Clairement, cette formation m'a donné un nouveau regard sur mon métier. L'objectif n'est pas de chercher la meilleure techno du moment et essayer de l'imposer. Au contraire, il s'agit de s'imprégner de son client et de son métier, de sa culture pour lui proposer les solutions qui lui conviennent le plus et qu'il pourra lui même porter. Le but ultime est de présenter des solutions au client et qu'il choisisse sa solution, celle qu'il pourra défendre auprès des parties prenantes.
Mais qu'est-ce qui m'arrive ? Au lieu de codeur, je deviens consultant ou quoi ?
Dernière remarque culturelle : vous avez peut-être entendu parler de la loi de Conway. Je pensais au départ que c'était une fatalité liée à la difficulté des organisations à changer et à innover. Maintenant, je comprends que c'est simplement parce que c'est là le but recherché de l'architecture d'entreprise...
mercredi 29 août 2012
Faites vos pâtés dans le bac à sable, les jeunes
Quelque chose m'attriste quand je vois la méthodologie employée par certains pour travailler sur du code shell ou PL/SQL. On ne vous a pas appris : c'est normal de faire des conneries !
- Pour le code shell, ils éditent directement sur le serveur de développement et ne récupèrent leurs sources que quand leur code fonctionne.
- Pour le PL/SQL, ils modifient le code directement en base de données et copient/collent ou enregistre le code en local lorsqu'il fonctionne.
Je n'ai qu'une chose à dire :
== You're doing it wrong! ==
Au boulot, nous travaillons (classiquement) avec Subversion. Svn, comme tous les gestionnaires de code source modernent utilise une sandbox qui est l'endroit ou vous modifiez localement le code source avant de la valider dans le dépôt central. Les jeunes et moins jeunes : vos modifications doivent d'abord être faites dans votre sandbox et toujours prètes à être commitées.
Avec la méthode évoquée plus haut, vous vous exposez simplement à perdre tout votre travail.
- Pour le shell, vous pouvez accidentellement écraser votre copie de travail sur le serveur avec votre copie locale en faisant une bête erreur de FTP.
- Un collègue peut involontairement supprimer vos modifications en faisant une installation(ce collègue peut se prénomer Hudson ou Jenkins, il y en a peut-être un dans votre équipe)
- Le point précédent est valable pour le PL/SQL.
- Pour le PL/SQL, comme pour le shell, en cas de crash ou d'indisponibilité du serveur, vous pouvez au mieux être dans l'incapacité de récupérer votre code, au pire vous le perdez. Vous êtes dans l'incapacité de livrer : c'est comme si vous n'aviez pas travaillé.
En synthèse, votre poste de développement est plus stable que le serveur. Vous en avez le contrôle total. Développez sur votre poste et testez sur le serveur. Vous pouvez également prendre le temps (10 minutes) d'automatiser le transfert et vos tests.
Remarques complémentaires
Dans des situations plus particulières, le code que vous travaillez peut être également modifié par un tier simultanément (c'est fou le monde moderne... OK, ça arrive souvent.). Travailler dans votre sandbox vous permet d'intégrer les modifications au fil de l'eau plutôt qu'en fin de dev (si vous travaillez avec un refactoreur psycopathe comme moi ça peut vite être le drame).
Vous pouvez compléter l'utilisation de Svn par un gestionnaire de code source décentralisé (comme Git ou Mercurial) que vous faites fonctionner en local. Git vous permet de faire des commit intermédiaires (c'est sur votre PC alors OSEF), de tester des choses dans des branches locales sans risquer de perdre ou de casser quoi que ce soit. À l'inverse, le dépôt central Svn ne devrait contenir que du code valide (mais ça ne vous empèche pas de commiter votre code baclé avant votre départ en congés).
vendredi 27 janvier 2012
Pomodoro Technique
L'étape ultime sera d'utiliser la technique en équipe, d'une part parce que vous n'aurez ainsi plus l'air d'être le seul cinglé à compter des tomates, d'autre part, parce que cela donne une certaine culture d'équipe et permet de découper les séances de travail collaboratif, comme des réunions ou du développement en binôme.
Pour finir, peut-être considérez-vous comme irréalisable l'idée d'avoir un minuteur qui fait tic tac et qui sonne en plein openspace. Sachez qu'il existe une kyrielle d'applications pour vous minuter. J'utilise personnellement Flow Keeper, qui permet d'écouter le click au casque (j'ai toujours un écouteur dans l'oreille, tant pis). Les réels challenges de cette technique est de bien penser à démarrer les tomates, de bien penser à faire les pauses et surtout de savoir gérer les interruptions tant interne qu'externe. Il faut y aller progressivement et se laisser le temps de bien faire.
Autre lien :
Site officiel de la Pomodoro Technique.
