Do you remember the first time you saw classes? Objects? The word “string?” How about considering binary trees, regular languages, language compilation, and recursion?
I don’t realize it myself a lot of times, but I’ve come a long way in changing my mindset to handle the terminology of programming ideas and make them seem natural. I think others are the same.
Do you remember the day when you didn’t understand anything of programming terminology?
At present, there exist a significant number of individuals - hundreds or even thousands - who are currently facing a similar predicament. In present times, a considerable number of individuals are unaware of the concept of "segmentation fault" and the reasons behind their program's unexpected crashes. They don’t know why a reference for [email protected] is missing from their MinGW program that makes use of wxWidgets when first tangling with Code::Blocks, and they certainly won’t know how monads relate to endofunctors.
Can you recall your initial understanding of fundamental programming concepts?
I can recall my own experience of struggling late at night to compile my 5th C++ project and resorting to desperate measures of bombarding Google and Stack Overflow with numerous queries.
I had no idea what I was doing, and — who’s to blame? — I lacked the understanding of what actions to undertake.
I remember that my account was question-banned on Stack Overflow for trying to ask questions as an independent learner, one or two semesters before I would ever encounter my first C++ program in college.
Naturally, Stack Overflow has a rigorous policy against posting duplicate queries that have already been resolved, and an implicit practice of downvoting queries that are considered overly simplistic - an aspect I discovered only later on.
But after three months of hitting roadblocks in compilation and unable to pass barriers of discipline and knowledge required to go directly to documentation, I found myself on top of a basic GUI system implemented on-top of SDL with Lua scripting on the side.
Learning can be a frustrating and humiliating experience; it can also be thrilling and easy given the right mindset and the right resources. To me, learning is not about wading through descriptions of mind-constructs and precise, compiler-like terminology to simply parse the mechanisms by which we build, arduously and untiringly — we make and mutate what is.
It’s not about the methods by which we gather information — we do not learn by reading documentation, but, rather, by the methods by which we internalize, understand, and distill such knowledge.
Learning is compressing methods and ideas intuitively so that they can be reconstructed and utilized at will.
Who is aiming to precisely teach “how to compress methods and ideas intuitively so that they can be reconstructed and utilized at will” for basic programming concepts? For searching and understanding basic programming terminology?
Opponents of doing such might give the arguments that “we don’t baby people around” and “people are capable of Googling the most basic of concepts,” but I don’t blame a baby for not being able to walk when all he or she can do is crawl.
If you remember the time that you searched “What is the best programming language?” You may recall that in certain cases, the most optimal response provided on the internet was in the form of no response at all. People even think that asking such as question is wrong (and “wrong questions” do exist, in a sense).
I tried to write a tutorial myself. I worked on a C++ tutorial blog a few months back. And it’s horrible. It’s a mish-mash of concepts that are out-of-scope, poorly explained and written, and are not focusing on compression of knowledge into intuition. There is no notion of audience or aim; just a spewing of bits of knowledge that fail to present a coherent whole.
I now think that it’s not about just simplicity or a short word count, but teaching concepts so that they become intuitive to the receiver.
Many people want to learn programming today. Today, many people are starting at ground zero, with no equipment to learn for themselves. And today, you are the more experienced.
I’m writing this because I want to ask three questions and see what other people think:
- Is intuition in programming important for you? How would you teach correct intuition to a beginner?
- What concepts were important for you for sustained learning in programming?
- What resources do people need to map out programming for themselves and say to themselves: “This is what I know,” “This is what I don’t know,” and, “This is how I’m going to learn this?”
Ian is not accepting comments at the moment
Want to show your support? Become a pledged subscriber or send them a one-off tip.