How Conceptual Understanding Shapes Successful Programmers
Imagine trying to write a grand adventure novel, but you jump straight into writing without plotting out the journey or knowing who your heroes are. You scribble down exciting scenes — treasure hunts in ancient caves, daring escapes from villainous foes, and mystical encounters with charming characters. But soon, the excitement fades into confusion. Your treasure hunt leads nowhere, the villain’s motives are unclear, and your heroes change personalities from one chapter to the next because you don’t truly understand them. The same happens when you start learning to code, lacking the “computational thinking” required to structure code effectively.
Many modern online coding bootcamps, including Practicum by Yandex — where I worked as Head of Product — have encountered challenges with retention in the free segments of introductory courses, despite the content support team’s best efforts to simplify lesson texts, employ more explicit metaphors, and streamline tasks step-by-step.
I started sorting out novice programmers’ challenges and found an article about the “concepts before coding” approach. At that moment, I realized that, for some reason, nobody in adult programming non-academic courses pays attention to computational thinking skills.
But how did such a significant gap appear and remain unnoticed? It likely occurred because the first coding bootcamps, such as Codecademy, were founded by individuals with solid educational backgrounds. Initially, these platforms attracted people familiar with academic learning and willing to venture into programming during the wild 2010s. Moreover, many bootcamps and programming courses modeled their curricula after university courses, where computational thinking is often taught as a separate prerequisite. However, with a decade of marketing, programming has become more accessible and seemingly safer than ever, drawing individuals without a solid mathematical or programming educational background. This shift has led to the emergence of educational businesses marketing to this new audience but with the legacy of content designed for more experienced ones.
I checked top upskilling and reskilling programs for adults, including platforms like DataCamp, Codecademy, DataQuest, and Udacity. No one specialized in acquiring computer thinking skills first; all started with the basics of syntax. This oversight was confirmed when reviewing top adult upskilling and reskilling programs — all starting with syntax basics.
To support adult learners better and address the drop in conversion rates in our introductory data analysis course on Python, we embraced the “concepts before coding” approach.
What is it about
The “concepts before coding” emphasizes that students cannot code effectively without a firm understanding of basic programming concepts. Among many others, the 5 critical concepts, knowledge of which is crucial to further learning, are highlighted:
- Variables: Students often struggle with understanding variables, particularly their initialization, assignment, and the concept that variables can hold different values at different times.
- Expressions: Formulating expressions using variables and operators can be challenging, as students need to comprehend how expressions evaluate and manipulate data.
- Loops: Understanding loops, especially the logic and flow of ‘for’ and ‘while,’ can be complex. Students must grasp how iterations work and implement looping logic to repeat specific actions.
- Boolean Logic: Boolean expressions and conditions are fundamental in programming but can be abstract for many students. A crucial hurdle is learning to use Boolean operators (AND, OR, NOT) effectively to control flow and make decisions.
- Abstraction: The concept of abstraction, including how to generalize solutions or decompose a problem into simpler parts, often represents a sophisticated leap for new learners. This is crucial, for example, in one of the debugging strategies — when splitting a program into several parts and printing the output of each part.
The authors of this method showed how non-programming, interactive activities could help students understand these concepts before beginning programming tasks using environments like Scratch [link]. Introducing these activities allows students to make fewer mistakes and complete tasks more quickly in the future.
Applying the Theory to Practicum
We already extensively used metaphors, infographics, and interactive elements to teach concepts.
With our newfound focus, we further integrated these tools into our introductory courses, paying more attention to these critical programming skills.
We added illustrations and Scratch-like elements to explore how the written code works. Since our users were often aspiring data scientists with essential Excel experience, we used familiar Excel functions as scaffolds for Python commands. Here is how it looked:
Of course, the idea of explaining concepts before coding was expanded through different teaching mediums: content, coding training, quizzes, and debugging tasks.
Reflecting the impact of all the changes from a business and product perspective — it did not negatively impact our conversion metrics. Instead, it smoothed the decline in conversion rates, leading to a more organic drop-off.
As for the educational point of view. We equipped our students with the tools to write code and a deep understanding of how to think computationally. This foundational knowledge is like the plot of a well-structured novel — it guides the learner through the complexities of programming with clarity and purpose, ensuring that each line of code contributes meaningfully to creating elegant and efficient software. Essentially, we are not just teaching code but nurturing thinkers and problem-solvers who can navigate the digital world with the same creativity and precision as a novelist crafts their stories.