Most Important code isn't the code?

Most Important code isn't the code

Let's say it's pretty obvious unless you're a total noob, you don't directly open the IDEs and start typing the Jargon and call it soluting ... 

Documentation

  • Way to communicate with users, admin and developers
  • Gives an overview of the system
  • Helps to Plan a solution
  • Helps in Maintenance
  • Reduce technical debt
    • dumping of code without context in fast pace deadlines
    • reduce code smell: buggy features | commented code snippets | dead code | wrong docs

How to Doc?

  • Commenting | Docs generators: Java Docs
  • Readable Code
  • Test as documentation
  • Project Wiki | ReadMe | Github Pages

Documents for Developers

  • Understand: Process | Tools | Workflows
  • Guideline: CodeStyle | Quality Assurance | Issue Reporting | Testing

Document Driven Development

  • Development Strategy: Focused on Documentation
  • Documentation: Wikis | Readme
  • Types: Project descriptor | Module descriptor

Problem it solves

  • Solution is pre-analyzed
  • Better Design for TDD | BDD
  • Roadmap for your project
  • Readability increases
  • Everyone knows what happens in code!

ReadMe!

  • The readme should be as good as the project, the face of your project
  • Brief and Basic increases engagement with the project
  • Documentation is Personal but professional
  • Earns you a star!

Helpful README checklist

[ ] One-liner explaining of module [ ] Necessary background , context & links [ ] Clear, runnable examples [ ] Installation instructions [ ] Extensive API documentation [ ] Caveats and limitations & Critical info [ ] The Authors

[ ] License

Project Descriptor Template

Project title

A little info about your project and/ or overview that explains what the project is about.
https://github.com/tommybuonomo/dotsindicator
https://github.com/square/picasso

Motivation/Introduction

A short description of the motivation behind the creation and maintenance of the project. This should explain why the project exists.
https://github.com/iterative/dvc#readme

Build status

Build status of continuous integration i.e. Travis, Appveyor etc
https://github.com/developer-shivam/crescento#crescento

Table of content

https://github.com/JStumpp/awesome-android#custom-dialog

Code style

If you're using any code style like xo, standard etc. That will help others while contributing to your project.
https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md

Screenshots

Include logo/demo screenshot etc.
https://github.com/tommybuonomo/dotsindicator#material-view-pager-dots-indicator

Features

What makes your project stand out?
https://github.com/ArmynC/ArminC-AutoExec/#features

Code Example

Show what the library does as concisely as possible, developers should be able to figure out how your project solves their problem by looking at the code example. Make sure the API you are showing off is obvious, and that your code is short and concise.
https://github.com/TakuSemba/Spotlight

Installation

Provide step by step series of examples and explanations about how to get a development env running.
https://github.com/gitpoint/git-point#build-process

API Reference

Depending on the size of the project, if it is small and simple enough the reference docs can be added to the README. For medium size to larger projects it is important to at least provide a link to where the API reference docs live.
https://github.com/sindresorhus/pageres#api

Tests

Describe and show how to run the tests with code examples.
https://github.com/ravidsrk/android-testing-guide#local-tests

How to use?

If people like your project they’ll want to learn how they can use it. To do so include step by step guide to use your project.
https://github.com/algolia/voice-overlay-android#installation

Release History

change logs with versions or tags.
https://github.com/tommybuonomo/dotsindicator#changelog

Contribute

Let people know how they can contribute into your project. A contributing guideline will be a big plus. Example links:
https://github.com/zulip/zulip-electron/blob/master/CONTRIBUTING.md

Credits

Give proper credits. This could be a link to any repo which inspired you to build this project, any blogposts or links to people who contributed in this project.
https://github.com/gitpoint/git-point#backers-

License

A short snippet describing the license (MIT, Apache etc)
https://github.com/TakuSemba/Spotlight
How to choose a open https://choosealicense.com/ https://gist.github.com/nicolasdao/a7adda51f2f185e8d2700e1573d8a63

Module descriptor Template

  • Read-me per module | Feature
  • Explains various flows using DFDs or UML diagrams
  • Functions in that module : purpose | arguments | returns | dependencies | mutations
  • List of 3rd Party Libraries
  • Widgets/UI components/API used
  • Error messages | Exceptions handled
  • Caveats | limitations | Hacks

Tools:

Automated Docs generation https://docsify.now.sh/ https://www.npmjs.com/package/gh-pages

Further Readings:

https://www.makeareadme.com/
https://www.freecodecamp.org/news/what-i-learned-from-an-old-github-project-that-won-3-000-stars-in-a-week-628349a5ee14/
https://tknilsson.com/2018/10/19/android-friday-things-i-want-to-see-in-the-readme-file/
https://github.com/matiassingers/awesome-readme
https://m.dotdev.co/how-to-write-a-readme-that-rocks-bc29f279611a

Comments