Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Écrire la (bonne) doc

Écrire la (bonne) doc

Présentée au BreizhCamp 2016 sous le titre "Write the (good) doc", cette conférence tente de présenter ce à quoi il faut faire attention lorsque l'on écrit de la doc, par où commencer, quelques conseils et bien sûr des exemples.

Florian Strzelecki

March 25, 2016
Tweet

More Decks by Florian Strzelecki

Other Decks in Technology

Transcript

  1. • Simple • Étape par étape • Détaillé • Contextualisé

    • Accessible à tous • Reproductible • Linéaire • Limité à un seul résultat
  2. Et si… • Je veux faire un autre meuble ?

    • Ou construire un VAISSEAU SPATIAL ? #bzhdoc
  3. #bzhdoc SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP

    ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP ! SPACESHIP !
  4. Il n'existe pas « une » doc pour tout le

    monde. Tout le monde a « sa » doc. #bzhdoc
  5. Madame Rose « maman » B. • Aime ses chats,

    son jardin, et surtout ses enfants • Championne de Belote en ligne • Cultivée et grande lectrice #bzhdoc
  6. Un certain Florian S. • Encore au Lycée • Aime

    les jeux vidéos • #LesInternets • Voulait devenir écrivain quand il était plus jeune, mais développeur ça rapporte plus. #bzhdoc
  7. L'ouvrier Le jeune diplômé • Travaille en ESN • Débute

    en tout • Il a des amis imaginaires, comme stackoverflow #bzhdoc
  8. #bzhdoc La Bushi du Code • 15 kata matin et

    soir • KISS, DRY, YAGNI • Cherche l'équilibre parfait • Cache un sombre secret (PHP en ESN) • Compétences rares
  9. #bzhdoc Nils « R&D » G. • Projet top secret

    • Super edgy (early adopter) • Prototype en prod • 5 % d'optimisation du CA par ligne de code
  10. #bzhdoc Technicien système et réseau • home $ ssh CL3-FTTASK-V31

    • prod $ curl TOOLS_URL | sh • prod $ ./run_script-v2.sh • prod $ export DEBUG=1 • prod $ ./run_script-v2.sh \--force \--no-input
  11. #bzhdoc Chacun sa doc • Manuel utilisateur • Readme, Install,

    Release notes • How to & Tutoriel • Fonctionnalités & comportements • Références, spécifications, normes • Index, glossaire, dictionnaire, etc.
  12. Propriétés utiles (nécessaires?) • Raconter une histoire… non linéaire. •

    Rendre reproductible… et modulable. • Rester simple… tout en restant complet. • Être stable… et toujours à jour ! #bzhdoc
  13. Exemple : qui suis-je ? « Site e-commerce vendant des

    pièces automobiles compatibles avec des véhicules. » #bzhdoc
  14. Points d'entrée • Quickstart : se lancer pour comprendre •

    Tutoriel : aller plus loin en partant des bases • Chapitres : plonger dans l'application • Installation : mettre en production • Références : chercher un détail • FAQ : trouver une réponse rapide • Code : lire la source, et peut-être contribuer ? #bzhdoc
  15. Granularité • Vision d'ensemble • Fonctionnalités • Démarrage • Schéma

    d'architecture • Références fonction par fonction • Interfaces des composants • Exemple complet • Liste des dépendances #bzhdoc
  16. L'essentiel • Présenter d'abord le cas nominal • Ne pas

    se perdre en détails et digressions • Ce n'est pas un roman. #bzhdoc
  17. Mettez tout sur une feuille. Faite ressortir l'essentiel. Écrivez 2

    à 5 lignes pour chaque point que vous aurez retenu. #bzhdoc
  18. Au delà il faut organiser des blocs cohérents en fonction

    de leur taille, et séparer les plus gros. #bzhdoc
  19. Ref : Words To Avoid in Educational Writing • Simply,

    Clearly, Easy, etc. • However, So, Shall, Just, etc. • Source : https://css-tricks.com/words-avoid- educational-writing/ #bzhdoc
  20. Notes annexes • Évitez les hors-sujets, • Toutes les comparaisons

    ne se valent pas, • Préférez une forme neutre à une forme genrée (difficile en Français, facile en Anglais). • Les digressions tuent la compréhension. #bzhdoc
  21. Partez du principe que le lecteur ne sait pas plus

    que le chapitre en cours. #bzhdoc
  22. Au lieu de se répéter, faites des liens entre deux

    parties distinctes mais liées. #bzhdoc
  23. Ouvrez vers l'extérieur : note & référence, norme & standard,

    documentation d'un autre projet. #bzhdoc
  24. Exemples • Norme & Standard de l'IETF • Définition des

    concepts métiers • Article wikipédia sur un algorithme, un concept • Lien vers la doc d'un autre projet • Lien vers le bug tracker, le dashboard, etc.
  25. Bas niveau haut niveau → • Commentaire dans le code

    • Autodoc • Doc d'un projet technique (app/lib) • Interface & API • Manuel d'installation • Manuel Utilisateur #bzhdoc
  26. # Remoev last item if "url" in breadcrumb[-1]: breadcrumb[-1].pop("url", None)

    # Remove URL of the last item if "url" in breadcrumb[-1]: breadcrumb[-1].pop("url", None) # Breadcrumb last's item must not have # a link for SEO reasons. if "url" in breadcrumb[-1]: breadcrumb[-1].pop("url", None) Faute de frappe, commentaire erroné.. Anglais correct, mais impossible de répondre à la question : pourquoi ? Donne l'intention de l'auteur : si un quelqu'un d'autre lit ces lignes, il saura pourquoi elles existent. Commentaire dans le code #bzhdoc
  27. Comment ça marche • Générer à partir du code source

    • Basé sur les « docstrings » et les « annotations » • Implique une bonne couverture en commentaire • Très proche du code, notion « unitaire » #bzhdoc
  28. Générateur d'autodoc • JavaDoc (Java) • PHPDoc (PHP) • Doxygen

    (C, C++, et d'autres) • Sphinx (Python) (via extension + configuration) #bzhdoc
  29. Formater son code def order_total(basket, shipping=None): """Calculate order's total from

    a ``basket`` :param basket: Current basket :param shipping: Selected shipping method :return: Order's total price information :rtype: :class:`orders.OrderTotal` Order's total is calculated from: * The basket's total amount, * Minus the basket's total discount, * If given, the shipping cost (incl. VAT only). .. note:: The order's total excl. VAT does **not** include the shipping cost since it is only an incl. VAT price. The discount value is calculated from the price excl. tax, but its value is remove from the incl. tax only. """ # You don't need to read the code to understand what it does. #bzhdoc
  30. Autodoc • Granularité très fine (niveau unitaire) • Peu ou

    pas de vision d'ensemble • Référence du langage, de la bibliothèque, ou du code interne de l'application • Tendance à masquer les interactions entre les briques • Stabilité dépendante du code lui-même • Mais facile à mettre à jour #bzhdoc
  31. Install & Config • Quickstart rapide • Ne donne que

    les instructions de bases • Donne une liste de dépendance • Ne détaille pas comment installer les dépendances • Propose une config minimale • Liste exhaustive des variables d'ENV/de conf • Indique ce qui est obligatoire et les valeurs par défaut #bzhdoc
  32. #bzhdoc Topic • Un chapitre par domaine de l'application •

    Exemple : – Navigation, – Catalogue, – Recherche – Panier, – Checkout, – Mon Compte.
  33. Topic : sous-niveau • Navigation : – Principes généraux (grille

    de navigation) – Construction des URLs – Fil d’Ariane – Voir aussi : SEO, Catalogue, Recherche #bzhdoc
  34. Topic : sous-niveau • Checkout : – Workflow global du

    checkout – Transporteurs – Adresses – Moyen de paiement – Placement de la commande – Intégration du PSP – Voir aussi : Commande, Remboursement, Retour #bzhdoc
  35. Topic avancé • Comme des topics, mais plus « transverse

    » • Parfois plus technique, lié à la vie du projet • Moins fonctionnel que technique • Exemples : – Traductions, – CRON, – Personnes à contacter, – Outils de tests, etc. #bzhdoc
  36. Dev-Guide • Lister les bonnes pratiques • Aider les nouveaux

    devs à entrer sur le projet • Documenter les outils autour du projet • Partager la même culture technique • Réduit le coût de formation #bzhdoc