#business #product
# [[Epistemic status]]
#shower-thought
# Software. Small incremental step vs large release
#to-digest
>You release software as a series of **incremental changes instead of an occasional big explosion**. A typical desktop software company might do one or two releases a year. At Viaweb we often did three to five releases aday. When you switch to this new model, you realize how much software development is affected by the way it is released. Many of the nastiest problems you see in the desktop software business are due to the catastrophic nature of releases.
>~ [[Paul Graham]]
## Small incremental steps
- [[Mediocristan]]
- Predictable
- Easier testing
- Easier to review
- More agile friendly
## Large release
- [[Extremistan]] (very complex new interactions which emerge into unpredictable events)
- Unforeseen events
- Fixing a bug introduce thousandsof new ones
- Hard to review
- Hard to release, productionize
## How to avoid large release
- Don't be too ambitious
- DDOS / kill the programmer once he implemented the basic feature (or put him in jail), so that he keep his urge to build the future
- Calm down the non-programmers teammates
- Seriously stop coding after one feature is implemented, then ensure it works (automatic, and/or manual testing), then release, then next feature
- Implement a vscode extension that block vscode once the feature works
- Program an [[Artificial intelligence|AI]] that takes your job
## Timing
>We found that you don’t have to watch the servers every minute (after the first year or so), but you definitely want to keep an eye on things you’ve changed recently. You don’t release code late at night and then go home.
>~ [[Paul Graham]]
# External links