My niece recently asked how she could better her coding skills. She is 14-years-old; at that age, I was busy figuring out what to press to get a desktop machine started, let alone code. It was a revelation on how the younger generation is gearing up for the next century. They are ambitious, courageous, and have massive access to information.
I started talking to her about her interests; she told me she is interested to learn machine learning and wants to pursue education in AI or some related field. Still intrigued by this conversation, I asked her, "Why do you want to code?" she told me that she finds computers fascinating, and the thought of making machines think on their own makes her go crazy.
I was stumped.
I told her some details about what I do for a living and some dull information about academics and life in general. There was no stuff in what I spoke. I am sure she found it boring and unintuitive.
It got me thinking about what should the kids do to sharpen their coding skills. Should they start small and learn C and syntax? or should they do something else.
The core of programming is plain and simple - solve a problem. Your customer has a redundant problem, fix it by writing a piece of code - plain and simple. A champion coder is someone who can segregate the noise from a signal and understand a problem's crux. A coder with an excellent problem-solving ability with less coding skills is a more significant asset than a coder with excellent coding skills but less ability to solve a problem—semantics over syntax.
It is, however, easier said than done. One can learn syntax with ease as the learning is objective. Semantics are complex; one needs a driving force to understand semantics. Unfortunately, the world around us is busy teaching our kids problem-solving through formulae and templates without emphasising the true core of problem-solving - an emotion called "Empathy".
"Design thinking" - one of the most effective problem-solving approaches - places "Empathy" at the core of its framework. Empathy is a skill that allows us to comprehend and share the same feelings that others feel. By empathising, we understand what others think, their problems, circumstances, environment and more. Empathy demands one to learn about the hardships people face and find their latent needs and longings.
We need to work on our kids' emotional intelligence to make them better individuals, equipped with skills to feel compassion for a fellow human being. By inculcating human-centric ideas, we will be able to impart to our kids the critical fundamentals of solving problems.
If you are a parent trying to teach your kids coding, then here is what I believe you should be teaching them even before a programming language:
- Empathising: Teach your kids to approach a problem by putting themselves in the shoes of a person having trouble. Give them hypothetical situations and people, and let them write their insights. You will see the kids become more insightful as you do this exercise often.
- Defining: With insights, you can take your kids to the next stage - let them string together a problem statement from their insights. Being able to explain problems in a statement, Kids learn to summarise their insights.
- Ideation: Now that Kids have learned to define problem statements, ask them to propose possible solutions, keeping in mind the people, circumstances and constraints. Debate with them on these solutions and let the kids understand that debates are necessary for the human mind to prosper.
Don't fall for the fads of the sneaky online training companies teaching kids geeky computer syntaxes. These companies neither have genuine teaching intent nor know anything about human-centric programming. Don't let this become a prestige issue; your teenage daughter/son need not become an online teaching scam's poster girl/boy.
Let these passionate, young minds be driven by "Compassion" and "empathy", and our world will find leaders to take our civilisation ahead.