Jupyter Notebook and JupyterLab
We often use Jupyter Notebooks in several of my courses together with JupyterLab being the current user interface of choice. In my view this interactive development environment maps the workflow of developing ideas and software for data analysis best. I especially appreciate the mixture of code cells and formatted text cells, the latter using Markdown (a lightweight markup language) and MathJax (special markup language for pretty math printing) for producing well formatted text including mathematical expressions.
This environment allows me to develop, describe and implement ideas to solve certain problems in a highly dynamic manner. Starting with an assumption on how a particular problem can be solved, I implement it (usually in Python) and test.
Fig.: JupyterLab interactive graphical user interface for Python, Julia, and R programming languages.
Source: The official JupyterLab Documentation