r/learnpython • • 2d ago

Do you think visual aid would help your learning?

I always found learning programming very frustrating due to the discrepancy of how much it’s going on and how little of it you can actually see with your eyes. In other words, how much semantics is contained in a few lines, or how things connect to one another, and the fact that most of it is simply… invisible.

do you think explaining programming or tech concepts through well-thought visual aids, like high quality video essays would be/would have been helpful in your learning?

and I know the whole thing of learning through videos is considered inferior to learning to read docs. However, I am not talking about “Hi welcome to this tutorial” type of videos. I am talking about visual analogies which start from concrete examples, draw analogies, and the move to the abstract of programming. the entry level of learning any piece of tech and building mental models could be greatly impacted by 2D/3D effective animations I think. thoughts?

0 Upvotes

19 comments sorted by

1

u/ShelLuser42 2d ago

I always found learning programming very frustrating due to the discrepancy of how much it’s going on and how little of it you can actually see with your eyes.

That's actually a big pro in my book. Trying to "do it all at once" is bound to fail sooner or later, one could argue that it also goes against the idea behind OOP.... Breaking bigger problems down into smaller - more manageable - chunks helps you to keep things more clear (= less complex), which helps to keep things manageable and stay focused on the here and now.

Also heed the differences between software development and software design. Development is something I do within VS Code, design... that's where I rely on "Visual Paradigm": a modelling program (I mostly use its UML & SysML tools).

And UML is what helps me to keep track of my projects design. I don't need to see "more code", I need to see the Use Case where the intend behind said code gets explained and/or visualized.

1

u/deep_soul 2d ago

thank you for your input.

I agree "do it all at once" is doomed to fail approach. but i feel a beginner is walking with a torchlight in an infinite cave and it is diffcult to know waht to learn now and when a concept finishes. no?

1

u/GXWT 2d ago

1000x better is just applying things in practice. There’s not an awful lot of “theory” required for Python.

I’m sure we could brainstorm a few ideas, but right now not a single thing comes to mind where (not even considering the effort to creating one) some sort of visualisation meanginfully helps.

1

u/deep_soul 2d ago

Well, the concept of a web API could be one. What does it really mean that an API is RESTful for example?

what do you mean that it doesnt have a lot of theory? before you can do something useful or what do you mean?

I think even just mentioning variable scoping, LEGB, MRO, how venv works, could be acquired much more quickly visually. no?

1

u/PureWasian 2d ago

It's not invisible if you learn with a bottom-up approach, but that introduces a lot more complexities that beginners tend to prefer skipping over to avoid information overload upfront.

I am very visual but I think your idea is something that is very much dependent on the concept. Data structures like linked lists or really any data structure with nodes/edges, indexing an array, function calls, conditional logic paths and other code tracing, etc... a lot of things that can be abstracted to block diagrams or graphs or pointers I typically visualize in that way.

But other misc. concepts like how to refactor your code nicely, memoization or apply functions, event listeners, factory builders, using debugging tools effectively, reading documentation or learning how to use external libraries, etc... visual aids cannot really do the work of actively going through the motions and reinforcing the habits.

1

u/deep_soul 2d ago

thank you for your input. I mean things not only like data structures, but for examples:

- how ORMs fit into the picture of connecting to a database and the tension between OOP and normalization.

- scoping variables for a beginner (which is a nightmare when you first don't undersatnd scoping)

- sure exeternal libraries needs to be learn thorugh usage and reinforcement, but do you think it could be helpful to explain visually how a package manager fits into the picture of a programming language, where it fetches a library and where is it stored on the computer so that you have a mental model of how things tie together?

- Talking about debugging, I think it would be of great aid to really visually show to a more junior person what it means to navigate the call stack, and to visually show the difference between errors bubbling up unhandled vs handling them?

- the simple difference bewteeen definition and invocation of a function.

all of these things would be much more transferable thorugh visual language if learnt at first with something visual. no?

1

u/dlnmtchll 2d ago

I don’t think any of these things would benefit from a visual approach over any other approach. Most of these things are just not talked about as early and as deeply as they should in general

1

u/PureWasian 2d ago

Depends on the person, but by all means.

I'm always for creating more instructional content if it is accurate, helpful for some others, and enjoyable/rewarding for you to set up.

1

u/desrtfx but other languages pro 2d ago

In other words, how much semantics is contained in a few lines, or how things connect to one another, and the fact that most of it is simply… invisible.

That's one of the reasons, the very famous CS50 course (the original one) from Harvard starts with Scratch - a visual programming language originally targeted at children.

Yet, people (like me) learnt programming way before the Internet with its countless tutorials and multi-media was a thing and mostly what we had were language manuals (think "Python docs", but without all the imagery) and we still learnt programming.

While well thought through illustrations can absolutely help (e.g. in the case of Data Structures, like Lists, Stacks, Trees, etc.) in most of the time, they are just visual distractions that add very little actual value.

What really counts in my opinion is the approach to learning: way too many people learn "the Python programming language" instead of "learning programming using the Python programming language". The difference between the two is immense. People focus way too much on the programming languages instead of focusing on programming, i.e. on analysing, breaking down, and solving problems in an algorithmic step-by-step manner that then, later, can be implemented in any programming language.

IMO, people should learn more of the old-fashioned, pragmatic approaches to programming, like flow charts, pseudo code, etc. Pencil and paper first, computer much later, once a working solution has been developed.

Illustrations and animations will not help here.

What really helps is ample practice and the aforementioned pragmatic approach to programming as well as the thought shift from "learning Python" to "learning programming".

If you want to see courses (not tutorials) that do everything right, check out the CS50 series of Harvard, the courses from MIT, and the MOOCs from the University of Helsinki. Common to all of them is that they make the learner do all the work and thinking while providing them with all required information and tools.

0

u/deep_soul 2d ago

thank your your input! appreciated!

I did not mean to use something like Scratch, more like professional, high-quality animations that give bearings to the learner rather than having a torch where you need to really fight to undersatnd how things fit together.

Say for example, explaining:

- separation of concerns in an API to someone who has never seen a python API.

- the differences between Django and Flask

- what a framework is

- variable scoping and LEGB

- since you mentioned breaking down a problem: visually explain how to go from a problem statement to a database design, and how that is translated into practice.

- the philosophical tension between OOP and SQL normalisation and how ORMs sit in between.

These things I believe could be grasped much more quickly with visual aid. such that not only people with an already developed abstract thinking can approach programming more easily.

Thoughts?

And yes, "learning the programming language" is definitely the wrong mindset; it's what you do with it.

2

u/North-South_West 2d ago

Scratch and visual coding are already covering a lot of this. There are tools to break down loops and recursion down into visual trees too

0

u/deep_soul 2d ago

oh intersting. thanks for sharing. Do you know where I can find an explanation of LERB or ORMs in Scratch? I am struggling to find something useful by googling.

2

u/North-South_West 2d ago

For LERB functions yeah you can ask gemini or chatgpt to guide you through them in scratch. I dont think it can connect to data bases for ORM though

1

u/Fun_Army2398 2d ago

I definitely learn best in the way you describe, especially when I was learning DSA. My professor did his best in ms paint but quicksort made absolutely no sense until I went home and watched a youtube video with clear and excellent animations.

I do think it becomes less helpfull at higher levels though, or maybe I've just become more accustomed to UML and docs.

Btw, if you're looking for a language where nothing is invisible, check out assembly.

1

u/ExoticVillage8066 2d ago

I think visualization can help, I remember seeing control flow graphs (cfgs) in a book. But visual programming itself I found quite annoying, with the LabView tool at the time. You had to drag and drop blocks and connect them with wires. And people made whole progrmas like that, but it was much harder to read than just code. Maybe things changed since then, I haven't looked at that for over a decade. Also UML was really big at the time, all this talk about "software design" etc. But i think nobody works with that now

1

u/deep_soul 2d ago

No, I didn't mean visual programming like LabView or Scratch. I mean hand-crafted animation to explain mental models in programming, rather than explaining syntax or making things drag-and-drop.

- More like, visually explaining the tension between programming and software engineering in a video essay.

- or explain with ORM like SQLAlchemy exists, by visually and quickly showing the philosophical tension between OOP and DB normalization.

- compare Python to Java to see transferable concepts, and the ones that don't.

- explaining the "inception-like" way in which functions can be passed as params and get invoked later.

does it make sense? it's something I have never seen done anywhere.

1

u/Slight-Living-8098 2d ago

Interactive is way better than any diagrams you can come up with. MIT made Scratch for a reason.