# -*- mode: org -*-
#+TITLE:     Tenir un journal à jour
#+DATE: June, 2018
#+STARTUP: overview indent
#+OPTIONS: num:nil toc:t
#+PROPERTY: header-args :eval never-export

* Table des matières                                                    :TOC:
- [[#quelques-exemples-de-cahiers-de-notes-ou-de-laboratoires-pouvant-servir-de-source-dinspiration][Quelques exemples de cahiers de notes ou de laboratoires pouvant servir de source d'inspiration]]
- [[#rendre-compte-de-son-activité-efficacement][Rendre compte de son activité efficacement]]
  - [[#le-reporting][Le Reporting]]
  - [[#logistique][Logistique]]
  - [[#organisation-dun-compte-rendu-dactivité][Organisation d'un compte rendu d'activité]]

* Quelques exemples de cahiers de notes ou de laboratoires pouvant servir de source d'inspiration
Depuis plusieurs années, nous demandons systématiquement à tout
étudiant travaillant avec nous tenir à jour un cahier de laboratoire,
généralement en org-mode. La plupart du temps, ces documents
commencent à être rédigés dans des dépôts privés mais assez souvent
ils finissent par être complètement ouverts et mis à disposition du
plus grand nombre. En voici quelques-uns :

- Luka Stanisic (un ancien doctorant d'Arnaud Legrand) a commencé à
  utiliser cette méthodologie pendant son stage de M2 et a continué à
  l'améliorer pendant son doctorat. Une partie de sa [[http://mescal.imag.fr/membres/luka.stanisic/thesis/thesis.pdf][thèse]] a en fait
  porté sur la conception d'une méthodologie adaptée à la traçabilité
  et à la reproductibilité des expériences sur les plates-formes de
  calcul à hautes performances. Vous pourriez donc vouloir jeter un
  oeil au [[http://starpu-simgrid.gforge.inria.fr/][cahier de laboratoire tenu pendant son postdoc]] ainsi qu'au
  [[https://framagit.org/lvgx/pfe/blob/master/doc/labbook.org][rapport de Léo Villeveygoux]] qu'il a encadré pendant cette même
  période.
- Tom Cornebize est actuellement en thèse sous la supervision d'Arnaud
  Legrand et comme les autres, pendant son stage de master, il a
  également intensément [[https://github.com/Ezibenroc/simulating_mpi_applications_at_scale][pris des notes sur son activité quotidienne et
  les a mises à disposition sur Github]].
- Les étudiants de [[https://github.com/schnorr][Lucas Schnorr]] sont aussi généralement bien formés à
  cet exercice de prise de note dans un journal : [[https://github.com/taisbellini/aiyra/blob/master/LabBook.org][Tais Bellini's BSc.]],
  [[https://github.com/mittmann/hpc/blob/master/LabBook.org][Arthur Krause's LabBook]], [[http://www.inf.ufrgs.br/~llnesi/memory_report/MemoryReport.html][Luca Nesi's LabBook]].
- Ceux qui travaillent sous la supervision de [[https://people.irisa.fr/Martin.Quinson/Research/Students/Methodo/][Martin Quinson]] suivent
  des conventions similaires :
  - Ezequiel Torti Lopez, pendant son M2 en 2014, a produit un [[https://github.com/mquinson/simgrid-simpar/blob/master/report.org][rapport]]
    où les données, leur provenance et leur analyse étaient fournies
    dans l'annexe.
  - Betsegaw Lemma, M2R 2017, [[https://github.com/betsegawlemma/internship/blob/master/intern_report.org][LabBook]].
  - Gabriel Corona (ingénieur de recherche sur le projet SimGrid,
    2015-2016) maintient également un [[https://github.com/randomstuff/simgrid-journal/blob/master/journal.org][journal]] et un [[http://www.gabriel.urdhr.fr/tags/simgrid/][blog (findings)]].
  - Matthieu Nicolas (ingénieur sur PLM, 2014-2016): [[https://github.com/MatthieuNICOLAS/PLM-reporting/blob/master/activity-report.org][Journal]].

Org-mode n'est évidemment pas la seule option et il est courant que
nos étudiants et collègues utilisent un mélange d'Org-mode, Rstudio et
de Jupyter selon ce qui est le plus adapté à leurs besoins du moment.

* Rendre compte de son activité efficacement
Mon ami Martin a réalisé 
[[https://people.irisa.fr/Martin.Quinson/Research/Students/Methodo/][une excellente collection d'informations et de références sur sa page web pour expliquer à ses étudiants ce qu'il attend d'eux]]. 
*Je vais donc tout simplement le paraphraser dans cette
section* en rappelant les éléments qui me semblent essentiels (mais je
vous invite à lire [[https://people.irisa.fr/Martin.Quinson/Research/Students/Methodo/][l'original]]).
** Le Reporting
Je vous demande de rendre compte de votre activité par écrit,
régulièrement. Selon la situation, cela peut être chaque jour, chaque
semaine ou chaque mois, mais dans tous les cas, votre compte rendu est
essentiel pour les raisons suivantes :

- Ça vous force à réfléchir à ce que vous êtes en train de faire, à
  prendre du recul, ce qui peut vous permettre de résoudre vos
  problèmes par vous-même. Énoncer clairement votre problème permet
  souvent de faire apparaître des solutions.
- Ça m'aide à suivre votre progression et à réfléchir à votre
  problème, même entre deux réunions. Je ne pourrai pas vous aider si
  je ne sais pas que vous êtes partis dans une mauvaise direction ou
  même que vous êtes bloqués avec tel ou tel point technique.
- Ça vous permet de garder une trace de votre travail. C'est très
  précieux le jour où vous aurez à écrire votre rapport final (même si
  un rapport n'est jamais présenté dans un ordre chronologique).
- C'est aussi précieux pour celui qui viendra après vous et souhaitera
  repartir de vos travaux, les poursuivre ou les améliorer. Cette
  personne peut d'ailleurs être vous-même dans quelques mois (si vous
  vous engagez dans une thèse), un autre stagiaire, moi-même ou même
  un inconnu à l'autre bout du monde et qui a trouvé vos travaux via
  Internet : c'est ce qu'on appelle la science ouverte, un effort
  collectif ou chacun peut efficacement s'appuyer sur le travail
  scientifique de toute autre personne.

Je veux que vous écriviez votre compte rendu d'activité dans un
fichier org-mode (et oui, vous n'avez pas le choix !). [...]
** Logistique
Une fois que vous aurez mis en place et plus ou moins configuré tous
les logiciels dont vous aurez besoin, il vous faudra créer un fichier
dans un endroit auquel je puisse accéder et qui ne sera pas perdu si
jamais votre disque dur est endommagé, que vous vous faites voler
votre ordinateur, ou autre. Pour cela, commencez par créer un dépôt
git (sur GitHub, Gitorious, ou GitLab...). À la fin de votre stage,
votre rapport devra être archivé directement dans l'arborescence du
logiciel auquel vous avez contribué. Travailler directement dans cette
arborescence pendant votre stage peut cependant être un peu compliqué. 

Mais, oui, cela veut dire que votre journal sera publique à un moment
ou à un autre (après tout, c'est pour ça qu'on parle de science
ouverte). Vous avez donc intérêt à écrire votre rapport en anglais si
c'est possible. La partie compte-rendu d'activité (votre "journal")
peut être écrite en français si vous êtes plus efficace ainsi mais le
reste doit être rédigé en anglais. Pas la peine de prendre un ton trop
formel sous prétexte que le document a vocation à être publique.
Soyez efficace. Personne ne vous tiendra rigueur de ce que vous avez
pu écrire à l'occasion de votre stage il y a de nombreuses années. Si
vous insistez, il est possible d'anonymiser ou de pseudonymiser ce
document, venez m'en parler.

Enfin, il est important d'écrire votre compte rendu avant de quitter
votre bureau, tant que les choses sont fraîches dans votre esprit. En
plus, cela vous libérera de la charge mentale induite par ce travail
de mémorisation. Si vous décidez de faire un reporting hebdomadaire,
faites le le vendredi, une ou deux heures avant de partir. C'est la
meilleure façon de passer un bon week-end sans avoir à penser à votre
travail et de ne perdre aucune information dont vous pourriez avoir
besoin le lundi matin. Même principe si vous faites un reporting
quotidien.
** Organisation d'un compte rendu d'activité
Selon moi, une bonne pratique consiste à structurer votre compte rendu
d'activité de la façon suivante :

- Résultats :: Cette section résume les informations que vous avez
               obtenues à l'occasion de votre recherche. Elle est
               généralement vide au début de votre stage et prendra du
               volume au fur et à mesure que vous trouverez des
               choses. C'est aussi souvent ici qu'atterrissent les
               références bibliographiques par exemple mais ce n'est
               clairement pas l'endroit où vous stockez votre liste
               des choses à faire (TODO).
- Développement :: Cette section présente les aspects techniques de
                   votre travail. N'écrivez rien ici pour
                   l'instant. Mettez tout ce que vous collectez dans
                   la partie Journal.
- Journal :: C'est ici que vous décrivez votre travail au jour le
             jour, de façon chronologique (jour, semaine, mois...). 
             C'est la partie la plus importante de votre
             reporting et nous y reviendrons un peu plus bas.
- Conclusion :: C'est la section que vous écrivez la dernière semaine
                (ou celle d'après) de votre stage. Vous pouvez la voir
                comme une lettre à la prochaine personne expliquant
                l'état actuel de votre travail, avec quelques
                informations sur son organisation technique et ce qui,
                selon vous, sont les prochaines choses à faire et
                pourquoi. Cette partie peut-être hautement technique,
                les tenants et les aboutissants plus globaux de votre
                stage étant des considérations qui apparaîtront plutôt
                dans votre rapport final de stage.

La partie Journal est la seule que vous avez le droit d'écrire en
français si vous êtes plus à l'aise ainsi. Pas la peine de vous
"répandre", vous perdriez votre temps à écrire un long texte que très
peu de personnes seraient susceptibles de lire. Ne la bâclez pour autant
car si elle est trop courte elle sera incompréhensible la semaine
d'après (ou trois mois plus tard). Trouver le bon équilibre n'est pas
toujours simple mais je vous ferai un retour sur vos premières entrées
donc ne vous inquiétez pas.

Une bonne habitude consiste à ce que chacune des sections
décrivant une période de travail soit structurée de la façon suivante :
- Travail effectué :: quelques mots sur ce que vous avez fait et son
     contexte. Cela peut prendre la forme d'une petite liste de 2 à 4
     entrées sur ce que vous avez fait et pourquoi vous l'avez fait.
- Ponts bloquants et questions :: essayez d'expliquer clairement les
     points de blocage que vous rencontrez ou bien les points qui vous
     gênent et vous ralentissent. Si vous avez finalement déjà trouvé
     la réponse à ces problèmes, indiquez le dans la sous-section
     précédente. C'est aussi ici que vous écrirez toute question que
     vous aimeriez me poser. Si ce sont des interrogations
     personnelles (par exemple sur la logistique de votre stage, le
     logement, votre salaire), utilisez plutôt le mail qui restera
     privé entre nous (souvenez-vous que ce journal a vocation à
     devenir un document publique). Si cette section est vide pour une
     période donnée, sautez la tout simplement (ne gardez pas de
     sous-sections vides).
- Travaux prévus :: Une petite liste détaillant les points auxquels
                    vous comptez vous attaquer dans la période à venir.

Vous trouverez à la fin un modèle de compte rendu d'activité. Un
conseil : si vraiment vous vous sentez mieux avec une autre
structuration de document, essayez pour une période donnée et on fera
le point. Je sais m'adapter et je ne prétends pas avoir la science
infuse ni que mes conseils soient la solution ultime et
universelle. C'est juste le résultat de mon expérience jusqu'ici.

Remarquez comment les entrées commençant par le mot-clé TODO
apparaissent. On le retrouvera typiquement dans les sections "Travaux
prévus" du journal. Comme expliqué dans la [[http://orgmode.org/manual/Checkboxes.html][documentation d'org-mode]],
vous pouvez aussi tout simplement écrire =[ ]= au début de chaque
élément d'une liste de choses que vous avez l'intention de faire.

Dans ce cas, en rajoutant un [1/] à la fin de la sous-sous-section
"Travaux prévus", Emacs tiendra à jour le compte des choses faites et
qui restent à faire. Une fois que ce qui est décrit dans l'un des
éléments d'une liste est faite, il vous suffit de faire =C-c C-C= sur
cette entrée pour transformer le =[ ]= en une version cochée =[X]=. Le
[1/] sera alors mis à jour pour refléter la quantité de travail
restant. Lorsque tout aura été effectué, le mot-clé TODO passera à
DONE, ce qui procure un incroyable sentiment de satisfaction. :)

À tout moment, vous pouvez avoir accès à l'ensemble des choses à faire
(TODO) à l'aide du raccourci clavier suivant : =C-c / t=. Vous trouverez
plus d'informations sur les TODOs dans la [[http://orgmode.org/manual/TODO-basics.html][documentation d'orgmode]]. Le
point important à retenir ici est que la plupart des TODO doivent
apparaître dans la partie journal (afin de savoir quand ils se sont
posés).

*N'éditez jamais les entrées de votre journal a posteriori*, sauf si
vous avez vraiment une très bonne raison. Si cela devait arriver,
assurez vous que vous ne perdez pas d'informations sur ce que vous
avez fait et les choix que vous avez effectués (souvenez vous, science
ouverte, tout ça tout ça). Il faut toujours *ajouter* des nouvelles
informations aux anciennes, par exemple comme ceci :

#+begin_src shell :results output :exports both
- *edit* This hypothesis does not hold; see the entry of [the day where you found it] for more information.
#+end_src

La seule exception à cette édition des entrées passées, ce sont les
entrées de type TODO, qui sont dynamiques et ont vocation à être
transformées en entrées de type DONE. Si vous réalisez qu'il est utile
d'adapter une entrée TODO (parce que l'objectif initial a été mal
formulé, est inadapté, que sais je ?), faites passer l'entrée d'origine
de TODO à CANCELED (et/ou cochez le =[ ]= en indiquant dans une
sous-entrée que cette tâche n'a pas été faite mais annulée et
pourquoi) et créez une nouvelle entrée TODO dans la section du jour.

#+BEGIN_EXAMPLE
 * Introduction
 This file contains the reporting for my beloved internship done on
 this topic on that year. For now, just add the official title of
 your internship (check the convention signed between your
 university and my lab). After a few weeks, once you really
 understand your internship, you should write a few paragraphs about
 the context, problem and motivation of your work, with some
 possible use cases. But don't do that right now.
 * Bibliography
 * Journal
 ** Week 2 feb
 - read the doc about writing my reporting
 *** Questions
 - do I really have to use emacs?
 *** Work Planed [1/2]
 - [X] install emacs and setup orgmode
 - [ ] read the provided articles
 ** Week 9 feb
 - Installed emacs    
 (omit the Questions section if no question)
 *** Work Planed
 - do some useful work
#+END_EXAMPLE
 
