
Ask HN: What processes/methods do you find helpful in your day to day work? - vishaalk
I searched but couldn&#x27;t find something similar. I was debugging an issue today and had to write a short script to get the list of affected entities.<p>I came from a C++&#x2F;C# background and I&#x27;m newer to using IPython, but it&#x27;s absolutely changed how I develop for the better. I definitely feel more productive, but I can&#x27;t prove it.<p>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&#x2F;dicts, and tests probably would&#x27;ve helped even more.<p>So HN, what processes&#x2F;methods do you find helpful in your day to day work?<p>Another way to phrase this is what things have you learned that changed how you work for the better?
======
sethammons
It is all about feedback cycle. You want a fast process to tell you if $thing
worked.

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.

------
muzani
1) Declarative programming was a big thing for me. Imagine code like a real
world tree, with roots, trunk, branches, leaves. Your trunk and branches
should be declarative, the leaves and roots should be imperative. Most of the
code you read and write should tell you what is is doing rather than how it is
being done. You don't have to pick up functional programming; you just have to
use functions for most of your code.

2) [https://xkcd.com/1205/](https://xkcd.com/1205/)

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.

