Current theory on why nbdev
and notebooks in general make sense and can work:
Writing code for most software is actually pretty similar to writing code for models, but usually you pay less of a cost for not knowing what you’re doing yet (aka exploring).
You still pay some cost, but it isn’t totally deal-breaking in most software settings, unlike if you needed to run the entire data load and clean job as you’re training a model.
For the latter, a full re-run would slow down the feedback loop too much to still move quickly.
Notebooks reduce the feedback loop to about as low as imaginable while also allowing you to experiment while still not totally knowing where you’re going yet.
Because you can still go forward(ish), you can sketch in the general direction of where you want to go without as many of the constraints of abstraction, structure, or slow parts of your workflow, which can easily be memoized by the notebook.
Monitoring the token leaderboard on https://openrouter.ai/ is an interesting way to discover new emerging projects.