I came from a C++/C# background and I'm newer to using IPython, but it's absolutely changed how I develop for the better. I definitely feel more productive, but I can't prove it.
That being said, I noticed that adhering to some more discipline while writing the script, like using a real debugger instead of print debugging, writing types for my functions instead of passing around tuples/dicts, and tests probably would've helped even more.
So HN, what processes/methods do you find helpful in your day to day work?
Another way to phrase this is what things have you learned that changed how you work for the better?
Unit tests are that are fast, a dev environment with your running service that can be edited/updated quickly, acceptance tests that run automatically before merging to master, structured logging and log analysis tooling like splunk, and metrics emitted/collected. I need to be able to update a line of code and get feedback on that update in a few seconds (or faster, thank you IDE). Add onto that a great deploy story (solid ci/cd), alerts, historic metrics to compare to, etc. These are things that are mostly independent of the language you are in, and the tooling for the language is super important too. Self documenting method signatures in the form of static typing is huge for me. I can't stand when I find myself in python or perl and don't know what the incoming variable is - I'm stuck putting some logging or a break point to see what kinds of data are coming into that function.
I have that as my desktop background. Let's say, you do something 30 mins/day, every day. If it takes a week to automate that, do it. Applies to home processes as well.
3) IDE keyboard shortcuts. The big ones are select scope, jump to definition/uses, search all files, rename variable, extract as variable/method, jump to the opening/closing brace, move lines, show docs, reformat code, move to the next tab. This is the main reason I subscribe for Jetbrains.