Too long to read? I understand, I am no fast reader. If you have Mac, select the paragraph of texts and right click, select speech and start speaking. Not the best narrator, but it's free and build in. Saves your eye sight.
Learning style is a natural topic of interest for my blog, which focuses on covering resources for people in the technology and coding communities, especially beginners that are joining this community. Why has Codecademy worked for millions of users, when some clearly don't like the site for lacking of one important teaching element: answers! Codecademy is a collection of interactive tests without answers, yet it works why? Sometimes, I will recommend
Treehouse for my beginner coders, sometimes
Code School. They are very different indeed.
Today I want to cover an important "learning style" and "skill" - GRIT and Resilience - (style and skill in quotes because grit and resilience are really personalty traits). A dear friend in college
+Adriana Miu once taught me something about psychology and education. She took time to teach and learn clinical psychology upon graduating from Stanford. She explained to me that she's fascinated by resilience. When she worked with at-risk children, she learnt that some of the best performers among this group are actually kids that have gone through traumatizing events. Events that are so dire, even just one, or a part of it can reasonably destroy a person without doubt. Yet these kids survived and excelled. They may not grow up to be presidents and hedge fund managers, but they surely show us why we should be proud to be human, and what humans are capable of handling.
That's when I started to think a lot about resilience. In Chinese, there's an idiom and a fable that talks about 江郎才尽 Jiang Lang Cai Jin (Jiang Lang running out of talent). A prodigy losing his talents over the years was a fable aimed to teach Einstein's famous saying: success is more about hard work than raw talent.
Malcolm Gladwell also wrote about how success is somewhat predictable by statistics in his famous book
Outliers. The way we name our kids actually matter (a minority name, and a girl's name may not fair well in many prestigious positions, unfortunately), the time we enlist our children in junior leagues matter, and the amount of time we spend on each subject can actually predict the outcome. One sentence conclusion: raw talent surely helps but raw talent most often do not predict success. And that just makes sense, the more we try, the more opportunities for us to win that lottery and get that impossible outcome (scientists don't believe lottery is a good gamble game to play, but without playing at all, surely the desired outcome to win will never be reached, naturally, just by pure setup).
My engineering friends from Stanford and local startups often believe that coding should not be taught. They had to learn it by reading and tinkering on their own (that's why documentations are highly valued), and they believe that's the best way to learn for future comers too. I believe that, the engineering experts know what is the best for their ecosphere, so I am not to judge, but what if we need to teach coding, what do we have to do?
I am a firm believer that coding is the new literacy. It soon will be an integral part of all education, as much as reading and writing! So yes, I would like to entertain with the idea what if we HAVE to teach it?
This blog post is about no matter how great the teaching materials, one single factor may trump all factors, especially in the realm of beginner coding : grit.
Angela Lee explains grit's role in education in a wonderful short
Ted Talk: grit can be measured, can be thought of as a
growth mindset (Stanford idea), and that it may be a better predictor of future success, long term success than IQ or raw talent. It's the mindset of marathon runners not sprint.
The
grittiest beginner coders that I have met? People who went through
Michael Hartl's Rails tutorial 3 times. First time for an intro to Rails, second time including Git to learn version control, 3rd time to reinforce Rails concepts and learn how to test with Rspec, Capybara.
The best
Codecademy folks did all the exercises, practice outside and asked tons of questions, why? Why this, why that? Actually more insightful than an actual engineer. The naive engineering mind is unhinged when asking questions.
One good friend
+Sandra Chiu actually went through tutorials not glamorous like Treehouse and
Code School but more like
Lynda to learn all the nitty-gritty details of the codes that she was spoon-fed elsewhere. She downloaded the files and tinkered, all the time, even when I gave her the answers right away and told her to not sweat the details, so to save her frustration times. But for her debugging time was a part of the learning. Even if it takes forever.
Gritty learners like she are not afraid of failure. They are clever, they try really hard, and they keep trying until they find a satisfying solution. That is to say their solutions are somewhat optimized.
I am a slow learner but I grasp things deep and fast once I get pass the initial plateau. The ability to make lots of connections is a blessing and curse. The blessing: I can learn Ruby, Rails, JavaScript, Backbone, PHP in one go. The curse? I likely don't want to spend too much time getting to ground zero in any of those. So how did I know that I can code? What made me believe that I am
gritty enough to go pass the beginner coder stage and become a prototyper (my goal is not to be a full time dev)? It is
compulsion to learn.
My personality trait that helps me is my crazy ability to
compulsively learn. Some recent examples are reading 49 pages on Cucumber and Rspec testing in a single morning Caltrain ride to Palo Alto (note it's also impressive because i am not a morning person). When I apply to a company, I am fully immersed about this company's future, vision and operations, I will emerge from even unsuccessful interviews as a SME of this company's PR. I also used to stay hours on Codecademy, even on Friday and Saturday nights. I would stay up all night till I am stamp the bug. Also that I am writing this learning article at 3:39AM.
A high school friend who is dyslexic reminds me of the most excruciating pain when I watch him write. I who can talk none stop end up being a sloppy writer and talks an equal amount of non-sense and insights. His writing on the other hand is crystalized, though painfully so. I would qualify him as a true writer, and I who did not
grit my teeth through words will not be qualified. He also made the most beautiful stain glass art project of rising sun on Santa Cruz surf. Some of us can see the devil in the details: the ocean is really 5 vertical "waves", each with a strong carving of curve, each a different subtle gradient of shades of blue, each with a unique gradient of texture that resembles the real waves. The painstakingly made tiles of dark blue waves always remind me of the struggle of
compulsion, grit and success.
Besides all the other scientific findings that explain why our efforts matter more than raw talent, I think I have seen some one off non-scientific examples why it matters in coding. At hackathons, when time limit is a factor, experienced developers i.e. also people who spend a lot of time "grinding" at computers can recognize JavaScript error messages from experience and debug exponentially faster than I can. In development, one of the most time-draining tasks is config. Any person who will resolve the last line of
brew doctor errors and read
Stack Overflow with lunch can tell you what it means to be
gritty as a coder. The learn
The Hard Way (TTW
) series including
Learn Python the Hard Way is a live example of being extra
gritty helps beginners learn Python. Having
grit really pays off in learning to code and in many fields that require intensive learning, for example, the modern society as a whole...
http://teamtreehouse.com/