C'est vrai que le coup d'utiliser des « bouchons », ça aide pas mal à avoir un truc qui tourne un peu, et ça, c'est tout de même bien agréable
Sinon, pour des gros projets, c'est souvent bien plus profitable d'avoir un code propre bien découpé en sous-fonctions que d'avoir un code super optimisé (à part éventuellement pour les quelques routines critiques).
Quand je me suis lancé dans des « gros » projets (quelques dizaines de milliers de lignes de code), j'ai toujours essayé de faire pas mal de fichiers sources (chacun regroupant les fonctions sur un même thème), éventuellement eux-même regroupés dans des dossiers. Et après avoir fait ce découpage, j'écris les définitions des premières fonctions avec leurs entrées et leurs sorties.
(évidemment, avant tout, je réfléchis longuement à ce que je veux obtenir et à la structure générale du code, en notant tout ce que je veux faire)