My Controversial Opinion On Jupyter

My Controversial Opinion On Jupyter

It's become common for Python courses to use Jupyter for their coding exercises...

But my courses will probably never use them.

Let's back up. What are notebooks great for?

A couple of things. But primarily, a notebook is an interface. It's a way to drive or control software - not by clicking buttons, or typing into text boxes. But by writing sets of Python statements.

And it's GREAT at this. Magnificent.

You write code that imports Pandas or Tensorflow or PyTorch or Matplotlib or whatever...

Then you use these libs to get what you need. Breaking your code into different cells, relying on its built-in visualization tools, and so on.

Great for fields like data science, where an exploration phase is rarely optional. Once you've gone Jupyter, you can't live without 'er.

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

The immediate feedback of what works, what doesn't... The slick interface... The ease of visualization... The layout of different cells...

For someone learning hello world - and a good way past that - it's great.

But:

The notebook interface puts a real ceiling of complexity on what you can create. Would you develop a library like Pandas or Tensorflow itself in a notebook?

Of course not. The fact is, most important software is developed OUTSIDE of a notebook. In regular programs, that are in version control, and have thorough unit tests.

THAT is the kind of software I want you to write. To EXCEL at writing. To be prolific and powerful at writing.

Because it's those "building blocks" that lessor programmers than yourself will be importing into their Jupyter notebooks. Building on what you wrote, and maybe doing great things with it...

But never being able to create those foundations on their own.

Is this elitist? To speak about you being in a different league from other, "lessor" developers? To have this higher ambition for your career, for your life?

If it is... so be it. Because that's why we're here.