Watering can showering little plants

This guest post was written by Vivek Ravisankar, CEO & Cofounder of HackerRank, a platform that helps programmers hone their skills and connect with companies. HackerRank is the leading player in the programming talent assessment space, and the company is growing.

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.


Most valuable of all, computer science (CS) offers mental tools to help us solve problems, big or small. And computational thinking is the first step to equipping ourselves with sharper mental tools.

Boosting Accessibility with the ‘Aha’ Moment

If we know coding is crucial for problem-solving, how do we help people sustain the momentum and get more people involved long-term? There is at least one core thing many training programs, boot camps, and other educational curriculums get wrong about coding. And it’s that coding should be taught in a structured curriculum.   

The reality is that structured curriculums are simply not conducive to learning how to code. Even at the most traditional, tried-and-true sense of education, CS and technology is expanding so quickly that such curriculums simply can’t keep up. It’s why 74% developers told us they are at least partially self-taught. There’s an insatiable curiosity that’s ingrained in many developers, and traditional education settings make this inaccessible. Some boot camps also push extrinsic motivations, like high salaries, to lure students. But this is not productive.

Learning to code should be exploratory. Everyone learns at a different pace; but more than this, every developer has a defining moment. A moment in which they realize wow, I can build things. As soon as you hit this pivotal point, learning to code, solve problems, and building becomes near-addicting. Everyone’s “aha” moment is different. It depends on your experience.

The opportunity can be limitless, but typical, structured environments are not conducive to the “aha” moment. If we really want to inspire the next generation of coders, we should provide them the freedom and space to explore their curiosity.

Students should be exposed to the capabilities of code, and encouraged to think about what aspects of their lives they’d like to improve, how can day-to-day tasks can be automated, and how can technology make an impact on the world around them.


Practically Speaking

Of course, achieving the “aha” moment is easier said than done. How can we put this plan of encouraging computational thinking skills through coding into action?


Children: First and foremost, grade school teachers have to be empowered to train young students on the fundamentals of coding. Code.org’s founder Hadi Partovi has made impressive headway in solving this problem by bringing CS education to underrepresented students. Programs like his offer facilitator programs that are essential to disrupting the current education system.

42 is another great example of an unstructured education system that teaches children to code. Its concept is unique in that students can choose their pathway, mapped by various skills. And you can go as deep as you want after you pass a particular level at your own pace.

And going one level deeper, Scratch, the well-designed, visual language for kids, should gain more popularity and be introduced to more young minds across the globe. Even if coding is not part of your school’s curriculum, parents can help expose kids to programming by way of Scratch.


Professionals: Although early exposure is beneficial, it’s also never too late to learn to code and to develop computational thinking. For instance, of all the developers who started coding after the age of 26 in our survey, 36% grew quickly into senior or even higher-level positions. However, there should be more awareness around the clear, direct paths to learning to code for all professionals.  

In fact, companies are starting to realize it’s as important to upskill their employees, across all orgs, on coding skills as it is to hire developers.

Amazon is a great example. They offer a program encouraging employees to learn to code within the company. This falls in line with the idea that coding is valuable, irrespective of your job.   

The Way Forward

Computational thinking is an important skill no matter your role and is an underestimated powerful tool to help you solve problems and make decisions. Coding is one of the fastest ways to get there. Strengthening these skills help students become better problem solvers, thinkers, and even developers. It starts with increasing exposure to programs, pathways, and learning tools, with an emphasis on impact and slant toward curiosity.

Growing the next generation of coders and computational thinkers