La programmation gagne-t-elle en simplicité ? 2ème partie

Brouillon

À venir

0 commentaire

Dans mon 1er article, je vous dévoilais les trois premières raisons sur 10 au total qui font que, selon moi, le développement logiciel est et sera de plus en plus complexe. En voici 4 de plus.

4. Le passage au Web

Le passage au web est sans doute l’une des transitions qui a le plus bouleversé les approches de développement et a contribué fortement à en augmenter les coûts. S’il est évident qu’on ne reviendra pas en arrière sur l’histoire, il est aussi clair que le protocole HTTP et le format HTML étaient pensés initialement pour de la consultation de documents à distance, ainsi que les navigateurs. Le format HTML initial était d’ailleurs par nature assez “ responsive ”, même si les formats de rendus étaient bien plus limités à l’époque.

Le succès fort d’Internet et le gain énorme apporté par l’absence de déploiement a rendu l’approche incontournable et systématique, parfois sans même regarder des alternatives crédibles, et le coût induit n’a pas forcément été mesuré ni considéré comme un enjeu. La réalité de la comparaison des bénéfices entre une application Web et une application de bureau est assez contrastée.

Mais le succès des sites a contaminé rapidement l’univers des applications, aboutissant à ce type de débat dont je ne suis pas complètement certain de comprendre l’utilité mais qui révèle bien le caractère insidieux de ce glissement.

Pourtant, le Web complexifie le développement de multiples façons, et a d’ailleurs rendu obsolète la plupart des outils qui avaient capitalisés sur des méthodes et des approches abstraites pour développer bien plus vite, tels que les Ateliers de Génie Logiciel qui ont proliféré dans les années 1990.

Un des facteurs de complexité est tout simplement la liberté que cela offre en termes de conception graphique et d’ergonomie. Là où une application Windows se contentait de boutons gris, on peut faire bien mieux, mais cela induit la nécessité de recourir à des profils particuliers, ergonomes et designers, et engendre forcément de multiples allers-retours et discussions.

Il n’est plus possible de développer des applications d’aujourd’hui sans recourir aux outils de la suite Adobe, tels que Photoshop, à certains moments du cycle. Cela nous apparait évident aujourd’hui, mais ce n’était pas le cas par le passé, et cela induit une multiplicité de profils et de compétences.

S’il ne fait pas de doute que le résultat n’est pas le même, le coût explose en proportion, surtout avec le point qui suit.

5. La variété des navigateurs

D’aucuns se sont réjouis de la fin du monopole d’Internet Explorer, qui a dominé le marché de manière quasi exclusive pendant un certain nombre d’années après la disparition de Netscape.

Quoiqu’on en pense philosophiquement, la multiplication des navigateurs induit une croissance des coûts directement corrélée à la quantité des versions déployées, à la fois en développement, mais bien évidemment aussi en tests et en support.

Pour s’en convaincre, il suffit de voir des sites comme BrowserStack qui permettent de tester les différents rendus, et revendiquent le support de plus de 1000 versions différentes de navigateurs de bureau. Il est désormais impossible d’éviter ce type d’outil pour valider une application ou un site à diffusion large.

6. L’introduction de complexités liées au Cloud

Au-delà des complexités du web, l’avènement du Cloud Computing et du Software as a Service, s’il est un réel progrès pour l’industrie du logiciel dans son ensemble, amène aussi son lot de complexité.

Le développeur et l’architecte d’aujourd’hui doivent absolument penser le code en intégrant une capacité à monter en charge, en tenant compte du fait que l’environnement d’exécution sera réparti, et peut-être dynamique ou virtuel, et en intégrant des concepts tels que le multi-tenant.

Là encore, le Gartner nous amène quelques prévisions intéressantes sur la notion de Devops, qu’ils considèrent comme devenant une philosophie prépondérante dans la plupart des organisations à relativement court terme.

On voit ainsi émerger de nouveaux métiers liés à la refonte de cette chaine entre le développement et l’exploitation, incluant les pratiques de développement et d’intégration continus.

7. La diversité des facteurs de forme des terminaux mobiles

En sus des éléments évoqués ci-dessus, il existe une explosion des types terminaux et de la taille de leur écran. Cela amène à devoir concevoir des visuels dans de différentes dimensions, en combinant souvent des images fixes et des images en format vectoriel. A l’heure de l’Internet des objets, il est peu probable que cette tendance s’inverse.

Concrètement, cela veut dire que le développeur va souvent devoir faire en sorte – ou au moins se poser la question – des appareils sur lesquels son application va fonctionner.

Cela a des impacts sur les choix de plates-formes et de technologies à mettre en œuvre, et induit une complexité à devoir penser une ergonomie qui fonctionne pour des appareils dont les contextes d’usage et les tailles d’écrans sont très différents.

En pratique, cela amène à traiter le Responsive Design, en général un facteur de complexité et de coût important pour une application, et en tout cas une option qui doit être décidée très en amont. Cela conduira aussi à décliner des visuels dans de nombreux formats et à tester l’ensemble dans toutes les configurations, ce qui suppose un minimum de matériel supplémentaire et des émulateurs.

Daniel Cohen-Zardi

Profil de l'auteur