Ivan Reese
Ivan Reese
Is the program producing valid output?
Are my tests passing at this very moment?These might be noisy and distracting if you're passing through a space of invalid/incomplete programs on your way to the next valid/complete program. Personally, I find the "the feedback might be distracting" line of thinking to be rote and tired. Let's instead look for benefits of not having feedback, rather than costs of having it, or at least look for "the feedback might not be helpful when you really consider what the feedback is actually telling you"
Ivan Reese
Is the code I'm writing similar to other code that's already been written?Compare with: whether the problem this code is meant to solve has been solved. There are many cases where the code I'm writing is substantially similar to other code that already exists, but solves a slightly different problem.
Ivan Reese
Is there a more concise way to write what I've written?Compare with: Is there a more verbose, but easier to follow, way to write what I've written? I often choose the degree of conciseness or verbosity based on the nature of the problem I'm solving, and all sorts of context like âthis is a quick and dirty testâ â my IDE doesn't (and probably can't) know about that dimension of my process.
Bosmon
12/27/2018, 11:15 AMshalabh
12/27/2018, 10:04 PMjarm
12/28/2018, 9:38 AMIvan Reese
In the canvas/painting 'medium', the feedback is that you immediately see visible paint on the canvas the moment you touch it with the brush.The kind of immediate feedback you get from wet paint hitting the canvas is the same kind of feedback you get from your finger hitting a key causing a glyph to show up on the screen. It's very different from the sort of "holistic vision" feedback we're craving, which is why I'm interested in the idea that we should choose what sorts of that feedback we really want, and perhaps be cautious about craving all kinds of it. ⢠Immediacy â The color and texture of paint on the palette as you mix it, the feel of the brush picking up that paint, the feel of the brush on the canvas, the color of the paint as it comes off the brush, the color and sheen of the paint sitting wet in place, the color as it dries ⢠Visibility â How the overall composition of the painting differs from what you had planned, how the composition looks from different angles, how it looks in the mirror, the tint of your studio lights, what you remember of it when you aren't looking at it ⢠Collaborative Editing â Bringing a family member down to your basement studio to look at the painting in progress, sharing a picture of the WIP online, talking about issues with your painter friends ⢠Review â Hanging the finished painting in a gallery, drinking wine and talking about it at the opening, overhearing gossip about it when you later visit the gallery, reading a writeup in the local arts paper, the inevitable disappointment when the painting doesn't sell ⢠Version Control â Deciding to change your style to better appease the kind of audience that comes to the gallery, burning the painting in a parking garage while drinking beer with those painter friends Every single one of those examples of feedback would be affected if you switched from oil to watercolor â and switching from one programming tool to another affects as many kinds of feedback too. The notion of "feedback" covers every surface of a tool, including your mental model of it, the social dynamics, the learning process â and changing the way in which a tool gives feedback touches all these surfaces.
shalabh
12/30/2018, 11:35 PMThe kind of immediate feedback you get from wet paint hitting the canvas is the same kind of feedback you get from your finger hitting a key causing a glyph to show up on the screen.Yes, I did a poor job explaining what I was trying to get at. It's related to what you describe as 'visibility' - the whole composition is immediately updated and visible when the paint goes on the canvas (at least from the current perspective). Imagine painting through a peephole, only seeing a part of the painting and having to imagine the full composition. In the specific aspect of visibility at least, it seems one full composition should be always visible when being updated. Onto programming.. the code if visible and updated live, but code isn't the full composition. The full composition is some behavior spread out over time and within a slice of all possibilities. We imagine it (human simulating the machine) and it is not visible in the editing medium. I think it's the idea of reducing/eliminating mental simulation of the computer that I find more important than 'feedback'.
we should choose what sorts of that feedback we really want,Fully agree with this. I think choice of 'viewing perspective' should be natural in the future medium of programming - one simply cannot process all possible perspectives available anyway.
Ivan Reese
the whole composition is immediately updated and visible when the paint goes on the canvas (at least from the current perspective)True, but the artist's understanding of the work isn't updated immediately. You often need to spend some time away from the painting, and come back to it later "with fresh eyes" to properly appreciate the meaning of any changes you made. Same with music â when I'm working on a song, I'm in a very particular mindset, one which is not amenable to appreciating whether or not the music is any good. The sort of feedback I get from throwing some additional paint on the canvas, or tweaking a melodic progression, is akin to checking whether my tests are passing â I can tell whether the things I've done are correct or erroneous, but I can't actually run the painting or run the music to appreciate whether it works the way I intended until after some time has passed. My point is that.. when we programmers talk about immediacy, we love the example of artists getting immediate feedback. But I contend that it's a faulty comparison. Artists don't get immediate feedback about the most important part of their work: whether the work is effective or not. They do get immediate feedback about some technical / mechanical aspects, though even this doesn't hold for some art forms, like pottery, where you need to bake the clay in a kiln before you know if it even survives that part of the process.
Ivan Reese
shalabh
12/31/2018, 6:08 AMTrue, but the artist's understanding of the work isn't updated immediately.
Artists don't get immediate feedback about the most important part of their work: whether the work is effective or not.Great points. There's been times in programming when the next morning I realize I was moving correctly but in the wrong direction. I'm wondering how one could get a sense of something being effective. Improv forms are interesting because there's the back-and-forth conversational aspect. Even live compiler feedback is more like a partner that only responds with 'yes' or 'no'. Perhaps richer responses are possible if instead of submitting whole programs, we build incrementally by sending one message at a time and the computer responding with a wide range of possibilities for us to explore next.
Ivan Reese
Ivan Reese