Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save monkut/4577ae4e392ba7c52467e54bd15dfa58 to your computer and use it in GitHub Desktop.
Save monkut/4577ae4e392ba7c52467e54bd15dfa58 to your computer and use it in GitHub Desktop.
Tool Creation Guidelines for High Performance Teams
The objective of these guidelines are to clearly identify what is desired of a tool for use in fast moving teams with clear objectives.
- Minimize necessary user actions/input
- Minimize the Tool purpose
--> if a tools has multiple functions consider breaking them into smaller tools.
- Avoid a GUI when possible
--> Good GUI design is hard and creation process is time-consuming, as there is no clear "right" answer.
--> If a GUI is necessary, create a 'core' component with clear intefaces so that the GUI can be easily added, but still not necessary.
- Tools should be scriptable regardless of the language it was written in.
--> A command line interface is sufficient.
- Tools should run on linux.
- Tools may run on windows
- Tools should have a built-in help, explaining basic operation
- Tools should have a README, explaining all user-facing features
- Tools may have detailed documentation with location clearly stated in the README (... but if needed, your tool is probably too complicated already)
- Tools should output to common formats:
- SQL DATABASE (Postgresql, etc)
- CSV
- GEOJSON
- Tools should avoid misdirection [via extended referencing or deeply defined, hard to find functions ] (this is the stuff of magic, and only leads to confusion)
- Tools should have testcases! (include small sample set data with the tool project)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment