Project Management

Updated: 2020-06-29


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.

Team Working Agreement

  • 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

    • Java vs Scala vs Python vs Ruby vs Javascript ...
  • Naming Conventions

    • camelCase? PascalCase? Underscore? Dash?
  • Coding Conventions

  • choice of unit test framework

    • TestNG vs JUnit
  • code review or not
  • choice of CI

    • public travis vs in-house Jenkins