I've been focused lately on helping kids learn to code, guiding grade-school students in coding activities at schools and public libraries, as I believe coding skills and experience, as well as an understanding of general computer science concepts, is critical to the success and competitiveness of tomorrow's young professionals. Not just future developers and IT professionals, but nearly all professionals benefit from understanding how technology works and can be applied to given challenges and opportunities. Those who learn to code also build self-confidence and enhance key traits such as persistence and problem-solving skills, and develop computational thinking skills.
“Computational thinking involves solving problems, designing systems, and understanding human behavior,” notes Jeannette Wing, who popularized the term “computational thinking” in part with her 2006 article in the journal Communications of the ACM. Computational thinking, Wing wrote, "represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use." In other words, Wing wrote, "the use of computational concepts, methods and tools would transform the very conduct of every discipline, profession and sector. Someone with the ability to use computation effectively would have an edge over someone without."
I'd imagine most developerWorks community members already recognize that the value of learning coding, computer science, and computational thinking transcends professions well beyond software developers and even IT professionals. What's encouraging is how this perspective has spread broadly to the general population. Increasingly, parents want -- even demand -- that their children learn such things, and K-12 teachers seek to provide their students with opportunities to learn such things (often despite challenges that mandated curriculum can create, making it difficult to find time amidst all the required lessons and tests to insert coding and computer science learning). As I've proposed launching activities with public and private grade schools and public libraries, I've been met with strong and growing support and appreciation. Just one example: When launching a new coding club this spring at one local school, I received 50% more registration requests than I could accept.
For those of you who want to help kids learn coding and computer science (or help others including teachers and parents do so) -- and for any youngsters who may be reading this themselves, I encourage you to use the following helpful resources:
- Scratch -- While Code.org emphasizes learning coding concepts, Scatch focuses on creativity and advancing technology as something kids learn to use as a tool of active creation rather than primarily a means of passive consumption or entertainment. This emphasis is reflected in the Scratch slogan: "“Create stories, games, and animations. Share with others around the world.” In some ways -- the drag-and-drop development environment, as well as some tutorials -- Scratch is similar to Code.org. But Scratch provides more of a free-form, wide open environment vs. a highly structured set of tasks and puzzles, fostering creativity and encourages users to share their creations with others, who can then "remix" the shared apps, modifying, extending, and customizing them as they like. Scratch also lets users download and install an editor so they can work on projects without an internet connection (and whenever site maintenance issues cause the online Scratch editor to be unavailable).
I look forward to sharing more resources and experiences that I hope will help more kids learn to code. Whether they become IT professionals or not, our next generation will benefit greatly from the experience.
P.S. IBM Bluemix also can be used by youngsters! Take a look at this brief video Overview of IBM Bluemix for Kids by Ruth Willenborg and Tucker