There's a third camp between these extremes who is like "goddamn it just type this shit out for me so I don't have to do it myself".
Code should grow according to need, not for its own sake. Start small, use it in the real world, and then improve it.
The majority of a project code are written at the beginning or when a major feature is introduced. The daily work is mostly tweaking. And you can’t tweak without a good understanding of the module.