Coding and drawing
statmodeling.stat.columbia.edu
statmodeling.stat.columbia.edu
They're different because you're solving pretty different problems when you're doing them. Drawing well requires honing the particular set of fine motor skills which allow you to set down lines smoothly. It also requires you to be able to visualize shapes well, and to develop a good aesthetic sense. These things are for the most part nonverbal, and require a long time to master. When I'm drawing, I'm not really thinking as explicitly about what I'm trying to do as when I'm programming. It's more seat of the pants, because you can't put a line down 100% in the way you'd like to. And you're not really trying to anyway. You adjust here and there, but ultimately "right" is just a subjective feeling. Programming isn't fuzzy like that -- there are particular bounds to what the the compiler is going to let you do, and there is often a well defined "correct" behavior. The problems you're solving in programming are much more easily verbalized.
For the record though, I think pretty much anyone can learn to draw "well".
You are onto something here. I wouldn't exactly call myself a coder, but I do draw for a living and would agree this is the essential similarity between the two. Another similitude is that both involve a sense of building and play; who knows, that is perhaps the key to flow.
There are neat examples[1] of this in art history, and the highly regarded drawing instructor Robert Beverly Hale wrote books[2] emphasizing simple volumes as the basis for understanding and communicating the forms of the human figure.
There are a few other basic systems that are involved in "classical" drawing; perspective is one of these; organizing values is another. Basic artistic anatomy goes a long way if you're going to draw faces and figures. But the bottom line is, yes, drawing is a teachable skill. And, like programming, it takes years to learn well (I have been programming and drawing most days for the last thirty years and am definitely still learning).
[1] Cambiaso, is a classic example, e.g. http://www.blockprojekt.de/cubic-drawing-by-luca-cambiaso [2] See, for example, his "Drawing Lessons from the Great Masters"
From my very short learning of sketching, I had a feeling that there's a precursor step before the pencil touches the paper: a mental rasterization process. Our brain wants to see things in a symbolic form, a dog, a yard, a tree. To draw, however, we must force our brain to see the imagery data: the highlights, the shadows, the gradients.
My drawing education was only a few months long, so I could be drawing a far-fetched conclusion here. I'd love to hear what experienced artists think of their own mental process before actually putting down the image.
Interestingly, I went through it while taking a drawing class by someone who was not a fantastic teacher, and occasionally taught things directly contrary to how DotRSotB taught them. And wow, did the other students fail trying to follow what he said! It was amazing.
So yeah, go through the book, BUT make sure you ACTIVELY work through it, doing everything she says to do at each step... in fact, I think she recommends that you don't read ahead. It's worth doing it in conjunction with a class.
This is why drawing people is such a good test. If you draw a house or a tree, you can get proportions wrong and it can still look credible. But the same types of error stand out glaringly in a picture of a person.
But really, as you said, drawing is about SLOWING DOWN and noticing the parts that make up the eyes, nose, ears, mouth. In my own drawing education I've found that the description I'd give of drawing is the "study of shapes", not symbols.
[1] https://www.facebook.com/notes/blake-ross/aphantasia-how-it-...
Even if you're not drawing from something you can see, you can have a procedural memory of how to draw the thing, and you can see what you've already put on the page, and experiment if necessary using an eraser.
I don't have complete aphantasia, but my visual imagination is pretty weak, and I can still draw.
If you are starting a new coding project, you don't typically just start writing the final details for one feature, and then finish it and go to the next feature. You set yourself up for features by choosing a tech stack, setting up an IDE, databases, maybe some boilerplate starter code. You get a UI started, at least a blank page rendering that you'll code a feature onto. And then you start writing a feature. You code out the broad strokes of what it will do, and then work down to the details.
Drawing is the same. You choose your media, the surface on which it will go. You think out where it will fit on the page, where each piece of the drawing will land. You literally draw out the broad strokes, and then fill in more detail as you go.
If you approach drawing as a process, just like you code, it becomes much more manageable.
There's a whole bunch of image processing steps your brain turns off when you aren't recognizably looking at an object you know (especially a human face), and most untrained people will find they can draw a human face much better upside down.
Specifically, I started practicing ShoDo (Japanese calligraphy) ~12 years ago - here is a sample of my best works from 2019: http://pa-mar.net/Study/ShoDo/2019inShoDo.html
In reality I always liked drawing, I do sketch stuff during meetings and really like visual tools to reason about stuff. But for some reason I never really found the time to improve my drawing abilities.
More recently I did start drawing in the traditional sense, and this is something I do enjoy a lot (and yes, I experience something close to being "in the zone", too). Assuming you can find a bit of time in your day I think that any kind of drawing practice, even just doodles, can be fun, relaxing and possibly provide other benefits too (like going for a walk helps you work on problems in the back of your mind).
I wrote about this a bit: https://www.pcmaffey.com/debugging-your-art
In code, a hard edge is a crisp representation change between two layers of code ("object-relational mapper"), a soft edge is a gradual representation change over multiple layers or libraries ("ravioli code"), and a lost edge is when one manages to interpret the same data differently without even bothering to explicitly change its representation (0x5F3759DF).
The key difference seems to be the different ways that they can fail. Code can break in ways that are beyond argument. Certainly a drawing can break, but it is always possible to claim that it has not (e.g. 'I drew one foot larger than the other on purpose').
"It's a feature, not a bug"? ;-)
What I do like is drafting as in with AutoCAD or similar software. It's one thing to try to hand draw a line that accurately represents the outline of a human face. It's quite another to just say "Ok, this should be 16 cm long in the horizontal direction then turn 45 degrees with curve that has a radius of 1cm..." and so on.
The latter makes a lot more sense to me a produces much better results.
I am not purely aphantasiac - I do on rare occasions get very blurry, ephemeral flashes of imagery. It's like seeing an impressionist watercolor on a ragged piece of flash paper that ignites the instant I look at it.
Pluses of the condition:
- disturbing images are gone the instant I look away.
- I cannot get lost in a daydream. This roots me in reality and the moment in a way I think few people are.
- probably contributes to my native ability to speedread (if you can't visualize you do not spend any time doing it, and I think that makes me faster)
- I'm not limited to visual modes of thought. Someone has speculated in the past that maybe aphantasiacs are better at abstract concepts and thoughts since we are not tied to the idea of visualizing as part of understanding.
Minuses:
- probably contributes to my poor memory
- makes it hard to understand most peoples' experience of life
- makes certain thinking and reasoning tasks massively harder than they are for neurotypicals
- makes empathy harder, IMO. I cannot "put myself in your shoes" the way many people can.
This is a sentiment close to my heart.
For coding you must know how a program statement works, how hardware and virtual resources are working and ideally have a systematic analytical approach to construct and to define, identify and resolve misbehaviors. Have a mental goal how all peaces should work together, how they form a rigid stable architecture of unity, while also allowing a variety in further desirable transformations. Envision all possible desirable state and machine changes during runtime and later system extension and avoiding unwanted ones. At this point it leaves the right/wrong world view. Cutting an architecture out of the solution space of all possibilities, growing from bare bones, little peaces to a complete system. Each of these things can be trained, and even non gifted can achieve reasonable results.
While we can learn from good drawings it is not so easy to learn from good programming examples.
The problem with code is that while we are often working with same principles like imperative functions and stack machines since 50 years, the technical application environment is still constantly scaling up and while it is conceptually never new it keeps working only during short periods, so no long term solution are envisioned. Further more the result is not open to an easy perception or naive judgement (besides app rating maybe) and the result is often unlinked to the creator. An envisioned whole system is no longer needed as we have monopolized systems, wich updates we all follow frightened to 'reduce' risk. Resources like memory are scaled up without limits, the number of programmers rises and we are told to work in teams achieving very well paid very mediocre short living results. So the art of coding is on decline and while the 'management' of churning out buttons on 'app' screens, pasting stuff and fiddling in frameworks called consulting is on the rise. In absolute numbers maybe good programming examples where never as easy accessible as today, but is often buried below all the noise and not very rewarded. Probably the result of the economical success of the applied art of coding.
So for an coding artist fiddling with a pencil and paper to make something out of nothing can be again very rewarding... or maybe fiddling with vi and compilers etc. :-D