3 ms·
Out of my experience, #2 is often superior over #1 though. For some limited well understood context, well defined application, well defined task which will not
by albertzeyer 5y ago
Out of my experience, #2 is often superior over #1 though.
For some limited well understood context, well defined application, well defined task which will not be extended later and only lots of variations are needed, then yes, #1 is probably better. It's nice to have options like enable_fancy_feature=True.
However, in practice, you often have none of these. The context is often not well defined. It's often not yet well understood. The application is not well defined, neither the specific tasks. The scope and tasks will likely be extended during the development.
In that case, it can often turn out that you made the wrong abstractions, wrong options in case of #1. The software itself becomes more and more complex and becomes very hard to maintain, and new things which should be simple are now difficult to do because of too much interdependencies.
Now, an elegant minimal system, or collections of small building blocks or tools, will turn out to be much more effective in solving some new task later on.