I am aware of this post. The following is a slight generalization,
A free chain complex $(A_*, \partial)$ is acyclic iff it has a contracting homotopy.
In that we dont' require $A_n=0$ for $n<0$. Rotman gives a proof as follows.
$\partial_n : A_n \rightarrow A_{n-1}$ has image $B_{n-1}(A_*) = Z_{n-1}(A_*)$. This induces $s_{n-1}:Z_{n-1}(A_*) \rightarrow A_n$ s.t. $\partial_n s_{n-1}=1$ as $A_n$ is free.
Now $1-s_{n-1} \partial_n :A_n \rightarrow A_n$ has image in $Z_n(A_*)$. Define $t_n:A_n \rightarrow A_{n+1}$ as the composite, $$t_n = s_n(1 - s_{n-1} \partial_n) \quad (*)$$ Then $\partial_{n+1}t_n+t_{n-1}\partial_n = 1$.
Induction doesn't really work in this case(?) I would like to hear how one thinks of the formula $(*)$.
I know $s_n, \partial_n$ satisfies the retracting property, but its just not obvious.
I do not think one has to use induction: Note that neither the $s_n$, nor the $t_n$ are defined inductively, and the validity of the homotopy property is checked as thus: Obviously $\partial_{n+1}t_n = 1 - s_{n-1} \partial_n$, and moreover $t_{n-1} \partial_n = s_{n-1} \partial_n$ because $\partial_{n-1} \partial_n = 0$.
An alternative proof may be the following: Given a chain complex $C_.$, we may consider the truncated chain complex as follows: Let $n \in \mathbb Z$ be a whole number, then consider the chain complex $$ c_{n+2} \to C_{n+1} \to C_n \to \operatorname{coker} (\delta_{n+1}) \to 0. $$ This is obviously exact, so we may apply the classical construction to get a chain contraction. But now we can do this for all $n$, and the only thing we have to show is that the definitions coincide to give a chain contraction of the whole complex. (This is probably more complicated than Rotman's proof.)