Agile means many things to many people. Normally it refers to short-iteration, low documentation, daily standup.
This doc explains why it does not work for companies like Google.
- agile is well suited: software with a simple core and lots of customer visible features that are incrementally useful.
- anti-scrum: projects like Bigtable and Borg, they require long term thinking, as foundation for a fundamental shift. Some software not suitable to give to end user when partially finished.
software development paradigm
- waterfall vs agile
choice of source control
- Git? SVN?
- GitHub? BitBucket?
- Private vs Public
- pull request or not
- single master branch or multiple feature branches
- merge vs rebase
top-level file structure
- Components in separate repositories or as modules in one repository
- Follow Maven convention?
- Parent pom? Builder pom?
- Maven modules or Git modules?
choice of language and ecosystem
- camelCase? PascalCase? Underscore? Dash?
choice of unit test framework
- TestNG vs JUnit
- code review or not
choice of CI
- public travis vs in-house Jenkins