diving code between models/data-pipelines and experiments. Notebook are used for visualization and telling a story why you tried what for the other team-members.
putting models (in a sense of more complicated models, not just a SVM), data-pipelines, shared visualization-code in a src folders and experimenting in the notebook divides stuff that's interactive by nature from "real" coding. I don't context-switch that much to be honest.
I don't really copy code into cells, because I only experiment there.
Also, what happens if you need to share code between notebooks?
I think notebooks should be simple and explain the experiments and the reasoning behind them to your coworkers. Otherise it's hard to coordinate and learn from each others insights into the data.