Anyone who works with technology knows intuitively that as more features are
added to a system, its complexity increases rather fast and often in
unpredictable ways. Given that the more complex a system is, the more susceptible it is to incorrect or
suboptimal functioning due to an improper interaction of its features, one is
lead to wonder: how fast does the complexity of a system actually grow with
the addition of new features?

Even if an exact quantification of the complexity of a given system could
be properly defined, its computation would certainly require us to understand
the system in its entirety, which is not exactly what we are aiming at here.
Consider instead this simple question: for a system having $n$ features, how many
pairwise feature interactions are possible?

The question may sound too abstract, so let us motivate it first.
For that, consider a car. If one steps on the gas pedal while the parking brake
is activated, the car may even move, but slower than if the parking brake would
be released. The car may even get physically damaged as a result of operating
in this mode for too long. This means two features of the system (the gas pedal and the parking
brake) lead to a suboptimal functioning of the car when in the
state "gas pedal pressed down" with "parking brake activated".

The example just given illustrates just one of the many possible
interactions which can happen between the features of a car. A car is a
complex system, and understanding how its features interact is necessary for
its proper operation. If a car has $n$ features in total, the number of pairwise
feature interactions $N^{(2)}$ is the total number of
possible combinations of
two from the $n$ features:
$$
\displaystyle N^{(2)} = \left(\matrix{n \\ 2}\right) = \frac{n!}{2!(n-2)!} = \frac{n(n-1)}{2} =
\frac{1}{2}(n^2 - n)
$$
This result is already alarming: the number of pairwise feature interactions
grows quadratically with the number of features. The natural question
which follows is: what is the number of possible interactions $N^{(3)}$
involving three features? The answer is the total number of
possible combinations of three from the $n$ features:
$$
\displaystyle N^{(3)} = \left(\matrix{n \\ 3}\right) = \frac{n!}{3!(n-3)!} = \frac{n(n-1)(n-2)}{6} =
\frac{1}{6}(n^3 -3n^2 + 2n)
$$
Things are now even worse: the complexity of our system grows cubically
with the number of features. Let us then go ahead and compute the total number
$N$ of possible interactions over any possible subset of features of
the system:
$$
\begin{eqnarray}
N &=& N^{(2)} + N^{(3)} + \ldots + N^{(n)} \nonumber\\[5pt]
&=& \displaystyle \left(\matrix{n \\ 2}\right) + \left(\matrix{n \\ 3}\right) + \ldots + \left(\matrix{n \\ n}\right) \nonumber\\[5pt]
&=& \sum_{k=0}^n \left(\matrix{n \\ k}\right) - \left(\matrix{n \\ 1}\right) - \left(\matrix{n \\ 0}\right)
\label{post_bd2985d293fcd5959b3b4f4f36d3965a_eq_deriv_N}
\end{eqnarray}
$$
We can now use the binomial theorem
to compute the sum on the last line of the equation above:
$$
\displaystyle (x + y)^n = \sum_{k=0}^n \left(\matrix{n \\ k}\right)x^{n-k}y^k
$$
Taking $x = y = 1$, we have then that:
$$
\displaystyle (1 + 1)^n = 2^n = \sum_{k=0}^n \left(\matrix{n \\ k}\right)
\label{post_bd2985d293fcd5959b3b4f4f36d3965a_eq_binom_theorem}
$$
The right-hand side of equation \eqref{post_bd2985d293fcd5959b3b4f4f36d3965a_eq_binom_theorem} is exactly
the sum which appears on the last line of equation \eqref{post_bd2985d293fcd5959b3b4f4f36d3965a_eq_deriv_N}.
Therefore:
$$
\boxed{N = 2^n - n - 1}
$$
As $n$ grows, the value of $N$ quickly becomes dominated by the term $2^n$,
i.e., the number of possible feature interactions grows exponentially
with the number of features.

Although simplistic, the analysis above has dramatic consequences to the
development and testing of new technologies. As more features are added to a system, the
number of possible interactions between its features grows so fast that it becomes
quickly impossible for the human mind to fully comprehend the system as a whole. Testing
its usage under all possible scenarios may become not just difficult, but impractical. As
a result, unforeseen problems may end up appearing in the production version
of the system — some of which may be really embarrassing for those who
designed them.