# Setup develop environments
## Git
### Git commit messages
* [How to Write a Git Commit Message](https://cbea.ms/git-commit/)
### Git Flow
* https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
### Git commands
* https://learngitbranching.js.org/
* http://onlywei.github.io/explain-git-with-d3/
### Git hooks
* https://www.atlassian.com/git/tutorials/git-hooks
* Examples:
* https://github.com/sysprog21/lab0-c/blob/master/scripts/pre-commit.hook
* https://github.com/commaai/openpilot/blob/master/.pre-commit-config.yaml
## Coding Style
* Find a auto formatter
* clang-format
* python-black
* eslint
* ...
* Enforced it by git hook or editor (save and format)
## Kanban & Scrum
* https://www.atlassian.com/agile/kanban
* https://www.atlassian.com/agile
## The Computer Scientist as Toolsmith
By Fred Brooks: https://www.cs.unc.edu/~brooks/Toolsmith-CACM.pdf
Two of our criteria for success in a tool are:
* It must be so easy to use that a full professor can
use it, and
* It must be so productive that full professors will use it.