La création de nouveaux logiciels est-elle généralement une partie importante de la plupart des tâches de programmation? [fermé]


63

Je travaille dans le développement de logiciels depuis plus de 10 ans maintenant, et je réalise que je parviens rarement à créer quelque chose de "nouveau". Je sais que «nouveau» est un terme vague, mais je le définirais comme allant d’un nouveau projet à grande échelle évident à une nouvelle fonctionnalité importante dans un projet existant (disons quelque chose qui nécessiterait une réflexion dans sa conception, et qui pourrait prendre 2 semaines ou plus à compléter). Peut-être qu'une directive approximative est une nouveauté si elle nécessite une spécification écrite. Je pense que la plupart des programmeurs savent de quoi je parle - vous êtes dans la zone, écrivant une tonne de code à un rythme rapide.

Quoi qu'il en soit, en repensant à ce que j'ai fait, j'estimerais que moins de 10% de mon temps est consacré à du "nouveau" travail. Il y a des choses comme "adapter ce système existant pour fonctionner dans ce nouvel environnement", ce qui nécessite certes beaucoup de planification, mais le codage actuel et les "nouveautés" consistent à apporter de minuscules modifications à de nombreux endroits dans le code. De même pour les petites demandes de fonctionnalités - si je sais quoi faire, elles peuvent souvent être terminées en moins d’une heure, et si je ne le fais pas, c’est beaucoup de lecture de code et de détermination de la marche à suivre (ce qui me frustre parce que j’apprends beaucoup mieux en faisant, pas en lisant).

En général, j'ai l'impression de ne rien créer la plupart du temps. J'ai en quelque sorte supposé que c'était le cas dans la plupart des endroits: un nouveau produit sortait assez rapidement et à ce moment-là, tout le monde était excité et sortait le code à un rythme rapide, mais une fois installé, il passe en mode maintenance, où peu de modifications ultérieures seraient considérées comme "nouvelles et créatives".

Ai-je tort? Suis-je en train de décrire avec précision la plupart des tâches de programmation ou la plupart des programmeurs ont-ils le sentiment de créer souvent de nouvelles choses?


11
@JamieTaylor Traduit dans vos termes métaphoriques, la question qui se pose est la suivante: est-il typique de toujours réparer le modèle Lego de quelqu'un d'autre et d'en créer rarement un nouveau?
Caleb

22
@ Joe, hah! Vous êtes donc le type qui produit tous ces systèmes! * # @ * &!% Que nous devons maintenir à jamais?! ;-P
Péter Török

14
@ Joe, oui, merci beaucoup. Peut-être que si vous pouviez écrire un peu plus de tests unitaires, je serais tout à fait satisfait :-)
Péter Török

8
@ Joe, cela rappelle le vieil adage, que je n'ai pas trouvé particulièrement pertinent - c'est-à-dire jusqu'à présent: "codez toujours comme si le prochain type prenant en charge votre code était un psychopathe dangereux qui savait où vous habitez"; -)
Péter Török le

11
@JonMcdonald Cela ne devrait pas être déprimant - aucun travail n'est rose, et la maintenance d'une base de code existante est peut-être le moyen le plus rapide d'acquérir de l'expérience et d'améliorer vos compétences en tant qu'ingénieur. Consacrer du temps à la maintenance vous aidera à comprendre et à éviter toutes les erreurs typiques qui conduisent à un code incontrôlable, et vous aidera à apprécier des choses qui ne vous intéresseraient probablement pas, telles que l'analyse de code statique et la création de tests unitaires automatisés.
Ben Cottrell

Réponses:


66

La maintenance est une grande partie du travail logiciel. Bien entendu, aucun responsable du recrutement ne vous le dira, mais c'est certainement le cas.


13
C’est vraisemblablement vrai, mais la maintenance est toujours très importante et peut parfois poser des problèmes intellectuels :)
joshin4colours

3
Il n'y a absolument rien de mal avec la maintenance. Mais comme les gens le trouvent moins séduisant, les descriptions de poste ont tendance à le minimiser.
Scott C Wilson

Par maintenance, vous voulez dire que le logiciel fonctionne conformément aux spécifications en constante évolution. La maintenance en tant que concept ne s'applique qu'au matériel et à d'autres éléments susceptibles de tomber en panne de manière aléatoire en raison de facteurs physiques. Le logiciel n'est pas mis à jour, il est repensé et refactoré.
Rudolf Olah

3
@mouse - parfois oui, mais parfois, il suffit de corriger des bugs flagrants dans l'implémentation pour respecter les spécifications d'origine. Mais vous avez raison: diverses activités sont couvertes par la rubrique "entretien".
Scott C Wilson

@mouse, la refonte et la refactorisation ont aussi des significations et ne couvrent pas les choses que nous appelons généralement "maintien". Si certains logiciels utilisent une fonction désormais obsolète ou si une API externe change, vous ne ferez aucune refonte ni refonte.
cbrandolino

59

Oui, votre perception est exacte. Il va sans dire que beaucoup plus de temps, d’argent et d’efforts sont consacrés à la maintenance des systèmes qu’à la création de nouveaux systèmes. Donc, évidemment, l'attribution de temps de la plupart des programmeurs va refléter cela.

Une des raisons est que beaucoup de gens, quand ils arrivent à faire du "nouveau & créatif", le font mal, de sorte qu'il est difficile de maintenir le système (cela est particulièrement probable s'ils n'ont jamais fait de maintenance eux-mêmes - personne qui a constamment travaillé sur de petits projets greenfield ne peut vraiment prétendre être compétent).

Une autre raison (probablement plus importante) est que la plupart des systèmes sont conçus pour être continuellement utiles, pas seulement pour un événement ponctuel. Ils continuent donc de s’y habituer beaucoup plus longtemps qu’il n’a fallu pour les développer. Mais pendant ce temps, les exigences changent (et s’y ajoutent) en raison de modifications de la législation, du marché, de la recherche, des utilisateurs, peu importe. Et cela signifie des travaux de maintenance.


15
+1 pour "personne qui a constamment travaillé sur de petits projets greenfield ne peut prétendre être compétent"
mattnz

1
Qu'est-ce qu'un "petit projet greenfield"?
Biscuits à la farine de riz

@RiceFlourCookies: Greenfield est un terme désignant une activité de travail complètement nouvelle. Dans ce cas, un projet est parti de zéro.
Steven Evers

@RiceFlourCookies et bien que relativement petit soit relatif, les projets pouvant être réalisés par une seule personne peuvent raisonnablement être considérés comme petits.
Scott C Wilson

23

Les systèmes hérités sont ceux qui ont réussi. Ils ont survécu au processus de développement initial où 50% des projets échouaient (même après que le succès ait été redéfini!). Ils ont survécu à un environnement commercial en mutation. Ils ont probablement survécu à une dizaine de propositions de jeunes programmeurs naïfs pour réécrire le tout en Java ou tout ce qui était à la mode à l'époque. Ils ont eu la chance de pouvoir survivre aux différentes coupes budgétaires, réorganisations, fusions, etc., quel que soit le ministère, l'entreprise ou l'agence.

Probablement moins de 5% du logiciel écrit fonctionnera toujours dix ans plus tard.

Donc, plutôt que de vous plaindre à ce sujet, considérez comme un privilège de travailler sur une telle histoire à succès darwinienne et une occasion d'apprendre ce qui fonctionne dans le monde réel et pourquoi.


8
... ou ils ont survécu parce qu'il y avait quelqu'un qui avait suffisamment d'influence décisionnelle et qui avait un intérêt caché à garder le passé gigantesque pendant au moins 10 ans, par exemple, obtenir un emploi, une retraite ou tout simplement être trop incompétent et ses compétences trop désuètes trouver un nouvel emploi
Marek

@marek il peut en effet être les deux.
nicolas

8
Le fait que quelque chose survive ne signifie pas que c'est optimal ou même bon. Cela signifie simplement qu'il est "assez bon" que personne ne l'ait encore sorti de sa misère. La principale force sélective dans la nature est la concurrence; quand il y a peu de concurrence, vous pouvez obtenir des organismes plutôt vicieux. La concurrence fonctionne également dans les logiciels, mais les systèmes internes n’ont généralement pas beaucoup de concurrence. Le résultat est que les systèmes internes sont souvent vissés au maximum.
Caleb

@Caleb - En règle générale, les systèmes dans lesquels les développeurs écoutent les utilisateurs et verrouillent les exigences survivent. Peu importe comment mal écrit! Les systèmes dans lesquels les développeurs essaient de faire correspondre le dernier modèle de conception, en implémentant les derniers modes et obsédés par leur mise en retrait ne parviennent pas à la première version. Le code de travail est toujours meilleur que le code conforme aux mots à la mode.
James Anderson

14

Le terme qui est souvent utilisé pour les nouveaux projets qui ne dépendent pas de développement plus ancien est un projet nouveau . Vous pouvez parfois voir le terme dans les offres d'emploi - sachant que vous devez commencer à partir de zéro plutôt que d'hériter de l'entreprise ratée de quelqu'un d'autre peut rendre un travail plus attrayant.

Les projets logiciels réussis nécessitent généralement plus de temps de maintenance que de construction en tant que nouveaux projets. Il n’est donc pas du tout surprenant que vous ne puissiez pas créer beaucoup de choses totalement "nouvelles".

En outre, créer quelque chose de complètement nouveau représente beaucoup de travail. Même sur un projet vierge, vous choisirez probablement plusieurs outils pour vous aider: plate-forme, compilateur, frameworks, bibliothèques, etc. Dès que vous avez fait ces choix, vous avez imposé certaines contraintes à votre projet. Cela ne veut pas dire que vous ne faites plus de nouveau travail, mais que "nouveau" est un terme relatif ici. Ce n'est pas un grand pas à partir de là de voir ajouter une fonctionnalité ou un module à un projet existant en tant que "nouveau", même si vous ne l'appelleriez pas de projet en arrière-plan.


7
"Les tentatives infructueuses de quelqu'un d'autre" - les systèmes hérités sont les exemples de réussite de Darwin, les projets échoués ne sont pas maintenus!
James Anderson

2
@JamesAnderson Point pris, mais le succès technique n'est pas la seule force sélective dans l'écologie logicielle. Qui n'a pas vu le chien à moitié fini d'un projet important pour les gestionnaires mais trop long pour être recommencé?
Caleb

6

Cela dépend du travail que vous recherchez.

Je n'ai travaillé qu'une seule fois pour une société de produits logiciels purs, où j'ai travaillé sur leur seule application plaquée or dans une petite équipe de jeunes entreprises.

Sinon, j'ai travaillé pour des sociétés de technologie qui avaient besoin de logiciels pour prendre en charge leurs produits de recherche et développement internes ou externes.

L'avantage, c'est que je construis des produits complets de début à la fin et que je construise à peu près ce que je veux. Parfois, vous pouvez également essayer des technologies plus récentes que si vous étiez bloqué pour ajouter des fonctionnalités à une application existante leader du marché.

L'inconvénient est que vous faites partie du coût, pas du produit. J'ai donc mis des projets en attente parce que "nous ne faisons pas de logiciel" / "le logiciel n'est pas une activité essentielle" = c'est incroyable de voir comment les entreprises pensent pouvoir vendre une machine-outil à 100 K $ sans logiciel pour l'exploiter!


Cela me surprend également de constater à quel point les entreprises pensent qu’elles n’ont pas besoin de solution personnalisée à leur problème et qu’un million de rangées de 278 colonnes chacune peuvent être manipulées facilement et rapidement dans excel, au lieu d’une base de données.
Spencer Rathbun

@SpencerRathbun Ce qui me surprend encore plus, c'est quand vous leur donnez une estimation pour construire le logiciel personnalisé, ils commencent immédiatement à vous interroger et à vous demander: "N'est-ce pas leur logiciel open source gratuit qui peut nous donner gratuitement la fonctionnalité X personnalisée?"
maple_shaft

7
@ maple_shaft Ce qui est encore plus amusant, c'est quand ils disent "nous pouvons acheter X pour 10 000 $ et cette solution polyvalente conviendra parfaitement à notre problème personnalisé sans configuration! BTW vous aurez la charge de le mettre en marche et de résoudre tous vos problèmes / les bogues avec le logiciel que nous avons acheté sont de votre faute. "
Spencer Rathbun

3
@SpencerRathbun Vous gagnez, c'est la pire des situations.
maple_shaft

5

Plutôt que de voir le code hérité comme un moyen de nettoyer en permanence les dégâts de quelqu'un d'autre, considérez-le comme une opportunité de travailler sur de nombreux nouveaux projets.

Pensez-y, chaque nouvelle fonctionnalité ajoutée à un système est un petit projet en soi. Vous devez toujours appliquer la totalité du SDLC afin de vous assurer que vous avez terminé le travail correctement. Bien sûr, on vous donnera probablement une spécification pour la fonctionnalité, mais en général, les détails les plus fins sont laissés de côté. Il vous appartient donc d'analyser le problème comme indiqué, de concevoir la meilleure méthode pour appliquer le changement, de le tester, de le coder, puis relâchez-le sur votre système de contrôle de version et maintenez-le éventuellement à l'avenir.

D'après mon expérience, il est rare que vous travailliez dans un champ entièrement verdoyant et, souvent, lorsque vous avez la chance de le faire, vous devrez vous attendre à ce que le projet nécessite une bonne partie de son entretien et peut-être même pendant la durée de vie du produit, ou pour toute la période que vous passez chez un employeur donné. En effet, votre expérience intime avec un produit signifie que vous devenez un référentiel de connaissances, et il peut être considéré comme coûteux de passer à autre chose. Lorsque vous démarrez un produit existant, c’est parce que l’employeur a récemment perdu une ressource ou qu’il a besoin de ressources supplémentaires pour le projet et que son entreprise a besoin de s’assurer que cela n’entraînera pas une perte trop importante sur l’investissement réalisé dans son logiciel. . C'est la réalité d'être un ingénieur en logiciel.

Je travaille dans l'informatique depuis près de 22 ans avec les 15 dernières années en tant que développeur de logiciels et depuis lors, je n'ai créé qu'environ 5 nouveaux produits. La plupart du temps, je les ai maintenus à long terme ou à ceux de quelqu'un d'autre. produit. Chacune m'a donné des défis et des problèmes à résoudre, et chacune d'elles a été traitée non pas simplement comme un grand projet dont je fais simplement partie, mais aussi comme une énorme série de micro-projets à terminer.

C'est incroyable de voir comment une petite gymnastique mentale peut totalement changer votre perception et votre plaisir du travail quotidien que vous faites. ;-)


4

Je pense que de nombreux travaux de développement de logiciels impliquent l’amélioration d’un produit existant ou l’adaptation de code existant à un nouveau client ou marché.

Ce n'est pas vraiment 'maintenance'. Par exemple, VMWare vient de publier la version 8, une mise à niveau majeure de son produit principal. Je soupçonne que peu de développeurs ayant effectué ce travail étaient présents lorsque la première ligne de code pour VMWare a été écrite. Ils ont construit leur mise à jour majeure sur le code écrit par des types qui sont partis depuis longtemps.

Dans la version bêta de Workplace, il y a une question sur le fonctionnement du système de projet personnel à 20% de Google .

Je suis sûr que Google a compris que les meilleurs développeurs souhaitent participer à la création de nouveaux logiciels et finiront par se lasser d'années d'ajouter de petites fonctionnalités et de peaufiner la gui pour la prochaine publication.

Avec les 20% de projets, je suppose que les développeurs de Google ne voudront pas rester pour améliorer les projets de Google, car il peut encore s'amuser au tout début de quelque chose de nouveau.


2

Vous passerez votre temps à créer de nouvelles fonctionnalités et à modifier les fonctionnalités du code existant afin de se conformer à la nouvelle spécification.

D'autres appellent cela maintenance mais c'est un terme horrible. Il s'agit d'une refonte et d'une refactorisation ou d'un recodage du logiciel pour le rendre conforme à une nouvelle idée de ce que le programme devrait faire.


2

Je dirais que cela dépend de la société pour laquelle vous travaillez.

Mon premier emploi était une société de logiciels de comptabilité dont le produit principal était un système ERP, concurrençant à peu près au même niveau que Great Plains ou Peachtree. vous pensiez que vous vous trompiez avec PT, vous avez alors quitté le niveau pour passer à un package tel que SAP). Ce travail consistait à 99,99% de maintenance, définie comme la correction de bugs et l'ajout de "petites choses", sans changer fondamentalement le fonctionnement du logiciel ou ses possibilités. J'ai quitté l'entreprise lorsque le PDG a voulu réécrire le système d'une page à l'autre, ce qui aurait été cool, sauf qu'il a insisté sur plusieurs caractéristiques de conception qui vont clairement à l'encontre des schémas, tels que la plate-forme interne (permettant un degré de personnalisation élevé). du programme en donnant essentiellement au client un concepteur VS muet,

Mon prochain travail après cela a été une entreprise sous contrat qui a fait du "développement clé en main"; le système spécifié par le client a été entièrement conçu, matériel et logiciel, puis à la fin du projet, il a été entièrement transféré au client, qui peut le gérer lui-même ou conserver les services de la société moyennant des frais mensuels. Mon travail consistait à développer l'un de ces projets majeurs. Ainsi, tout ce que j'avais fait n'existait pas auparavant. Même dans ce cas, le développement est intrinsèquement itératif; vous ajoutez toujours à ce que vous avez déjà (même si ce que vous avez n'est rien), et vous devez éviter et résoudre les problèmes de régression (les nouvelles choses brisant les anciennes choses). Et une fois que le projet est passé au statut de "garantie",

Mon travail actuel est de retour au développement interne, pour une entreprise de sécurité qui utilise la surveillance vidéo et les commentaires audio pour fournir une vérification du signal d'alarme et d'autres services de "garde virtuelle". Ce domaine se développe rapidement et continue de se développer; de nouveaux équipements entrent en permanence sur le marché, de nouveaux clients sont inscrits qui veulent que nous fassions de nouvelles choses, et les produits existants ne répondent plus aux normes UL et gouvernementales en vigueur. 99% de ce travail est "intégration"; écrire un nouveau logiciel qui n’existait pas auparavant, afin de faire fonctionner un matériel ou un logiciel nouveau, mais préexistant, avec un autre matériel ou logiciel préexistant, probablement plus ancien, afin de pouvoir faire de nouvelles choses avec les deux.


1

Je dirais que cela dépend beaucoup de la nature de votre rôle.

Je fais partie d'une petite équipe et, à ce titre, je dois maintenir et soutenir tout ce que je crée.

Il y a 5 ans, la plupart de mes activités étaient "nouvelles" - je dirais maintenant que la maintenance du code existant occupe au moins la moitié de mon temps, et 25% supplémentaires sont des "nouvelles" versions de systèmes existants.

Mais si vous travailliez uniquement en tant que développeur avec une équipe chargée de la maintenance et du support après la publication de votre code, techniquement, tout serait "nouveau". Si vous pouvez trouver un emploi pour lequel il n'est pas nécessaire de conserver votre propre code, prenez-le!


1
  1. Cela dépend de la dangerosité de votre poste: ;-)

    Si vous travaillez pour une nouvelle société qui développe de nouveaux produits avec un risque élevé de survie de la société, vous créez probablement d'excellents nouveaux produits.

    Si vous travaillez pour une ancienne entreprise dont la position sur le marché est stable, il est plus probable que vous codiez en mode maintenance ;-).

  2. La création de nouveaux logiciels est toujours très tentante . En vérité, il est difficile de faire cela correctement . Faire du code maintenable n'est pas une tâche triviale.

    Si vous pensez à ces tonnes d’aspects, vous devez vous assurer d’écrire un code correct: journalisation correcte, suivi et acquisition de statistiques appropriés, conception descriptive efficace qui aide les personnes même inconnues à participer à votre projet, documentation, tests automatiques et développements pilotés par les tests.

Peu de gens le font bien, nous devons donc maintenir leur code et le peaufiner à l’état approprié. ;-)

La bonne nouvelle est que si vous êtes dans l'entreprise suffisamment longtemps, vous pouvez avoir une influence sur la rédaction du nouveau code :-)


1

Que vous fassiez principalement de la maintenance ou pas, tout est au moins partiellement sous votre contrôle. Dans mon cas, la majeure partie de mon travail depuis plus de 15 ans a été un nouveau développement. C'est parce que je recherche des emplois qui me permettent de faire de nouveaux développements. Je ne suis pas un entrepreneur et je ne fais généralement pas de développement Web. J'ai presque toujours travaillé pour de petits employeurs et je travaille habituellement dans des domaines de niche (développement d'interface graphique de bureau, outils d'assurance qualité, outils de développement, marchés verticaux).

J'ai également constaté et constaté que les meilleurs programmeurs d'une équipe obtiennent généralement les meilleurs postes. Alors, concentrez-vous sur le fait d'être le meilleur programmeur de votre entreprise et vous constaterez que de nouveaux développements vous attendent.


1

Le développement de la maintenance est une tâche difficile, plus difficile à bien des égards que le nouveau développement. D'après mon expérience, les employeurs aiment garder un développeur en maintenance, surtout s'ils le font bien. Trouver de bons développeurs de maintenance dans les technologies existantes est plus difficile que de trouver quelqu'un qui peut utiliser les dernières technologies.

J'ai travaillé dans une entreprise qui était divisée en une équipe produit, qui était entièrement chargée de la maintenance, et une équipe chargée du projet, qui était entièrement en développement. Il y avait d'excellents développeurs des deux côtés, mais les responsables de la maintenance étaient nettement plus spécialisés et utilisaient les technologies traditionnelles.

Puis-je suggérer que vous repoussiez et demandiez de nouveaux travaux de développement? Et si votre employeur ne s'occupe que de la maintenance, vous devez peut-être passer à autre chose?


0

Je dirais que cela dépend de nombreux facteurs. Où travaillez-vous, quels types de produits fabriquez-vous, comment votre équipe est-elle organisée, etc.

En quatre ans de travail dans mon entreprise, je dirais que 70 à 80% de mon temps est consacré à la création de quelque chose de nouveau. 50% à 60% de ces dépenses sont consacrées à des projets volumineux, il s'agit d'un code entièrement nouveau, le reste de ce temps étant consacré à l'amélioration des fonctionnalités actuelles.

Je sais en partie comment mon entreprise fonctionne. Tous les membres de mon équipe de développement ne passent pas ce temps à créer de nouvelles fonctionnalités. Il y a un nombre qui concentre son temps sur rien mais sur la correction des bogues / la chasse. S'il s'agit d'une toute nouvelle fonctionnalité ou s'ils ont besoin d'aide, ils me le demandent pour qu'ils enquêtent. En général cependant, cette petite équipe de chasseurs de bogues permet à un groupe plus large de développeurs d’appuyer sans interruption.


0

Je travaille depuis près de trois ans en tant que seul développeur dans une entreprise qui utilisait QuickBooks et Excel, et rien d’autre à mes débuts. Nous avons maintenant une application Windows Forms , une configuration SharePoint , SQL Server + Reports, un complément Excel et un complément Outlook.

Juste aujourd'hui , je configurer pour la première fois un système de billetterie parce que j'ai perdu la capacité de gérer les demandes par courriel à un taux qui a gardé les utilisateurs de se plaindre, donc je considère que c'est un signe que je suis entré en mode maintenance.

Mes emplois précédents ressemblaient davantage à ceux publiés par les autres, mais je me suis dit que je mettrais mon expérience atypique simplement parce que cela montre que vous ne savez jamais ce que le prochain travail apportera. Je suis épuisé, mais la somme que j'ai apprise sur ce travail en vaut la peine.


Le mode maintenance est arrivé il y a longtemps ... Vous avez maintenant besoin d'outils pour vous aider.

Je suis content de ne pas avoir de sentiments, car ils pourraient être blessés en ayant la seule réponse sur ce sujet d'avoir des points négatifs :(
Aaron Anodide

Eh bien, vous ne répondez pas à la question posée.

0

Certaines grandes entreprises comme la société pour laquelle je travaille ont adopté une politique de déclassement des logiciels après un certain nombre d'années, peut-être parce que le langage de développement dans lequel il a été écrit n'est plus utilisé (personne de Delphi?) Ou que la plate-forme est remplacée (Windows XP). , ou les exigences réglementaires l'exigent. Par exemple, les programmes à deux niveaux qui communiquent directement avec une base de données sont maintenant désaffectés au profit de trois niveaux qui utilisent des connexions Kerberisées pour une sécurité accrue.

Les utilisateurs ont toujours besoin de cette fonctionnalité originale. Ainsi, une version entièrement nouvelle utilisant les techniques les plus récentes est développée.

Attendez-vous à un cycle de remplacement de 5 à 7 ans pour ce genre de chose. Par exemple, d'ici 2020, je m'attends à ce que les logiciels WPF (client) / Java (serveur) que j'écris maintenant soient de vieilles technologies et soient remplacés par quelque chose de plus récent.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.