[proofplan]
We prove both directions by translating between finite generating sets and maps out of finite free modules. Given generators $m_1,\ldots,m_k$, define the unique $R$-[linear map](/page/Linear%20Map) from $R^k$ sending the standard basis vector $e_i$ to $m_i$, and use the generating property to prove surjectivity. Conversely, a surjection $\pi: R^k \to M$ sends the standard basis of $R^k$ to a finite generating set of $M$. The case $k=0$ is handled by the convention that $R^0$ is the zero module and that the zero module is generated by the empty set.
[/proofplan]
[step:Construct a surjection from a finite generating set]
Assume that $M$ is finitely generated. Choose a finite generating set $m_1,\ldots,m_k \in M$, where $k \geq 0$.
If $k=0$, then the empty set generates $M$, so $M=0$. Let
\begin{align*}
\pi: R^0 \to M
\end{align*}
be the unique $R$-[module homomorphism](/page/Module%20Homomorphism) from the zero module to $M$. Since $M=0$, this map is surjective.
Assume now that $k \geq 1$. For each $i \in \{1,\ldots,k\}$, let $e_i \in R^k$ denote the standard basis vector whose $i$-th component is $1_R$ and whose other components are $0_R$. Define
\begin{align*}
\pi: R^k \to M,\qquad \pi((r_1,\ldots,r_k))=\sum_{i=1}^{k} r_i m_i.
\end{align*}
This is an $R$-module homomorphism: for $(r_1,\ldots,r_k),(s_1,\ldots,s_k)\in R^k$ and $a\in R$,
\begin{align*}
\pi((r_1,\ldots,r_k)+(s_1,\ldots,s_k))=\sum_{i=1}^{k}(r_i+s_i)m_i=\sum_{i=1}^{k}r_i m_i+\sum_{i=1}^{k}s_i m_i=\pi((r_1,\ldots,r_k))+\pi((s_1,\ldots,s_k)).
\end{align*}
Also,
\begin{align*}
\pi(a(r_1,\ldots,r_k))=\sum_{i=1}^{k}(ar_i)m_i=a\sum_{i=1}^{k}r_i m_i=a\,\pi((r_1,\ldots,r_k)).
\end{align*}
Since $m_1,\ldots,m_k$ generate $M$, every $m\in M$ has the form
\begin{align*}
m=\sum_{i=1}^{k} r_i m_i
\end{align*}
for some $r_1,\ldots,r_k\in R$. Thus $m=\pi((r_1,\ldots,r_k))$, so $\pi$ is surjective.
[/step]
[step:Recover generators from a finite free surjection]
Conversely, suppose there exist an integer $k\geq 0$ and a surjective $R$-module homomorphism
\begin{align*}
\pi: R^k \to M.
\end{align*}
If $k=0$, then $R^0=0$, and surjectivity of $\pi$ implies $M=0$. Hence $M$ is generated by the empty set, so $M$ is finitely generated.
Assume now that $k\geq 1$. For each $i\in\{1,\ldots,k\}$, let $e_i\in R^k$ denote the standard basis vector whose $i$-th component is $1_R$ and whose other components are $0_R$. We claim that the finite set
\begin{align*}
\pi(e_1),\ldots,\pi(e_k)
\end{align*}
generates $M$ as a left $R$-module.
Let $m\in M$. Since $\pi$ is surjective, there exists $(r_1,\ldots,r_k)\in R^k$ such that
\begin{align*}
\pi((r_1,\ldots,r_k))=m.
\end{align*}
In the free module $R^k$, we have
\begin{align*}
(r_1,\ldots,r_k)=\sum_{i=1}^{k} r_i e_i.
\end{align*}
Using $R$-linearity of $\pi$, we obtain
\begin{align*}
m=\pi\left(\sum_{i=1}^{k} r_i e_i\right)=\sum_{i=1}^{k} r_i\pi(e_i).
\end{align*}
Thus every element of $M$ is an $R$-linear combination of $\pi(e_1),\ldots,\pi(e_k)$, so $M$ is finitely generated.
[guided]
We start with a surjective $R$-module homomorphism
\begin{align*}
\pi: R^k \to M.
\end{align*}
The goal is to extract a finite list of elements of $M$ that generates all of $M$. The natural finite list is obtained by applying $\pi$ to the standard basis vectors of the free module $R^k$.
First handle the degenerate case. If $k=0$, then $R^0$ is the zero module. Since $\pi:0\to M$ is surjective, every element of $M$ lies in the image of the zero module. The image contains only $0_M$, so $M=0$. The zero module is generated by the empty set, hence $M$ is finitely generated.
Now assume $k\geq 1$. For each $i\in\{1,\ldots,k\}$, let $e_i\in R^k$ be the standard basis vector whose $i$-th component is $1_R$ and whose other components are $0_R$. We will show that
\begin{align*}
\pi(e_1),\ldots,\pi(e_k)
\end{align*}
generate $M$.
Take an arbitrary element $m\in M$. Because $\pi$ is surjective, there exists a vector $(r_1,\ldots,r_k)\in R^k$ such that
\begin{align*}
\pi((r_1,\ldots,r_k))=m.
\end{align*}
The defining property of the standard basis of the free left $R$-module $R^k$ gives the expansion
\begin{align*}
(r_1,\ldots,r_k)=\sum_{i=1}^{k} r_i e_i.
\end{align*}
Now apply the $R$-linearity of $\pi$ to this finite sum:
\begin{align*}
m=\pi((r_1,\ldots,r_k))=\pi\left(\sum_{i=1}^{k} r_i e_i\right)=\sum_{i=1}^{k} r_i\pi(e_i).
\end{align*}
This expresses the arbitrary element $m$ as an $R$-linear combination of the finite list $\pi(e_1),\ldots,\pi(e_k)$. Therefore that list generates $M$, and $M$ is finitely generated.
[/guided]
[/step]
[step:Combine the two implications]
The first step shows that every finitely generated left $R$-module admits a surjective homomorphism from some finite free module $R^k$. The second step shows that the existence of such a surjective homomorphism forces $M$ to be generated by the finite set given by the images of the standard basis vectors, with the case $k=0$ giving the zero module. Hence $M$ is finitely generated if and only if there exist an integer $k\geq 0$ and a surjective $R$-module homomorphism $\pi:R^k\to M$.
[/step]