1. variables have to be explicitly output
The most important tool for programming, for me, is that window that shows you the current state of all the variables. When I step through a program, I look at the state. 90% of my debugging solutions come from seeing that variable doesn't have the right state.
2. Intellisense
For the love of god, I do not want to remember if it is len(), length(), .len(), .length(), .size(), size(1) or whatever.
That's it. But those two are so big that I have to code and debug in Spyder and then paste the code into notebook. I feel sorry for people who are new who think that all the debugging is happening in the notebook.