services

Développement de logiciels

Nous offrons des services généraux de développement de logiciels sur la base d'un taux horaire ou d'un tarif fixe.

Nous assistons nos clients principalement dans le développement de Python, C, PHP, (POSIX) Shell ; mais aussi avec Java, C#, Go, et JS (javascript) occasionnellement. Le développement de logiciels est l’épine dorsale de la technologie moderne. Alors que le matériel est devenu de plus en plus standardisé et modulaire, nous avons toujours besoin de logiciels pour adapter ce matériel à un cas d’utilisation spécifique. Nous pouvons vous aider à personnaliser votre logiciel à plusieurs niveaux, avec Python, C, et d’autres langages.

Nous privilégions une approche empirique et pragmatique plutôt que des processus de développement dogmatiques et rigides. Cette approche, bien qu’elle ne soit pas une méthodologie en soi, se prête très bien aux méthodologies de développement agile.

Plus une philosophie qu’une méthode à proprement parler, proche de la très célèbre “philosophie UNIX”, notre approche partage la plupart de ses traits avec elle. Nous considérons cependant que certains aspects extérieurs sont aussi importants que ceux de la philosophie UNIX :

Notre approche de l’informatique est axée sur les données. Nous pensons que faire de l’informatique une affaire personnelle, bien que parfois tentant, n’est pas seulement redondant, mais invite également à des excès dangereux, tels que l’abstraction à outrance, qui peuvent être préjudiciables à la fois à la performance et à la maintenabilité. C’est dans cet esprit que nous suivons la cinquième règle de Rob Pike sur la complexité, tirée de ses « Notes on programming » (1989) :

« Les données dominent. Si vous avez choisi les bonnes structures de données et si vous avez bien organisé les choses, les algorithmes seront presque toujours évidents. Les structures de données, et non les algorithmes, sont au cœur de la programmation. »

Un autre point important de notre approche, qui peut sembler contre-intuitif ou contre-productif à première vue, est de réutiliser le code, mais pas systématiquement. Nous avons constaté au fil des ans qu’une réutilisation systématique du code peut introduire des dépendances inutiles, de la complexité, voire des vulnérabilités. Avant de réutiliser du code, nous réfléchissons à ce qu’il faut réutiliser, et pour quoi faire. S’il s’avère qu’une implémentation simple et partielle contenue dans le projet, ou en dehors de celui-ci, est probablement bénéfique, nous avons tendance à la préférer. Comme l’a dit John Carmack lors de son discours d’acceptation du diplôme honorifique de l’UMKC :

« Ainsi, dans de nombreux domaines, il est presque admis qu’il ne faut pas réinventer la roue. Mais je vous invite à essayer de temps en temps. Vous en sortirez grandi, et c’est ainsi que l’on finit par obtenir de meilleures roues. En allant de l’avant et en essayant. »

Si vous croyez en notre approche et souhaitez collaborer avec nous, contactez-nous !