Hacker News new | past | comments | ask | show | jobs | submit login
Why teaching programming is so difficult? (ruky.me)
4 points by rukshn on Jan 17, 2021 | hide | past | favorite | 6 comments



Most children learn language. Most people can learn programming. Not all children grow up to be eloquent masters of the oratory arts. Not all that learn to program will be able to develop complex applications.

But for basic programming, the students will have to commit, just like children do. Their questions that you quote :

* What is a function/method? * What is meant by return? * What is an array? What is an index? * Why looping is so hard to understand? * What is the meaning of public static void main()

I suggest teaching them the basics of the scientific method. They should do their own research, even through a basic web-search, and ask a specific follow-up question. Every one of these questions shows that they did not do a basic web-search. It's ok if they want to learn like children. Children ask lots of questions. But it will take more time, just like it does for children. Time I do not give for free in my teaching scenarios, except kids under 10 y.o. Meaning, I expect the older individuals to show they did their homework first.

A question I would spend time answering, for contrast: "I have read the chapter on arrays and have done exercises from the following www resource. What I don't understand in a specific case is this..."


Yes I totally understand, it’s frustrating and sometimes infuriating when they don’t look up even the basic things on the internet

But even when I send them some references they reply saying even they read it they could not understand what it meant.

Which lead me back to explaining them from the beginning


Well, you have three options forward. Either treat them like children and just explain on a loop, or you demand that they follow the basic process of adult reasoning and learning. The last option is abandonment, teacher/instructor burnout is a real thing.

And "I don't understand" should not be acceptable. Let them write out what they did and what exactly they don't understand.

For example:

To find out more about main, I searched for "Java main", and got the following: "All Java programs must have an entry point, which is always the main() method. Whenever the program is called, it automatically executes the main() method first. " Yet when I look at this code here, line ref/ code snippet, I don't understand why it doesn't have a main....

I don't have any natural talent for programming nor math, and cried for 2 weeks straight when I was going through my first programming book, my brain literally hurt. I just ground that book.

Taking a book and typing out all the exercises, muscle memory. You work your ass off for 10 years, and suddenly you get lucky.


First of I'd like to mention that I'm not a certified teacher, so my advice comes from experience rather than formal education. I have however taught programming before and during my professional life as a developer had many instances where I had to explain a programming concept to a non-programmer.

With that disclaimer out of the way my understanding of the problem for people to understand something so abstract as functions, arrays and iteration is because they have no frame of reference. It's like remembering a word from a very foreign language after a week. My trick to help people absorb these abtract ideas is to use metaphores with things they're familiar with. So a function can become a robot that takes commands (parameters) and outputs an answer (return statement). Since you have the understanding of both a medical professional and a programmer you're in a great position to connect the two worlds. Also leave out the technical jargon; explain it in regular language. Together with a simple hand-made drawing (most people are visual learners) it should help make it stick.

Registered an account here to reply on this, so I hope it helps.


Thanks for the comment

Yes I’m planning to write some emails to them explaining things in the form which is easy for them to understand

I hope it will help them


What really helped me with learning programming was the focus on what I was actually building. I remember one of my first real "programs" I wrote during my studies (I was 23 or 24, so I started of later with programming as well). They all gave us these Lego Mindstorm sets, which you can control through this little UI interface, but you could also control using C# code. With my team mates we build this little game you could play with four people, and it worked great! I wrote most of the code for it, knowing very little programming at that moment. I wrote the entire flow in one script, no classes or OOP, I was so proud!

Still I can only learn a new language or framework if I have a project that grabs my attention. So I would say don't start off with teaching "progtamming", like, what 'public static void main' means. Start with letting them create a simple CRUD app or little game through programming. And build from there. I like the process of programming but what I like most is interacting with my creation.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: