Growing the next generation of coders and computational thinkers
This was originally published on the Atlassian blog.
Programming is a fundamental tool to help you discover solutions to problems by following a repeatable framework. This concept is summed up into one term: Computational thinking, the most vital skill of the next generation.
Much has been written about computational thinking as a way to gain clarity behind the opaque screens we hold. It is the pathway to a common understanding—between humans and machines. But what’s not as emphasized enough is that coding is also the best way to learn how to solve problems efficiently, a skill valuable to any given contributors of business.
And the sooner you’re introduced to this way of thinking, the easier it is to learn. Many successful programmers start coding at a young age. For instance, in our Developer Skills Report, we found that one in four developers started coding before they could drive; and founders were three times more likely to have started coding between five and ten years old.As the world grows more connected and technology permeates every industry (with 73% of enterprises running almost entirely on software by 2020, according to BetterCloud), strong computational thinking skills will be increasingly critical. Everyone should learn to code, whether or not they choose software development as a career. If students learn to code, the next generation will better understand an evolving world, be equipped to create more opportunities, and build a better future.
Why Coding? Computing in Daily Life
There are four key fundamentals rooted in computational thinking, that we use in daily life without even realizing it.
- Decomposition – breaking down a complex problem or system into smaller problems that you can solve more easily
- Pattern recognition – looking for similarities among and within problems
- Abstraction – focusing on the important information only and ignoring irrelevant details
- Algorithms – developing a step-by-step solution or set of rules to solve a problem
Even though the terminology is programming-specific, the meaning applies to processes that we go through every single day. Even as you go deeper into the weeds of coding, the fundamentals remain.
Columbia University computer science professor, Jeannette Wing, pushed the idea of computing as a universal, ubiquitous skill in 2006. She offers some strong, real-world examples to help put computational thinking into context:
[Computational thinking] is planning, learning, and scheduling in the presence of uncertainty.
When your daughter goes to school in the morning, she puts in her backpack the things she needs for the day. That’s prefetching and caching.
When your son loses his mittens, you suggest he retrace his steps. That’s backtracking.
At what point do you stop renting skis and buy yourself a pair. That’s online algorithms.
Which line do you stand in at the supermarket? That’s performance modeling for multi-server systems.
Why does your telephone still work during a power outage? That’s independence of failure and redundancy in design.