-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Brainstorming sur les bonnes pratiques #388
Comments
Regarder aussi la |
Voici les idées que je soumets au débat. Le principe général que j'ai à l'esprit est de ne pas réécrire depuis 0 un guide de bonnes pratiques mais s'appuyer sur un ou plusieurs guides faisant "autorité" dans la communauté R. Contrairement à python qui a PEP 8, R n'a pas l'équivalent, ce qui est très gênant. Que choisir comme guides de référence ? Ma référence pour le développement de packages est effectivement rOpenSci https://devguide.ropensci.org/ Pour le style de code, il est difficile de dire que le Tidyverse Style Guide n'est pas la référence en la matière. Pour les pipelines analytiques, c'est le plus compliqué je trouve car il y a évidemment targets mais pas seulement. |
De mon côté, je pousse à nouveau le "savoir compter, savoir coder" https://www.insee.fr/fr/statistiques/4469245 dans les ressources internes, qui me plaît toujours pas mal (ce n'est pas du tout orienté R). Il me semblait qu'il a été réecrit pour un éco & stat, mais je ne sais pas si c'est allé au bout finalement, je n'en ai pas trouvé trace. |
Bonjour, Beaucoup d'agent·e·s commence à coder (en R notamment) parce que leur poste le nécessite : il·elle·s suivent les 1ères formations "institutionnelles", puis se débrouille au quotidien, sans maîtriser, connaître et/ou appliquer les règles de bonnes pratiques qui, par ailleurs, ne sont pas forcément claires ni mêmes définies pour la programmation avec R. il me semble important que les bonnes pratiques soient également intégrées, rapidement, dans le cursus des formations INSEE. |
En y réfléchissant, je me demande si l'ambition de ce guide ne devrait pas être d'introduire, étape par étape, à la définition de méthodes favorables à
Avec ces trois objectifs en tête, on peut produire un guide qui se démarque de contenus déjà existants et avec des préconisations intéressantes pour la gestion de projets de données. On peut même ajouter à ces objectifs la sécurisation des données et des processus de production. Il ne s'agit bien-sûr pas d'épuiser un sujet mais de faire du nouveau guide un point d'entrée, renvoyant à la foisonnante documentation en ligne. Certes, ci-dessous, je présente des éléments en apparence avancés (intégration continue...) mais il s'agit d'expliquer la justification et l'intérêt, pas de faire un guide complet ou un tutoriel sur chaque question. Je pense que @avouacr peut également être intéressé par la discussion puisqu'on a eu cette discussion à propos de l'enseignement à l'ENSAE.
Doit-on se restreindre à R ? Le guide principal est en |
Pour mémoire, une issue connexe : #355 (attention, contient une envolé lyrique de @acazaubiel) |
Tout à fait d'accord avec @linogaliana. Il me semble que le sujet des bonnes pratiques peut (et gagnerait à) être traité de manière agnostique au langage utilisé. Cela permettrait de souligner les idées fondamentales derrière ces pratiques (le code comme outil de communication, pour soi futur et pour les autres, réflexion en projet voire package, nécessité du contrôle de version, réflexion sur l'environnement d’exécution de l'application..) indépendamment de leur implémentation. Et bien sûr cela éviterait d'avoir à éditer des guides similaires pour les différents langages utilisés en statistique publique, voire qui pourraient émerger dans le futur. Je trouve aussi pertinent de présenter les bonnes pratiques comme un continuum de degrés de reproductibilité, sur lequel on se placerait en fonction de ses aspirations (portée du projet, potentiel collaboratif, potentiel évolutif, etc.) et de ses contraintes (ressources humaines, temps, etc.). Dans la progression que tu suggères @linogaliana -- et à laquelle je souscris complètement -- il me semble clair que les principes sous-jacents à chaque étape sont assez indépendants du langage utilisé. Dans 1, 2 et 5 il est possible d'expliquer les principes communs, tout en renvoyant aux guides de référence propres à chaque langage, qui ont été suggérés dans la conversation. |
Je suis d’accord avec @CTassart que les bonnes pratiques doivent être enseignées très tôt, dès les débuts de l’apprentissage de Je suis également d'accord avec les propositions de @linogaliana et @avouacr, en particulier l'idée d'une gradation des bonnes pratiques en fonction de l'ambition des projets, et l'idée d'un guide de bonnes pratiques qui soit le moins adhérent possible à Toutefois, il me semble que nous pourrions définir un socle minimal de bonnes pratiques valables dans toutes les situations, et qui pourrait être inclus dans les formations (sur |
@oliviermeslin |
Le livre Clean code https://www.amazon.fr/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 |
Hello, Dans l'optique d'interventions à l'Ensae sur le sujet au cours de l'année, j'ai rédigé un plan détaillé de ce que j'imaginerais être un guide de bonnes pratiques pour projets de données. Vu que cela recoupe largement ce dont on a discuté dans le cadre de ce thread et de la réunion de vendredi, je le soumets à la discussion communautaire ici, peut être que cela peut servir de base aux suites du brainstorming ? Le syllabus est construit selon les principes que je proposais dans la discussion (et alimenté à partir des points soulevés par chacun) :
Je suis preneur de tout retour ! |
Bonjour à tous, Je trouve généralement que cette conversation reflète mes besoins et ceux de mon équipe. On développe des applications Shiny (c'est la vie) et on doit s'assurer d'avoir une perennité non nulle. Donc présenter les choses comme un continuum de reproductibilité avec un curseur qui dépendra des contraintes est clairement la meilleure chose. Je suis plus partagé sur cette idée d'avoir une approche multi-langages. Je comprends l'idée, mais je crains que nous aboutissions à quelque chose d'assez théorique in fine, si on ne reste pas "concentré" sur Egalement, je reste attaché à cette idée de template sur début de projet. Car le plus dur n'est pas de continuer un projet bien ficelé, mais de commencer un projet du début, et d'avoir une organisation suffisamment rigoureuse mais flexible (car tout n'est pas encore bien formalisé en début de projet). :) |
Hello, je viens de lire ce thread, très intéressant. Je suis d'accord avec la nécessité d'un tel guide et le plan proposé par Romain est top. J'ai récemment relu le "savoir coder" de l'Insee, qui est bien, mais me semble un peu daté, pas assez directif, et avec lequel je suis en désaccord sur certains points (e.g. optimisation de la performance). Je suis partagé sur la question de laisser le langage libre ou de se restreindre à R. Grosso-modo, j'imagine que de toute façon on ne parle que de python et de R. C'est vrai que se focaliser sur R sera mieux pour la majorité des gens, y compris les débutants. Maintenant, côté SSP Lab, on pousse vraiment pour l'utilisation de python, notamment pour les projets qui sont autre chose que des études. Est-ce qu'on ne peut pourrait pas à chaque fois expliquer la philosophiegénérale, puis spécifier à R et à python au moyen d'encadrés spécifiques ? Concernant python, j'aime beaucoup de bouquin là : https://nostarch.com/beyond-basic-stuff-python |
Merci beaucoup pour toutes ces propositions et références qu'il faut qu'on garde en mémoire. A mon avis, il est assez primordial de ne pas laisser de côté python qui va devenir, dans les années à venir, de plus en plus utilisé en self puis en prod. Dans l'optique de chaînes de prod dont le code risque d'évoluer (maintenance du code existant, nouvelles fonctionnalités...), il est important d'anticiper cela dès la mise en place du projet en proposant une forme de normalisation entre les langages. Cela tombe bien avec python et R (en effet, a priori on partirait que sur ces deux langages) qui partagent la même philosophie et pour lesquels le respect des bonnes pratiques peuvent permettre d'avoir très peu d'éléments spécifiques au langage qui augmentent le coût de la transition d'un langage vers l'autre. Le mouvement général étant à l'intrication de ces deux langages dans des chaînes de prod (cf. investissement important d'RStudio avec Quant à la présentation, j'imagine bien un système d'onglet permettant de facilement basculer d'un langage à l'autre. La doc de spark donne un bon exemple de ce que ça donne |
Je comprends la philosophie générale, c'est juste que les agents de L'Insee commencent à peine à être opérationnel sous R. Leur présenter un nouveau document dans lequel on présente Python comme l'avenir passera assez mal pour plein de raisons :
Bref, je pense que ce serait une mauvaise idée de mettre les deux langages sur le même plan. R est privilégié politiquement à l'Insee, c'est donc celui qu'il faut mettre en avant, surtout si on cherche à parler à tous les agents. |
Je pense que personne ici ne suggère de présenter Python comme l'avenir de l'Insee. En tout cas, à titre personnel, ce n'était pas du tout mon intention et je ne trouverais d'ailleurs pas pertinent de donner cette orientation à un éventuel guide des bonnes pratiques à usage SSP. L'enjeu est plutôt, comme cela a été souligné par @jeremylhour et @linogaliana, de tenir compte, sans pour autant se positionner, de plusieurs constats :
Je reste cependant tout à fait d'accord avec toi sur le fait qu'il faut absolument éviter l'écueil de produire un guide trop théorique. Dans tous les cas, le guide pratique de référence pour devenir "opérationnel sous R" resterait clairement utilitR. Il me semble qu'il est un peu vain de vouloir évoquer le sujet des bonnes pratiques trop tôt dans la formation des agents, dans la mesure où il faut avoir suffisamment de pratique du langage pour bien saisir en quoi il est important d'améliorer ses pratiques. Du coup, faire un guide relativement agnostique au langage (tout en mettant R au premier plan des implémentations) ne me semble pas incompatible avec la problématique de former correctement à R des personnes qui n'en ont jamais ou peu fait. Sinon, +1 pour la présentation onglets en mode doc Spark, et +1 pour les templates de début de projet. |
Hehe, ce thread est hyper intéressant (même si je passe pour le vieux relou)! :) En définitive (et comme souvent par écrit), nos différences sont je pense plus minimes que ce qui nous rassemble. Si on s'y prend mal, ce guide peut être lu/vu comme une recommandation "en creux" à faire du Python comme on pourrait faire du R. Je pense que cette recommandation ne passera pas auprès des agents de l'Insee, pour toutes les raisons évoquées si dessus. Je comprends néanmoins tes remarques sur la domination croissante de Python vis-à-vis de R, et c'est un vrai enjeu pour l'institut... Si vraiment on veut garder du Python dans ce guide, je pense qu'il faut l'amener à travers l'idée que ce guide ne s'applique pas uniquement à l'Insee mais aussi dans le reste du SSP, et au-delà dans la sphère privée. |
bonjour à tous, Il y a beaucoup d'idées dans ces avis de développeurs experts mais si je ne devais en retenir qu'une c'est qu'un code propre est facile à lire, comprendre et modifier. Cordialement |
Hello, en parlant de bonnes pratiques pour les projets, je viens de tomber là dessus : https://github.com/quantumblacklabs/kedro . Je n'ai pas eu l'occasion de tester, mais cela semble intéressant, et en lien avec ce sujet. |
Merci @jeremylhour pour Ca pourrait être le contrepoint |
Hello, très intéressant ces échanges. Histoire d'alimenter la biblio, je vous transmets le lien vers les guides qui compilent les bonnes pratiques identifiées dans le cadre de la démarche propre :
|
Hello, discussion très intéressante merci beaucoup !
J'avais fait quelques tests sur un autre projet et je m'étais rendu compte que la technique des Et autre question : même en cas de contournement très probable de ce problème par les brillants mainteneurs de ce dépôt, je me pose la question de l'articulation de ces onglets avec utilitr::html_paged issue de {pagedown}. |
Salut @ddotta ce sont de bonnes questions ! Pour les onglets sur le site web, je m'inquiète pas trop je pense qu'on peut trouver une implémentation, peut-être à base de fenced divs pandoc. Je l'ai fait en En ce qui concerne le |
@jeremylhour j'ai un peu étudié la question des pipelines côté En revanche, j'ai commencé à pas mal utiliser |
Un article de blog écrit cette semaine sur le sujet qui contient des liens intéressants sur le sujet de cette issue (dont certains ont déjà été évoqués) |
je ferme puisque maintenant on a la formation bonnes pratiques + des chaptires utilitr consacrés |
Bonjour à tous,
j'ouvre cette issue pour recueillir toutes vos idées autour des bonnes pratiques, dans la perspective de rédiger ensemble un guide de bonnes pratiques pour les selfeurs. Toutes les idées sont les bienvenues. J'anticipe qu'@RLesur va nous parler de ROpenSci, et qu'@acazaubiel va nous parler de
targets
...The text was updated successfully, but these errors were encountered: