What’s the bare minimum you should be doing? Tick all these boxes and you are on you way to being an effective team. If you’re missing any - you probably aren’t.
Continuous Integration (CI)
- Changes are merged back to the main branch as often as possible
- Changes are validated by doing a build and running tests
Continuous Deployment (CD)
- Code is deployed to automatically
- You have an automated release process
- You can deploy at any time
- You have metrics that measure your code coverage/unit test quality
- They are run against the code automatically
- You can’t merge unless the tests pass
- You have a working code review process
- You can’t merge without code being reviewed (properly reviewed!)
- You can debug and test either the whole or parts of the system locally
- “Our system is too complicated to run on a developer’s machine” - is not an acceptable statement
There’s plenty of other stuff you can and should be doing, but for me the above is the bare minimum you can get away with.