3 ms·
When learning, extending, or fixing software, I generally work by building an understanding of software's principles, implementation, and runtime behavior, so I
by nyanpasu64 5y ago
When learning, extending, or fixing software, I generally work by building an understanding of software's principles, implementation, and runtime behavior, so I can reason about the current state and the effects of potential changes. Though sometimes I tweak code to see the effects and better understand the problem (shh we don't talk about tweaking things until they "work on my machine" and we're done).
Understanding runtime behavior is easier in software with high debuggability and transparency (which is orthogonal or even opposed to performance, since logging slows programs down and optimizations impede debugging). Bryan Cantrill's "Platform as a Reflection of Values" talk (https://vimeo.com/230142234 https://vimeo.com/230142234) has a list of software values.
I think "observability" is another good word for what I want, but it tends to be thrown around in cloud-scale software rather than the human-scale software I prefer. Perhaps "empathy" is a workable word for developing an intuition (and less so for building a mental model).
- specialist 5y agoMaintaining someone else's code, I'm equal parts mind reader, software archeologist, detective (forensics), and grumpy old man. When I've had to maintain ML stuff, I spent most of my time wrestling with the tools and chaotic mutant one-off instances of "data pipelines", contorting myself into the mindset of the creators. So, ya, "empathy" works for me. FWIW, I found the tools like PyTorch, Spark, and such to be laughable bad. I pity the people who have to do this work on the daily. Jupyter is cool though.