-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpresentation.html
More file actions
275 lines (223 loc) · 10.3 KB
/
Copy pathpresentation.html
File metadata and controls
275 lines (223 loc) · 10.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
---
title: Présentation
layout: default
lang: french
ref: presentation
---
<section id="presentation" class="container">
<h1>Mes activités</h1>
<p class="no-indent">
L’Atelier logiciel Sandré intervient à différents moments de la vie
d’un logiciel :
<a href="#reprise">reprendre un logiciel existant</a>,
<a href="#creation">en créer un nouveau</a>,
<a href="#audit">auditer un logiciel devenu difficile à faire évoluer</a>,
<a href="#lead">rejoindre une équipe de développement</a> ou
<a href="#formation">former des développeurs</a>.
</p>
<p class="no-indent">
Ces activités ont un même fil conducteur : produire des logiciels que
l’on puisse comprendre, faire évoluer et transmettre. Je privilégie
les relations de long terme, afin de pouvoir répondre dans la durée
des logiciels que je contribue à construire.
</p>
<p class="no-indent">
Si un élément vous interpelle au cours de votre lecture, consultez ma
<a href="faq.html">FAQ</a> ou
<a href="contact.html">contactez-moi</a>.
</p>
<h2 id="reprise">Reprendre et faire durer un logiciel</h2>
<p>
Beaucoup d’entreprises dépendent de logiciels développés au fil des
années, parfois par plusieurs équipes ou par des personnes qui ne sont
plus là. Le logiciel fonctionne toujours, mais personne n’ose plus y
toucher : chaque modification prend davantage de temps, les bugs
réapparaissent et les développeurs s’épuisent à le maintenir.
</p>
<p>
Je reprends ces logiciels pour en comprendre le fonctionnement, réduire
progressivement les risques et leur rendre une capacité d’évolution.
Il ne s’agit pas nécessairement de tout reconstruire. Une réécriture
complète est souvent une réponse séduisante à un logiciel difficile,
mais elle reproduit fréquemment les mêmes problèmes sous une forme
différente.
</p>
<p>
La reprise commence par une prise de connaissance du code et du métier
qu’il porte. Lorsque c’est nécessaire, je mets en place des tests
automatisés qui permettent de sécuriser les modifications futures.
Ils constituent une documentation vivante du comportement attendu du
logiciel et protègent contre les régressions.
</p>
<p>
Une fois le logiciel repris, je peux en assurer la maintenance et les
évolutions dans la durée. Je préfère travailler avec mes clients sur
plusieurs années : la connaissance accumulée au fil du temps permet de
prendre de meilleures décisions et d’éviter de traiter chaque problème
comme s’il était nouveau.
</p>
<h2 id="creation">Créer un logiciel métier sur mesure</h2>
<p>
Une entreprise n’a pas toujours besoin d’un produit existant. Lorsqu’un
besoin métier ne trouve pas de solution satisfaisante, je peux concevoir
et développer un logiciel sur mesure.
</p>
<p>
Je prends en charge le projet au forfait, depuis la compréhension du
besoin jusqu’à la mise en production. Le développement se fait par
étapes, avec des échanges réguliers permettant de vérifier que le
logiciel répond bien au métier auquel il est destiné.
</p>
<p>
Je ne cherche pas à produire le logiciel le plus sophistiqué possible,
mais celui qui répond correctement au besoin. Les tests automatisés
servent notamment à formaliser les comportements attendus et à garantir
que le logiciel continue de fonctionner à mesure qu’il évolue.
</p>
<p>
Une fois le logiciel livré, je peux également en assurer la maintenance
et les évolutions. L’objectif est de construire une relation durable,
plutôt que de considérer la mise en production comme la fin de la
responsabilité du développeur.
</p>
<h3>Le métier au centre</h3>
<p>
Développer consiste en grande partie à faire comprendre à une machine
une partie du métier d’une entreprise. Il faut donc commencer par
comprendre ce métier soi-même.
</p>
<p>
Je travaille en interaction étroite avec les personnes qui connaissent
le besoin. Les fonctionnalités sont construites progressivement et
vérifiées au moyen de tests automatisés. Ceux-ci constituent une forme
de contrat précis entre le métier et le logiciel, tout en fournissant
une documentation durable de son comportement.
</p>
<h3>Qualité et sécurité</h3>
<p>
La sécurité, la robustesse et la maintenabilité ne sont pas des ajouts
que l’on applique à la fin d’un projet. Elles dépendent largement des
choix faits dès sa conception.
</p>
<p>
Je prends donc en compte ces contraintes dès le développement et
j’alerte mes clients lorsque certains choix techniques présentent un
risque disproportionné au regard de leur activité. Lorsque des
problématiques dépassent mon domaine de compétence, je préfère
recommander un spécialiste plutôt que prétendre savoir tout traiter.
</p>
<h2 id="audit">Auditer un logiciel devenu difficile à faire évoluer</h2>
<p>
Un logiciel peut fonctionner correctement tout en devenant, année après
année, de plus en plus difficile à modifier. Les nouvelles
fonctionnalités prennent davantage de temps, les régressions se
multiplient et les développeurs passent une part croissante de leur
temps à contourner les difficultés du système.
</p>
<p>
Je réalise des audits pour comprendre pourquoi un logiciel en est arrivé
là. J’examine notamment sa complexité, sa conception, ses dépendances,
ses tests, sa capacité à être repris par d’autres développeurs et les
pratiques qui ont présidé à son évolution.
</p>
<p>
L’objectif n’est pas de dresser une liste de défauts techniques, mais
de comprendre les mécanismes qui rendent aujourd’hui le logiciel lent
au changement et coûteux à maintenir.
</p>
<p>
Le rapport d’audit permet ensuite de hiérarchiser les problèmes et de
déterminer par où commencer. Il peut servir à construire un plan de
redressement, à évaluer le risque de conserver le logiciel en l’état
ou simplement à disposer d’un regard extérieur avant de prendre une
décision importante.
</p>
<h3>Une expertise destinée aussi aux non-développeurs</h3>
<p>
Un audit doit être exploitable par les développeurs qui vont agir sur
le logiciel, mais aussi compréhensible par les personnes qui en portent
la responsabilité. Je cherche donc à relier les constats techniques à
leurs conséquences concrètes pour l’entreprise : coût, délai, risque,
dépendance à certaines personnes ou impossibilité de faire évoluer
certaines fonctions.
</p>
<p>
Je considère également que l’audit doit connaître ses limites. Je suis
un généraliste du logiciel et je fais appel à des spécialistes lorsque
les problèmes rencontrés sortent de mon domaine de compétence.
</p>
<h2 id="lead">Rejoindre une équipe comme Senior ou Lead Developer</h2>
<p>
Je rejoins également des équipes de développement, notamment dans un
rôle de Senior ou de Lead Developer.
</p>
<p>
Je participe directement à la production du logiciel, tout en apportant
mon expérience sur la conception, les choix techniques, la qualité du
code et les pratiques de développement. Le rôle de Lead ne consiste pas
pour moi à être celui qui possède toutes les réponses, mais à aider
l’équipe à prendre de bonnes décisions et à progresser collectivement.
</p>
<p>
Je veille particulièrement à la transmission. Le logiciel et les
connaissances nécessaires pour le faire évoluer doivent rester dans
l’équipe. Mon objectif n’est donc pas de devenir indispensable, mais
de rendre les autres développeurs plus autonomes.
</p>
<h2 id="formation">Former des étudiants et des professionnels</h2>
<p>
J’interviens également comme formateur auprès d’étudiants et de
professionnels. Je forme à la pratique du développement logiciel, avec
une attention particulière portée à la qualité, aux tests, à la
conception, à la complexité et à la maintenance.
</p>
<p>
Je cherche à comprendre avant de transmettre. Je m’appuie autant que
possible sur la recherche universitaire en informatique afin de
distinguer les connaissances établies des modes et des recettes du
moment. Cette recherche est ensuite confrontée à la réalité du
développement quotidien.
</p>
<p>
Mes formations sont conçues pour être aussi pratiques que possible :
les participants expérimentent, écrivent du code, observent les
conséquences de leurs choix et apprennent à raisonner sur la qualité
d’un logiciel plutôt qu’à appliquer mécaniquement une liste de règles.
</p>
<h3>Développer l’excellence</h3>
<p>
Je crois que notre profession dispose depuis longtemps d’une grande
partie des connaissances nécessaires pour produire de meilleurs
logiciels. Une partie du problème tient moins à l’absence de savoir
qu’à sa diffusion et à son appropriation.
</p>
<p>
C’est pourquoi je considère la transmission comme une composante du
métier d’artisan du logiciel. Former, accompagner et transmettre les
savoir-faire permettent à la profession de progresser collectivement.
</p>
<p>
Les formations peuvent être dispensées dans un établissement
d’enseignement, dans les locaux d’une entreprise ou à distance. Leur
contenu peut être adapté au public, aux objectifs et aux technologies
utilisées.
</p>
<h2>Une même conception du métier</h2>
<p>
Ces cinq activités reposent sur une même conception du développement
logiciel. Je me définis comme artisan du logiciel : un professionnel
qui cherche à maîtriser son savoir-faire, à prendre la responsabilité
de ce qu’il produit et à transmettre ce qu’il apprend.
</p>
<p>
Le logiciel est un ouvrage qui peut vivre pendant des années. Sa
qualité ne se mesure donc pas seulement au fait qu’il fonctionne
aujourd’hui, mais aussi à la facilité avec laquelle il pourra être
compris, modifié et transmis demain.
</p>
<p>
C’est dans cette perspective que je privilégie le travail bien fait,
les relations durables avec mes clients et une pratique nourrie autant
par l’expérience que par la recherche.
</p>
</section>