In ecology, r/K selection theory relates to the tradeoff organisms make between quantity and quality of offspring. Some organisms choose K-selection, i.e., to have few offspring but offer them substantial parental investment (e.g., humans, whales, elephants). Others choose r-selection, having many offspring with low probabilities of reaching adulthood (dandelions, rodents, bacteria).

A simplified model of population dynamics where N is the population, r is the maximum growth rate, K is the carrying capacity of the local environment, and dN/dt is the rate of change in population with time. 

By analogy, startups exhibit similar trade-offs. Some markets are nascent and rapidly changing. Others are crowded and competitive.

r-selection focus on growth rates ("r"). They thrive in uncertain environments, where the constraints are rapidly changing. The minimal viable product was an example of r-strategy. They are typically first-to-market because of their ecological opportunism. Yet, first-to-market is an overrated advantage. But r-strategy works even better in software, where there are nearly zero marginal costs (distribution costs are another thing). Paul Graham told the Airbnb team early on,

Wow, you guys are like cockroaches… You just won’t die.

K-selection works best in crowded and competitive environments. Best-of-breed SaaS startups follow this path: beating others out by sheer force of product, distribution, or other advantage. These are the Snowflake startups – long incubation times (Snowflake spent 2 years in stealth before launching) and high investment.

When cloud platforms launch minimal managed services, is that an r-strategy? Launch as many possible and hope that some find traction. The trouble is that r-selection does not work for enterprise software at scale. Failed products have high costs – you must either support them forever (AWS) or suffer brand damage (Google).

Simplicity over completeness might be an example of r-selection in program design. Library code (or API-first startups) might choose to optimize for composability (integrating and sharing code are two sides of the same coin).