Live data from Hacker News

Ask HN: How to learn to create/draw mental models for programming?

news.ycombinator.com

31–38 of 38 posts

Re: Ask HN: How to learn to create/draw mental models for programming?

#31

Are you sure it is just because he is junior (I mean that may very well be the thing but maybe not?) in my case I am not a visual thinker, in high school they tested my understanding of visual relations and I was in the lowest 3% of the population, understanding of written text I was in the highest percentile of the population (since then I believe visual has improved and textual degraded by all the stupid things I'v…

Out of curiosity, are you an "inner monologue" type of person?

Re: Ask HN: How to learn to create/draw mental models for programming?

#32

Are you sure it is just because he is junior (I mean that may very well be the thing but maybe not?) in my case I am not a visual thinker, in high school they tested my understanding of visual relations and I was in the lowest 3% of the population, understanding of written text I was in the highest percentile of the population (since then I believe visual has improved and textual degraded by all the stupid things I'v…

Out of curiosity, are you an "inner monologue" type of person?

yes.

Re: Ask HN: How to learn to create/draw mental models for programming?

#33
post #13

Diagrams of system architecture usually mystify me. A common issue is that it’s unclear what the various boxes and lines and arrows represent. Consider that it might be that your way of drawing diagrams only make sense to you; unless you are able to state clearly what a diagram illustrates, you might just be confusing your colleague by using drawings.

Different diagrams are useful for representing different systems. Some folks also use symbols differently. Determining the flow of the diagram can be hard when some folks use arrows to show "what is next" when others show "data came from here" or "data goes there" (in this way, the arrows mean nearly the opposite thing). Usually adding simple "1", "2", "3" identifiers to the arrow paths help.

A flowchart sometimes is best, a sequence diagram is sometimes more clear, a step by step list sometimes conveys the work in an approachable way.

The act of writing (and drawing!) acts as a forcing feature for disambiguation and makes us organize our own understanding. I think a diagram that only makes sense to the author is a good first step. Next is going over the diagram with others to see how they interpret it and making changes to make it more universally understandable.

Re: Ask HN: How to learn to create/draw mental models for programming?

#34
When I've taught friends to code I start with a program flow chart to describe the logic of the program.

Then when things get bigger than a single file/class I introduce the dependency diagram, which helps figure out which components depend on what... This helps you separate concerns logically

Some good tools which help:

- https://code2flow.com/

- https://draw.io/

Re: Ask HN: How to learn to create/draw mental models for programming?

#35
I used to always make pictures and I still do make a fair amount but it tends to be higher-level system or data/process flows.

When it comes to getting a handle on complexity, I find it better to list all the dimensions of variability and decide how they relate. Any before-and-after (but not necessarily during) invariants are gold. Then I can choose where/when to deal with which dimension(s) while other parts are agnostic to those.

Re: Ask HN: How to learn to create/draw mental models for programming?

#36
Unless you're following a regimented and formalized diagram paradigm, drawing is no different than writing. You have to be comfortable with failure and starting over.

I love drawing, but also struggle to make my diagrams relevant and useful in tech applications (software).

On the other hand, diagrams in software have a long and rich tradition. One of the topics I discovered which was fascinating and highly informative was a course on Business Process Management from TU Delft on Edx (though I can't seem to find it now).

I was amazed to discover business concepts diagramed and executable! How's that for formalized.

Besides that, it might just be a case of visual literacy. Katy Borner of Indiana University [3] had a great MOOC, Information Visualization at Edx (though, again, it's not available now).

[1]: https://en.wikipedia.org/wiki/Business_process_management

[2]: http://ebooks.iospress.nl/book/challenging-the-chain-governi...

[3]: https://info.sice.indiana.edu/~katy/

Re: Ask HN: How to learn to create/draw mental models for programming?

#37

Are you sure it is just because he is junior (I mean that may very well be the thing but maybe not?) in my case I am not a visual thinker, in high school they tested my understanding of visual relations and I was in the lowest 3% of the population, understanding of written text I was in the highest percentile of the population (since then I believe visual has improved and textual degraded by all the stupid things I'v…

Out of curiosity, are you an "inner monologue" type of person?

What reasoning is behind the question?

Re: Ask HN: How to learn to create/draw mental models for programming?

#38

Many of my former students had wildly inaccurate mental models so I built a platform that focuses on addressing that particular issue: https://wakata.io It teaches JavaScript, but most mainstream programming languages have the same semantics. It's particularly challenging because building a good mental model of programming takes a lot of time and effort.

Hi, this is great. A few bits of feedback - let people skip lessons (those variable declarations are very tedious if you know what you're doing). It would also be good to automatically highlight the value field after creating a new frame variable. It takes about 4 keyboard actions to enter the value which is a bit frustrating. I get the forced restart is helpful for newbies to learn but I also found it a bit frustrat…

Thanks for the feedback! You mentioned things I never thought of before, like selecting the value instead of typing it out
Post reply on HN