| Use Case | Challenge | Solution and resources | Additional Resources |
|---|---|---|---|
| Reproducible Software | Switching between projects is hard | ||
| You can't get your code to work again/can't reproduce your work. |
|
||
| Your code errors when somebody else runs it | |||
| Other users don't know how to run your program | |||
| Reusable Software | Updating your code unintentionally breaks features that other people depend on |
|
|
| When several developers work on the same codebase, it's easy to accidentally overwrite someone else's changes |
|
||
| It can be difficult for other developers to read, understand, and modify your codebase |
|
||
| Your end-users struggle to install your reusable code | |||
| Production Software | How to consistently produce a reliable release when needed |
|