I recently left my job to try to bootstrap something on my own (http://appsflyer.com).
Originally I am a .net developer with extensive experience with server-side technologies but I decided to make a transition and move to Python since I felt that the innovation happens on the Python/Ruby side. Besides, I always want to remove the shackles of static languages and I felt the the .net community follows the java community and embraces over-engineering.
It takes time to develop working habits, but for now here is how I work:
I usually use ipython first of all for prototyping. It is awesome to have something like that for a C# developer who used only to a compiler and a debugger.
After I got my results, I use the %hist -n command to get the command history, copy it and paste it to the text editor (PyCharm) for proper formatting.
Since Python does not require the boilerplate of C# to create an entry point, it makes sense to start with a script and then refactor it to classes and methods.
One of my favorite features of ipython is the embedding feature of ipython that lets you run a script and then work on the results in the interactive shell. Same goes for the %run command.
Improving my working habits and being more effective is a subject that really interests me and I would be happy to hear about more techniques for self improvement.