My controversial take on Jupyter

It has become common for Python courses to use Jupyter for their coding exercises …

But they have a big problem.

Let’s back up. What are large notebooks for?

A couple things. But mainly, a laptop is an interface. It is a way of driving or controlling the software, not clicking buttons or typing in text boxes. But writing sets of Python statements.

And he’s great at this. Magnificent.

You write code that imports Pandas or Keras or PyTorch or Matplotlib or whatever …

Then use these libraries to get what you need. Split your code into different cells, rely on its built-in visualization tools, etc.

Excellent for fields like data science, where an exploration phase is rarely optional. Once you have become Jupyter, you will not be able to live without it.

It also turns out: Jupyter rawks for people learning to code.

The immediate feedback of what works, what doesn’t … The elegant interface … The ease of visualization … The design of different cells …

For someone who is learning hello world, and way beyond that, it’s great.


The notebook interface puts a real limit to the complexity of what you can create. Would you develop a library like Pandas or Tensorflow in a notebook?

Of course not. The fact is, the most important software is developed OUTSIDE of a laptop. In regular programs, they are in version control and have extensive unit tests.

Once upon a time, there was no DataFrame. Someone MADE IT UP.

And although it was not first invented in Python, the creators of Pandas eventually created a Python class called “DataFrame”. That you can import into a cell on your laptop and that you can use to do remarkable things.

And the crucial part:

That DataFrame class, and in fact all Pandas, were NOT created inside a notebook. It was created using standard software development practices outside of the laptop environment. And now millions of people use it around the world.

THAT is the kind of software I want you to write. EXCELLENT in writing. Be prolific and powerful when writing.

Because it’s those “building blocks” that your junior programmers will import into your Jupyter notebooks. Building on what you wrote, and maybe doing great things with it …

But never being able to create those foundations themselves.

Is this elitist? Talk about being in a different league than other “lessor” developers? Have this greater ambition for your career, for your life?

If it is … so be it. Because learning the skills of the top 1% Python developers is a goal worth reaching.