I've used it as a way to document data exploration for later use and as an interactive teaching tool. For that, being able to plot inline and embed interactive widgets is great. Also, mixing in rendered markdown content.
If you're using Jupyter to write python software and the software is the end result and not the data analysis/process, I think you might be doing it wrong.
Not that I'm discounting data scientists (or the like) who use it as their primary environment. Their end result is not a packaged/deployed software and the code itself is just ancillary. For those users, the code and environment is a tool, and the extra weight of what a full IDE (like VSCode or PyCharm) and the features they bring to the table are unnecessary and likely counter-productive.
Unfortunately it often ends up needing to be executed as a batch job or integrated into a pipeline, which then starts the fun job of extracting the code from the notebook piece by piece.
Jupyter having a plain text file format instead of json would make life so much easier, and vastly improve version control.
https://netflixtechblog.com/notebook-innovation-591ee3221233
https://netflixtechblog.com/scheduling-notebooks-348e6c14cfd...
We also publish AppBooks, which are automatically parametrized notebooks. However, we automatically detect and track experiments, and then we deploy models in the form of an endpoint to be invoked by consumers, with a convenience page for humans to invoke the code by sending JSON data, or uploading a CSV file.
2. Following from 1, notebooks are meant to be shared with output in place, so others can understand without executing code.
>2. Following from 1, notebooks are meant to be shared with output in place, so others can understand without executing code.
We wanted to let others execute the code without being overwhelmed by the code, but we also wanted our colleagues not to write an application or parametrize the notebook by adding metadata or tagging cells, so we added a feature named AppBooks[0]. We automatically detect parameters you want to expose, build a form on top of your notebook, and then serve a clean page.
The user gets a page with a form with fields corresponding to your parameters, they just change the values and hit Run. The notebook runs with the new parameters and the client/stakeholder gets the result.
This solves the problem of: "I have a notebook, how do I not only show my work, but allow domain experts to tinker and run this with specific values". Especially useful when the parameters are pretty domain specific (like instrumentation for nuclear power plants where the client wants to try the model on edge values).
These runs are tracked in case you want to share a training AppBook where it produces a better model, for example.
In terms of a flat file formats, there is actually a mark down extension which I would say is better than vscode's format because it is more standardised:
was doing this in emacs before there was a jupyter notebook..
as the name implies, notebooks aren't for development, they are for interactive, shareable presentation, and presentation that also works over HTTP without needing local tooling
VSCode's version is nice for sure, but not nearly as nice as being able to go back and read/modify old cells.